MCP Registry listing
Status: Q1 item (not yet submitted). The listing file is in the repo; publishing it to the official MCP Registry is a separate step that needs DNS authentication on mandatum.io and a signing key held by the founder.
What is in the repo #
public/.well-known/mcp/server.json: the listing. Served athttps://<app domain>/.well-known/mcp/server.json. The registry does not fetch this file; it is published from the CLI below. The static copy lets clients discover the server without the registry.openapi/mcp-registry-server.schema.json: the registry schema, copied verbatim (source and date inopenapi/mcp-registry-server.schema.source.txt).- A test in the app validates the listing against that schema and checks that the stored schema has not drifted.
The listing names the server ai.intergentech.mandatum/mandatum, which is the domain-based form com.example.*/* for mandatum.io. Publishing it therefore needs DNS authentication on mandatum.io. GitHub authentication would require an io.github.* name instead.
The remote is https://mandatum.intergentech.ai/api/mcp, the current production URL. When the production domain changes, update remotes[0].url in server.json and republish. Each remote URL can be used by only one server name.
Submitting the listing #
Sources: the registry quickstart (https://github.com/modelcontextprotocol/registry/blob/main/docs/modelcontextprotocol-io/quickstart.mdx), the authentication guide (https://github.com/modelcontextprotocol/registry/blob/main/docs/modelcontextprotocol-io/authentication.mdx) and the remote-server guide (https://github.com/modelcontextprotocol/registry/blob/main/docs/modelcontextprotocol-io/remote-servers.mdx), all read 2026-10-22. The schema the listing names is https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json.
A remote-only server needs no npm package. Skip the npm steps.
-
Install
mcp-publisher:bashbrew install mcp-publisherOr, on macOS/Linux, the release binary:
bashcurl -L "https://github.com/modelcontextprotocol/registry/releases/latest/download/mcp-publisher_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher && sudo mv mcp-publisher /usr/local/bin/Check with
mcp-publisher --help. -
Generate the DNS-auth key pair. The Ed25519 path needs OpenSSL 3. On macOS, use
brew install openssl@3and/opt/homebrew/opt/openssl@3/bin/openssl(Apple Silicon) or/usr/local/opt/openssl@3/bin/openssl(Intel) in place ofopenssl.bashMY_DOMAIN="mandatum.io" openssl genpkey -algorithm Ed25519 -out key.pem PUBLIC_KEY="$(openssl pkey -in key.pem -pubout -outform DER | tail -c 32 | base64)" echo "${MY_DOMAIN}. IN TXT \"v=MCPv1; k=ed25519; p=${PUBLIC_KEY}\"" -
Add the printed TXT record at the apex of
mandatum.io(not under a selector such as_mcp-registry). Wait for it to propagate. Remove any old MCP TXT record at the apex when rotating keys. -
Log in with the private key:
bashMY_DOMAIN="mandatum.io" PRIVATE_KEY="$(openssl pkey -in key.pem -noout -text | grep -A3 "priv:" | tail -n +2 | tr -d ' :\n')" mcp-publisher login dns --domain "${MY_DOMAIN}" --private-key "${PRIVATE_KEY}"Keep
key.pemout of the repo and in the founder's secret store. -
Validate and publish.
publishreads theserver.jsonin the current directory, as the quickstart runs it from the project directory. Copy the listing into a clean working directory first so that no other file is picked up:bashmkdir -p ~/mandatum-registry && cp public/.well-known/mcp/server.json ~/mandatum-registry/server.json cd ~/mandatum-registry mcp-publisher validate mcp-publisher publish -
Confirm the listing:
bashcurl "https://registry.modelcontextprotocol.io/v0.1/servers?search=ai.intergentech.mandatum/mandatum"
Known gaps #
- The commands above come from the registry docs read on 2026-10-22. This doc has not been run end to end against the registry.
- The DNS login command was taken from the authentication guide. The domain's DNS access and the signing key are the founder's to hold.
- Publishing is not done by CI. The GitHub Actions automation mentioned in the quickstart is not set up.