Skip to main content

How to Publish an MCP Server to MCPBundles

Short answer

Publish a remote MCP server to the MCPBundles directory at https://www.mcpbundles.com/. Paste the server's HTTPS URL on the publish page and verify that you own it, either with a work email on the server's domain or with a 6-digit code sent to a contact listed in a /.well-known/ file on your server. The listing goes live without an owner, and you claim it with a second code to edit its details and run quality scoring from the website.

Tested withMCPBundles public directory at www.mcpbundles.com, checked 2026-10-20Checked 20 Oct 2026

What you'll have at the end​

A live listing at https://www.mcpbundles.com/skills/<slug>. It starts unclaimed, so anyone can find it, and it becomes editable once you claim it.

Before you start

  • A remote MCP server. It must be served over HTTPS on the public internet and answer tools/list. Streamable HTTP and SSE are both accepted. Addresses such as localhost, 127.0.0.1 and private network ranges are rejected. Deploy a remote MCP server covers hosting one.
  • A name and a short description. The name becomes the directory title. The description appears on the directory card.
  • Optional details. A logo URL, a website URL and a contact email. You can change these later once you've claimed the listing.
  • An MCPBundles account. Any signed-in account can publish from the website.
  • A contact file on your server. You'll need one to claim the listing. Step 1 shows how to add it.

1. Add a contact file to your server​

Claiming reads maintainer addresses from a file at your server's origin. For https://api.example.com/mcp, MCPBundles checks https://api.example.com/.well-known/mcpbundles.json and https://api.example.com/.well-known/security.txt. Either file is enough. Add one before you publish so you can claim the listing straight after.

The mcpbundles.json file is the one built for this. List your preferred contact first:

{
"maintainers": [
{ "email": "owner@example.com" },
{ "email": "ops@example.com", "name": "Ops Team" }
]
}

The name field is optional. If your server already publishes a security.txt (RFC 9116), MCPBundles uses its Contact: lines that start with mailto:. URL contacts are skipped:

Contact: mailto:security@example.com
Contact: mailto:owner@example.com
Contact: https://example.com/security

Check that the file is publicly reachable before you publish. A 404 at that URL means the claim step has nothing to read.

2. Publish from the website​

The publish page is at https://www.mcpbundles.com/mcp-analysis?intent=publish. It shows three steps: Paste URL, Verify ownership and Live in marketplace.

  1. Sign in to MCPBundles, open the workspace menu and choose Publish a server. You can also go straight to the publish page above.
  2. Paste your server's URL into the MCP Server URL box and click Run. MCPBundles analyzes the server.
  3. Click Publish to the marketplace. If you'd rather add the server to your account first, click Add to workspace, open the server's page and choose Publish to public directory.
  4. Complete the ownership check. Use a work email on the server's domain, or choose the code flow: MCPBundles emails a 6-digit code to a contact from the file in step 1, and you type the code back in.
  5. When the check passes, the listing is live at https://www.mcpbundles.com/skills/<slug>.

Adding a server to your workspace doesn't make it public. It stays private to your account until you publish it to the public directory.

3. What happens after you publish​

The listing is public as soon as it's published. You'll find it on the directory home page, https://www.mcpbundles.com/, or by searching with https://www.mcpbundles.com/?q=<name>. Each card shows a Publisher MCP server label, a one-click sign-in label where the server uses it, and on many cards a Tools: N count.

An unclaimed listing is fully visible in the directory, and agents can discover it. The one thing you can't do yet is edit it or score it. The listing page shows a Claim this listing button.

Tools come from your server. A server that needs OAuth and wasn't published with a token starts with an empty tool list. The tools appear after a maintainer claims the listing and a credential is bound and signed in.

If a listing for the same server URL already exists, the publish step stops and links to it. Claim that listing instead of publishing a duplicate.

Nobody has to claim a listing for it to stay up. An unclaimed listing stays in the directory as a community submission, and platform admins can correct it.

The MCPBundles directory is one place to list a server. For the official MCP Registry, follow Publish an MCP server to the MCP Registry. It covers a different system with its own server.json file.

4. Claim and edit the listing​

Publishing creates the listing. Claiming proves you control the server, and that's what gives you edit access and scoring.

  1. Open https://www.mcpbundles.com/skills/<slug> and click Claim this listing. If you're signed out, the button reads Sign up to claim; you'll sign in first and land on the server's page with the claim dialog already open.
  2. The dialog reads the /.well-known/ file from step 1 and shows masked addresses, such as s*******@e******.***. Choose the one you recognize. If none of the masked options matches your contacts, stop. Someone else may control that file.
  3. MCPBundles sends a 6-digit code to the full address. The code expires after 10 minutes. Enter it in the dialog. Three wrong codes restart the flow at the send step, and resending is rate-limited.

Once you've claimed the listing, your server's page in MCPBundles gets a listing maintainer panel above the AI Skill section. You edit and score the listing from the website through that panel. It has two actions:

  • Edit listing metadata changes the name, description, category, website URL, logo URL, contact email and skill content. Changes appear on the public listing when the page next loads.
  • Run scoring runs the quality check described in step 5.

Claiming doesn't let you publish new versions, because the listing always points at the URL your server serves. It also doesn't let you suspend or unpublish the listing, or see credentials that other accounts bound to the server. To hand the claim to a different maintainer, email hello@mcpbundles.com. A platform admin releases the claim, and the new maintainer runs the same code flow.

After you change the server itself, such as its tools or skill content, run scoring again from the maintainer panel so the listing shows the current verdict.

5. Quality scoring​

MCPBundles runs an LLM-as-judge rubric over each published server and shows the verdict on the public listing. It scores two things.

What is scoredDimensions (1 to 5 each)Verdict
Each toolPurpose clarity, parameter quality, disambiguation, densityA tool is Bad if any dimension is below 3, otherwise Good
Skill contentDomain context, workflow guidance, tool disambiguation, operational knowledge, additive value, concisenessThe skill is Good, Acceptable or Bad

The scorer reads each tool's annotations (readOnlyHint, destructiveHint, idempotentHint and openWorldHint) along with its description and parameters. A server with one tool scores 5 on workflow guidance and disambiguation automatically, because there are no other tools to compare it with.

A few rules affect the score most:

  • Skill content that tells users to get, paste or configure credentials is automatically Bad. MCPBundles captures credentials and injects them on the server side, so the instructions don't belong in the skill.
  • A server needs a bound credential and discovered tools before it can be scored. Without them the response reports no_credential or no_tools_discovered, and the listing shows no score rather than a zero. For OAuth servers, complete the sign-in once after claiming.
  • The public listing shows only the most recent run.

Only the maintainer sees the per-tool breakdown and the actionable_suggestions list. The list is ranked in three bands. Repeated display_name values across tools come first. Missing or Bad skill content comes second. Bad tools, lowest scores first, come last. Fix the top items, then run scoring again. The new verdict replaces the old one.

Only verified claimers can run scoring from the website. For what the scorer measures and why, read Rating MCP Server Quality.

6. Archive and republish​

Archiving hides a listing from the directory. The listing's data is kept, and republishing it brings it back. Only platform admins can archive or republish a listing.

You can't archive your own listing from the website. To take a listing down or bring one back, email hello@mcpbundles.com with the listing URL.

7. Publish an MCP App listing​

An MCP App is an interactive UI that your server ships alongside its tools. A listing for a server with an app gets an MCP App badge and appears on the MCP Apps page. MCPBundles recognizes an app from either of these two signals:

  • A resource whose mimeType is text/html;profile=mcp-app, returned by resources/list.
  • A tool with _meta.ui.resourceUri set to a ui:// URI, returned by tools/list.

Most servers use both. Here's a resource that serves the app:

{
"uri": "ui://acme/dashboard.html",
"name": "Acme Dashboard",
"mimeType": "text/html;profile=mcp-app",
"_meta": {
"ui": {
"csp": {
"connectDomains": ["https://api.acme.com"],
"resourceDomains": ["https://cdn.acme.com"]
},
"prefersBorder": true
}
}
}

And a tool that opens it. The underscore in _meta is the MCP wire format, and it's the most common thing people get wrong:

{
"name": "get_sales_summary",
"description": "Sales totals for a period",
"_meta": {
"ui": {
"resourceUri": "ui://acme/dashboard.html"
}
}
}

Naming a tool parameter resourceUri doesn't count as an app. Hosts block origins that aren't listed in ui.csp, so add every origin the app calls to connectDomains and every origin it loads assets from to resourceDomains. After you change the app, re-run discovery from the maintainer panel so the listing picks up the change. For the full setup, read Publishing an MCP App.

Common problems​

"No verifiable contact addresses found." The server responded, but neither /.well-known/security.txt nor /.well-known/mcpbundles.json contains a usable contact. The claim dialog lists the URLs it checked. Publish one of those files with a mailto: contact or a maintainers[].email entry, then try again.

"This listing isn't open to claims." A platform admin has disabled claiming for this listing, usually because the vendor runs the server directly and chose not to take part. The reason appears in the dialog. If you think that's wrong, email hello@mcpbundles.com.

"This server URL is already in the public directory." Publishing matches on the server URL. If the existing listing is unclaimed and it's yours, claim it rather than publishing again. The error message links to it.

The publish step rejects your URL. The URL is probably a local or private address, is not HTTPS, or doesn't answer tools/list. Check the URL is public and HTTPS, then test the server's tools with MCP Inspector.

OAuth listing has no tools after publish. This is expected when you publish without a token. Claim the listing, then complete the sign-in on the server's page. The tools are discovered when the credential is saved.

"Code arrived but verification fails." The code expires after 10 minutes, so request a new one. If the code is current, check that you picked the address you actually control. Two addresses can look similar once masked, and only one of them receives the code.

The listing has no MCP App badge. Check tools/list and resources/list on your server directly. The resource MIME type must be exactly text/html;profile=mcp-app, and the tool metadata must use _meta.ui.resourceUri. If both are correct, connect the server again so discovery can finish.

FAQ​

Do I need to be an admin to publish?

No. Any signed-in MCPBundles account can publish from the website. Claiming the listing is what gives you the right to edit it and run the quality score.

Can I publish a server that runs on my laptop?

Not to the directory. A listing needs a public HTTPS URL that answers tools/list. Deploy the server first, then publish its URL. The local vs remote guide explains the difference between the two.

Is publishing the same as claiming?

No. Publishing adds the listing to the directory. Claiming proves you control the server, and that gives you the right to edit the listing and run the quality score.

What happens if nobody claims my listing?

It stays in the directory as a community submission, agents can still discover it, and platform admins can correct it. Nobody can edit its details or run scoring until someone claims it.

Can I remove my listing myself?

Not from the website today. Email hello@mcpbundles.com with the listing URL, and a platform admin can archive it.