From f700a85ddb1cd5ed5a7ad52d64362da0dce0ac24 Mon Sep 17 00:00:00 2001 From: Maximilian Kaske <56969857+mxkaske@users.noreply.github.com> Date: Thu, 10 Sep 2026 18:12:45 +0200 Subject: [PATCH] chore: register mcp server (#2700) --- apps/server/MCP_REGISTRY.md | 58 +++++++++++++++++++++++++++++++++++++ apps/server/README.md | 6 ++++ apps/server/server.json | 18 ++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 apps/server/MCP_REGISTRY.md create mode 100644 apps/server/server.json diff --git a/apps/server/MCP_REGISTRY.md b/apps/server/MCP_REGISTRY.md new file mode 100644 index 00000000..3e669a35 --- /dev/null +++ b/apps/server/MCP_REGISTRY.md @@ -0,0 +1,58 @@ +# MCP Registry listing + +The hosted MCP server (`https://api.openstatus.dev/mcp`) is listed in the +official MCP Registry (https://registry.modelcontextprotocol.io) under the +name `dev.openstatus/mcp`. The registry stores metadata only; it +never fetches `server.json` over HTTP and does not change how the server +runs. Listing exists for discoverability in MCP clients. + +## Files + +- `apps/server/server.json` — the listing. Read from disk by `mcp-publisher` + and POSTed to the registry. Does not need to be routed or served. +- `~/.config/openstatus/mcp-registry/` (local machine, **not** in git): + - `openstatus.dev.ed25519.pem` — private key proving ownership of the + `dev.openstatus/*` namespace. Backed up in the password manager. + - `openstatus.dev.txt-record` — the public TXT record value. + - `login.sh` — runs `mcp-publisher login dns` with the stored key. + +## Namespace ownership + +`dev.openstatus/*` is the reverse-DNS namespace for `openstatus.dev`. +Ownership is proven by a TXT record on the **apex** `openstatus.dev` in +Vercel DNS (name `@`, not a selector subdomain): + +``` +v=MCPv1; k=ed25519; p= +``` + +The matching private key never leaves the local config dir or a CI secret. +If the key is lost or rotated: generate a new one, replace the TXT record, +and delete the old record (a stale record is tried first and fails login). + +## Publishing a new version + +Every publish is immutable. Bump `version` in `server.json` first. + +```bash +~/.config/openstatus/mcp-registry/login.sh # DNS auth, token cached locally +cd apps/server +mcp-publisher validate # checks against the live registry +mcp-publisher publish +curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=dev.openstatus" +``` + +Constraints hit so far: `description` is capped at 100 characters. + +## Setup log + +- 2026-09-10: installed `mcp-publisher` 1.8.1 (`/opt/homebrew/bin`), + generated the Ed25519 key, wrote and validated `server.json`. + Pending at time of writing: TXT record in Vercel DNS, first login, first + publish. Not automated in CI yet; the GitHub Actions template in the + registry docs works with `login dns` and the private key hex as a secret. + +## References + +- https://github.com/modelcontextprotocol/registry/tree/main/docs/modelcontextprotocol-io + (`quickstart`, `remote-servers`, `authentication`, `github-actions`) diff --git a/apps/server/README.md b/apps/server/README.md index 30c780ea..a3c1a8fe 100644 --- a/apps/server/README.md +++ b/apps/server/README.md @@ -5,6 +5,12 @@ - Deno - HonoJS +## MCP Registry + +The hosted MCP server is listed in the official MCP Registry as +`dev.openstatus/mcp`. See [MCP_REGISTRY.md](./MCP_REGISTRY.md) for the +listing file, namespace ownership, and how to publish a new version. + ## Deploy From root diff --git a/apps/server/server.json b/apps/server/server.json new file mode 100644 index 00000000..72e900de --- /dev/null +++ b/apps/server/server.json @@ -0,0 +1,18 @@ +{ + "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json", + "name": "dev.openstatus/mcp", + "title": "openstatus", + "description": "Manage monitors, status pages, incidents and maintenances in your openstatus workspace.", + "version": "1.0.0", + "websiteUrl": "https://www.openstatus.dev", + "repository": { + "url": "https://github.com/openstatusHQ/openstatus", + "source": "github" + }, + "remotes": [ + { + "type": "streamable-http", + "url": "https://api.openstatus.dev/mcp" + } + ] +} -- 2.51.2