Add the MCP Registry listing for si.sigit/sigit
server.json and the release-mcp-registry.yml publish workflow moved here from getsigit/sigit: this repo, not the coding agent, is the si.sigit namespace's home. Ref getsigit/si#1
Seto committed
Sep 3, 2026 at 22:45 UTC
9d3690572f17cc701905393b63aabb8d9945bd56
3 files changed
+129
.github/workflows/release-mcp-registry.yml
new
+79
@@ -0,0 +1,79 @@
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 .
README.md
+11
@@ -64,6 +64,17 @@ they're served over the same MCP (Model Context Protocol) JSON-RPC endpoint
64
the AI agent uses. `sigit-si-api` speaks that transport internally; it's not
65
visible at the call site.
66
67
+## MCP Registry listing
68
+
69
+The sigit.si MCP server (the same endpoint `sigit-si-api` talks to, and the
70
+official MCP server the siGit Code CLI bakes in) is published to the
71
+[official MCP Registry](https://registry.modelcontextprotocol.io) as
72
+**`si.sigit/sigit`**, a remote Streamable-HTTP listing, so registry-aware
73
+clients can add it in one click. `server.json` at the repo root and the
74
+`release-mcp-registry.yml` workflow own that listing; namespace ownership is
75
+proven by a DNS TXT record on `sigit.si`. The internal setup and release
76
+runbook live with the server (private `sigit-si` repo).
77
+
78
## Development
79
80
```sh
server.json
new
+39
@@ -0,0 +1,39 @@
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/si",
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
+}