How to submit an MCP server to Kilo Marketplace

By Jonah EasePublished Last checked

An MCP server enters Kilo's marketplace as a folder with a single file in it, mcps/<id>/MCP.yaml. The file is both the listing and the install recipe: it holds the JSON config a Kilo user will paste, with a placeholder for every secret[1]. The marketplace also lists skills, agents and plugins, and the contributing guide covers those at more length than it covers MCP servers, so read the MCP section and no further[2].

One folder, one file

mcps/weather/MCP.yaml (example names)
id: weather
name: Weather
description: Forecasts and alerts for any city.
author: example-user
url: https://github.com/example-user/weather-mcp
category: search
prerequisites:
  - A Weather API key
content:
  - name: NPX
    prerequisites:
      - Node.js
    content: |
      {
        "command": "npx",
        "args": ["-y", "weather-mcp"],
        "env": { "WEATHER_API_KEY": "{{WEATHER_API_KEY}}" }
      }
parameters:
  - name: Weather API Key
    key: WEATHER_API_KEY
    placeholder: your_api_key_here

The folder name is lowercase with hyphens and matches the id[1]. An existing entry is the easiest model to copy, since it shows two install options side by side[4].

The properties

PropertyRequiredWhat it holds
id, name, description, author, urlYesThe kebab-case id, a display name, what it provides, who wrote it, and the repository link.
categoryYesOne of business, data, development, observability, productivity, search or web-automation.
contentYesOne or more install configurations, each a named block with its own prerequisites.
prerequisites, parametersNoSoftware or accounts needed, and the values a user must fill in.
suggest_for, requirements, skillsNoWhen Kilo should suggest the server, what it depends on, and companion skills.

The guide asks for a single best category and says to propose a new one only when several servers share a purpose that none of the seven fits[1].

A command or an address

A local server's content is a command with arguments and an env block. A remote one is a Streamable HTTP address, with headers if it needs a token. Give several install options when you can, such as NPX, Docker and UVX, each with its own prerequisites[1].

A remote content block
content: |
  {
    "type": "streamable-http",
    "url": "https://weather.example.com/mcp",
    "headers": { "Authorization": "Bearer {{API_TOKEN}}" }
  }

Credentials are always a placeholder such as {{API_TOKEN}}, listed under parameters, never a real value. Handling authentication through environment variables is one of the guide's four requirements for an MCP server[1].

Run the generator before you push

The catalog is generated from the folders. The guide's validation steps are run from bin/: install with pnpm, run the MCP marketplace generator, then the tests and the MCP type check[1]. Test the real endpoint in a client as well, since the generator only reads your YAML.

What gets sent back

  • Editing the generated catalog. mcps/marketplace.yaml sits beside the folders and is produced by the generator. The guide says not to edit generated catalogs by hand[1][3].
  • An id that is not lowercase kebab-case, or that differs from its folder name; the template uses the same name for both. With companion skills, the id must also avoid reserved device names and names such as constructor and prototype[1].
  • A category outside the seven.
  • A secret written into the file. Use the placeholder and a parameter.

Doing it by hand

  1. Fork the repository and make mcps/your-id/.
  2. Write MCP.yaml from the example above, with one install option per way to run the server.
  3. Run the generator and tests from bin/.
  4. Open a pull request. The guide says contributions are accepted through pull requests.

Current status,

The mcps folder held 128 server folders on this date, plus the generated marketplace.yaml[3]. On the repository had 163 open pull requests[5].

How long merges took

1 outside pull request merged in the 90 days to : too few for a median. The merged pull requests are on GitHub.

Kilo MarketplaceRolling 30-day median time to merge
Kilo Marketplace: rolling 30-day median time to mergeKilo-Org/kilo-marketplace, 2 Oct 2025 to 2 Oct 2026. No 30-day window had 3 or more merges. Windows with fewer than 3 merges are left out. Days on a log scale.1 h1 day1 wkJan 2026Apr 2026July 2026Oct 2026No 30-day window had 3 or more merges
Kilo Marketplace: no 30-day window had 3 or more merges in the 12 months to 2 Oct 2026.
Window endingRolling medianMerges in window

Measured . Pull requests merged on each list's GitHub repo, timed from opened to merged, read from GitHub's REST pulls list. Bot accounts ([bot]), the repo's owners, members and collaborators, and pull requests from a branch inside the list's own repo are left out. A past figure, not a promise. All 10 directories side by side: how long MCP directories take to merge.

Sources

  1. kilo-marketplace: CONTRIBUTING.md · checked
  2. kilo-marketplace: README · checked
  3. kilo-marketplace: the mcps folder · checked
  4. kilo-marketplace: mcps/brave-search/MCP.yaml, an existing entry · checked
  5. kilo-marketplace: open pull requests · checked

ManyCP is not affiliated with, endorsed by or sponsored by any directory, Docker, OpenAI, Anthropic or GitHub named here. Names are used to say which service a fact is about.

Or skip all of that

Or let ManyCP do it in one click

ManyCP forks Kilo-Org/kilo-marketplace, adds your entry in the exact format, and opens the pull request from your GitHub account. It tracks the PR until it is merged.

More directories