Directories and install buttons
Beyond the package channels (see Releasing), MCP clients and directories discover servers through a few manifests in the repository and through the install buttons in the README. Nothing here is published or listed yet: every listing below needs the repository to be public and the first release out, and most need one step by the owner.
The manifests
Section titled “The manifests”| File | Read by | Kept current by |
|---|---|---|
server.json | The MCP Registry (and the directories that mirror it) | publish-registry.yml, on every newest release (MCP Registry) |
glama.json | Glama: names jmrplens as the maintainer who may claim the listing | Hand-written; a test checks its shape |
plugin.json, mcp.json | Agent Plugins 1.0 hosts (agent-plugins.org): the plugin and its MCP server, the container image with every variable server.json declares forwarded | Hand-written; test/release validates both against the vendored Agent Plugins schemas and holds the name, version (VERSION), description and links to the other manifests |
.plugin/plugin.json, .plugin/plugin.schema.json | Hosts still on the older Open Plugins layout (a logo and mcpServers: ./mcp.json) | Hand-written; validated against its own schema and held equal to plugin.json |
lhm.plugin.json | The LobeHub Marketplace: its capability badges come from the manifest’s tools, prompts and resources, since it cannot introspect a binary or an image | cmd/gen_lhm_manifest writes the three arrays from a real tools/list, prompts/list and resources/list on the default surface; make check fails when they are stale |
llms.txt | Assistants and tools that read the llms.txt index | cmd/gen_llms writes it from the catalog (one line per domain) and checks every documentation link against the site’s pages; make check fails when it is stale |
llms-install.md | Assistants asked to install the server (the convention Cline introduced) | Hand-written |
Every description that quotes the catalog’s size (”version against VERSION, so a release bumps them with VERSION.
Install buttons
Section titled “Install buttons”The README’s install table has one-click buttons for VS Code and VS Code Insiders (which prompt for ARCANE_URL and, masked, for ARCANE_API_KEY), Cursor, LM Studio and Kiro (which register placeholders to edit), all registering the container image ghcr.io/jmrplens/arcane-mcp:latest with -e ARCANE_URL -e ARCANE_API_KEY, plus the three per-system .mcpb bundles for Claude Desktop and the Claude Code command. A button’s configuration travels inside its URL, so no text search sees it, and each client reads it differently: VS Code’s redirect and Kiro take percent-encoded JSON, Cursor and LM Studio base64, and VS Code alone takes prompt definitions, from a top-level inputs parameter beside config (insiders.vscode.dev forwards only name, that parameter and the entry’s fields; prompts nested in config are dropped). cmd/audit_install_buttons (make check) reads every button in the README, docs/, llms-install.md and the site’s sources by its endpoint’s rules, and mcp.json, and holds them to a known endpoint and the name arcane, to the image server.json declares, to variables that server.json declares and internal/config reads (the two required ones always forwarded, the env block setting exactly the forwarded ones), to top-level prompts in VS Code (the key masked) and placeholders elsewhere, to one argument list for every button, and to .mcpb downloads from this repository’s releases that server.json declares.
The README’s directory badges (Glama, LobeHub, MCP Toplist, Cursor Directory) and the SonarCloud badges are written in an HTML comment until each listing exists: a badge for a listing that does not exist renders as an error. There is no SonarCloud project for this repository yet (sonar.yml skips the scan until SONAR_TOKEN exists).
Listings the owner submits
Section titled “Listings the owner submits”- MCP Registry: nothing to do;
publish-registry.ymlpublishes every newest release. - Glama: once the repository is public, find the server on glama.ai (or add it with its repository URL) and claim it while signed in to GitHub as
jmrplens; Glama checks the claim againstglama.json. Glama then scores the server; add its badge to the README. - LobeHub Marketplace: from a machine with Node, once:
npx -y @lobehub/market-cli@0.0.44 loginandnpx -y @lobehub/market-cli@0.0.44 github connect(both interactive), then the first listing withnpx -y @lobehub/market-cli@0.0.44 plugin publish https://github.com/jmrplens/arcane-mcp. After each later release,make publish-lobehub(it checks the manifest and runsplugin update). The listing isjmrplens-arcane-mcp. - Cursor Directory: submit the repository on cursor.directory, signed in with GitHub; the listing links the Cursor install button.
- MCP Toplist: it lists servers from the MCP Registry, so the first registry publish should be enough; add its badge once the server appears.
- Claude Desktop’s extension directory: a separate submission form for the
.mcpbextension. It asks for a privacy policy (Privacy) and for test credentials: a reachable Arcane and an API key the reviewers can use. Whether to run such an Arcane, and what that key may do (a read-only key on a throwaway instance), is the owner’s decision; until then, the extension is offered from the releases only.