How to submit an MCP server to Gemini CLI Extensions

By Jonah EasePublished Last checked

Gemini CLI's extension gallery has no submit page, no pull request and no review queue to join. The docs say the gallery indexes public extensions on its own and that you do not need to submit an issue or send an email[1]. A crawler finds repositories by a GitHub topic and reads a manifest, and that is the whole route. So the work is making sure the crawler can see you.

The three things the crawler needs

  1. A public GitHub repository.
  2. The topic gemini-cli-extension on the repository's About section. The crawler uses it to find new extensions[1].
  3. gemini-extension.json at the absolute root of the repository or of the release archive[1].

The docs add that tagged repositories are crawled daily and that an extension appears "if it passes validation"[1]. They do not list what validation checks, so I will not guess.

What the manifest has to say

gemini-extension.json for an MCP server (example names)
{
  "name": "weather-tools",
  "version": "1.0.0",
  "description": "Forecasts and alerts for any city",
  "mcpServers": {
    "weather": {
      "command": "node",
      "args": ["${extensionPath}/dist/server.js"],
      "cwd": "${extensionPath}"
    }
  }
}
  • name is lowercase letters, digits and dashes, with no underscores or spaces. It is how users refer to the extension, and the docs expect it to match the extension's directory name[2].
  • description is the line shown on the gallery page[2]. Write it for a stranger.
  • mcpServers maps a name to a server config, loaded at startup like entries in settings.json. Refer to your own files with ${extensionPath}, and keep the executable in command and its arguments in args[2].
  • Anything a user must supply, such as an API key, goes in a settings array with an envVar and a sensitive flag, so the install asks for it[2].

Install it the way a user will

gemini extensions install <your-repo-url> clones the repository, and --ref picks a branch, tag or commit. If you ship GitHub Releases instead, the CLI looks for the release marked Latest, and the archive must keep the manifest at its root[1][2]. While you work, gemini extensions link . points the CLI at your folder so you can test without reinstalling[2].

When the extension is not in the gallery

Check the topic first

In May 2026 someone reported that two extensions had vanished from the gallery. A maintainer found that both repositories had lost the gemini-cli-extension topic, said the crawler relies on it, and asked them to add it back; after the next crawl, usually a day, the extensions showed again[3]. The issue was filed on and closed on .

Then the manifest

A manifest in a subfolder, a name that does not match its folder, or a command and its arguments joined in one string are the other things the docs warn about[1][2]. Fix them, wait for the next daily crawl, and look again.

The route, by hand

Add the manifest, push it, then on the repository's page you click the gear beside About, add the topic and press Save changes. There is no Submit button anywhere in this directory's route, so nothing else is yours to press.

Current status,

GitHub's search found 1,008 public repositories carrying the topic on this date[4]. The release docs still describe daily crawling and no submission step[1]. The gallery's old browse address redirected to geminicli.com/extensions when I opened it.

Sources

  1. Gemini CLI docs: Release extensions · checked
  2. Gemini CLI docs: Extension reference · checked
  3. Gemini CLI issue 26346: some extensions not showing up any more · checked
  4. GitHub: repositories with the gemini-cli-extension topic · 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 fill it in for you

ManyCP fills in every field and links straight to the steps. You click send. On Pro, ManyCP files it by hand for you.

More directories