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
-}