Move the MCP Registry listing to getsigit/si

server.json and the release-mcp-registry.yml publish workflow describe the si CLI's home turf, not the coding agent's, so they belong in getsigit/si alongside sigit-si-api rather than here. Ref getsigit/si#1

paydii committed Sep 3, 2026 at 22:45 UTC 5aa0be3d00a57b20f4a8d72acd3ac90dbb595362
4 files changed +10 -125
.agents/AGENTS.md
+5 -4
@@ -198,10 +198,11 @@ feeds results back. Neither the loop nor ACP/TUI surfaces depend on a concrete b
198 `tests/mcp_stdio.rs`, driven by the test-only `src/bin/mcp_stdio_stub.rs` helper binary
199 (excluded from the published crate via `exclude` in `Cargo.toml`). The baked-in official
200 server is *also* listed in the public MCP Registry as `si.sigit/sigit` — a **remote**
201 - Streamable-HTTP listing (`server.json` at the repo root, published by
202 - `release-mcp-registry.yml`). Because it's a remote server, the registry's URL-match rule
203 - forces a domain namespace (`si.sigit` ↔ `sigit.si`) verified by a DNS TXT record, not the
204 - GitHub-OIDC scheme `smbcloud-cli` uses for its package listing.
201 + Streamable-HTTP listing owned by the [`getsigit/si`](https://github.com/getsigit/si) repo
202 + (`server.json` at its root, published by its `release-mcp-registry.yml`), not this one. Because
203 + it's a remote server, the registry's URL-match rule forces a domain namespace (`si.sigit` ↔
204 + `sigit.si`) verified by a DNS TXT record, not the GitHub-OIDC scheme `smbcloud-cli` uses for its
205 + package listing.
206 - **`src/permissions.rs`** — tool permission policy. Every tool call passes through
207 `decision_for` before executing: read-only tools always run; mutating tools (and all
208 `mcp__*`/unknown tools) are governed by, in order: per-session plan mode (`/plan` — deny all
.github/workflows/release-mcp-registry.yml deleted
-79
@@ -1,79 +0,0 @@
1 -name: MCP Registry Release
2 -
3 -on:
4 - workflow_dispatch:
5 - inputs:
6 - version:
7 - description: "Override the version in server.json (e.g. 0.2.0); leave blank to publish as-is"
8 - required: false
9 -
10 -# A remote server proves namespace ownership through domain (DNS) verification,
11 -# not GitHub OIDC: the registry checks a v=MCPv1 TXT record on sigit.si against
12 -# a request signed with the matching Ed25519 private key. See the MCP Registry
13 -# doc in the sigit-si repo for the one-time key/DNS setup.
14 -permissions:
15 - contents: read
16 -
17 -jobs:
18 - publish:
19 - name: Publish server.json to the MCP Registry
20 - runs-on: ubuntu-latest
21 - steps:
22 - - name: Checkout
23 - uses: actions/checkout@v6
24 -
25 - - name: Optionally override the version in server.json
26 - shell: bash
27 - run: |
28 - version="${{ github.event.inputs.version }}"
29 - if [ -n "${version}" ]; then
30 - jq --arg v "${version}" '.version = $v' server.json > server.tmp
31 - mv server.tmp server.json
32 - fi
33 - cat server.json
34 -
35 - - name: Check the remote URL matches the namespace domain
36 - shell: bash
37 - run: |
38 - # The registry rejects a remote server whose URL isn't under the
39 - # namespace's domain. si.sigit -> sigit.si, so every listed remote
40 - # must live on sigit.si (or a subdomain).
41 - server_name="$(jq -r '.name' server.json)"
42 - domain="$(echo "${server_name%%/*}" | awk -F. '{ for (i=NF; i>=1; i--) printf "%s%s", $i, (i>1 ? "." : "") }')"
43 - echo "Server: ${server_name} Domain: ${domain}"
44 -
45 - bad="$(jq -r --arg d "${domain}" '
46 - .remotes // []
47 - | map(.url | sub("^[a-z]+://"; "") | sub("/.*$"; ""))
48 - | map(select(. != $d and (endswith("." + $d) | not)))
49 - | .[]' server.json)"
50 - if [ -n "${bad}" ]; then
51 - echo "Remote URL host(s) not under ${domain}: ${bad}" >&2
52 - exit 1
53 - fi
54 -
55 - - name: Install mcp-publisher
56 - shell: bash
57 - run: |
58 - curl -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
59 -
60 - - name: Authenticate to the MCP Registry
61 - shell: bash
62 - env:
63 - MCP_REGISTRY_DNS_PRIVATE_KEY: ${{ secrets.MCP_REGISTRY_DNS_PRIVATE_KEY }}
64 - run: |
65 - if [ -z "${MCP_REGISTRY_DNS_PRIVATE_KEY}" ]; then
66 - echo "MCP_REGISTRY_DNS_PRIVATE_KEY secret is not set. See the MCP Registry doc in the sigit-si repo." >&2
67 - exit 1
68 - fi
69 - ./mcp-publisher login dns --domain=sigit.si --private-key="${MCP_REGISTRY_DNS_PRIVATE_KEY}"
70 -
71 - - name: Publish
72 - shell: bash
73 - run: ./mcp-publisher publish
74 -
75 - - name: Verify the server is listed
76 - shell: bash
77 - run: |
78 - server_name="$(jq -r '.name' server.json)"
79 - curl -fsSL "https://registry.modelcontextprotocol.io/v0.1/servers?search=${server_name}" | jq .
docs/mcp.md
+5 -3
@@ -63,6 +63,8 @@ The server is published to the
63 [official MCP Registry](https://registry.modelcontextprotocol.io) as
64 **`si.sigit/sigit`**, a remote Streamable-HTTP listing, so registry-aware
65 clients can add it in one click. The registry only stores metadata; the
66 -`server.json` and publish workflow live in this repo, and namespace ownership is
67 -proven by a DNS TXT record on `sigit.si`. The internal setup and release runbook
68 -live with the server (private `sigit-si` repo).
66 +`server.json` and publish workflow live in the
67 +[`getsigit/si`](https://github.com/getsigit/si) repo (the `si` CLI, also an
68 +MCP client of this server), and namespace ownership is proven by a DNS TXT
69 +record on `sigit.si`. The internal setup and release runbook live with the
70 +server (private `sigit-si` repo).
server.json deleted
-39
@@ -1,39 +0,0 @@
1 -{
2 - "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3 - "name": "si.sigit/sigit",
4 - "title": "siGit",
5 - "description": "MCP server for siGit (sigit.si): browse repos, search code, manage PRs/issues, web search.",
6 - "version": "1.2.5",
7 - "websiteUrl": "https://sigit.si",
8 - "repository": {
9 - "url": "https://github.com/getsigit/sigit",
10 - "source": "github"
11 - },
12 - "remotes": [
13 - {
14 - "type": "streamable-http",
15 - "url": "https://sigit.si/api/v1/mcp"
16 - }
17 - ],
18 - "_meta": {
19 - "io.modelcontextprotocol.registry/publisher-provided": {
20 - "categories": ["developer-tools", "version-control", "ai-agents"],
21 - "keywords": [
22 - "git",
23 - "git hosting",
24 - "mcp server",
25 - "model context protocol",
26 - "code search",
27 - "pull requests",
28 - "issues",
29 - "repositories",
30 - "web search",
31 - "coding agent",
32 - "ai coding agent",
33 - "ai agent tools",
34 - "developer tools",
35 - "software development"
36 - ]
37 - }
38 - }
39 -}