Skip to content

Commit 467cebe

Browse files
chore: add smithery.yaml + PUBLISHING.md runbook
smithery.yaml: stdio-based config schema with optional INSTANODE_TOKEN and INSTANODE_API_BASE. Covers the smithery.ai listing once the GitHub repo is connected at smithery.ai/new. PUBLISHING.md: end-to-end release checklist — npm first (blocking), then mcp-publisher for the MCP registry, then smithery connect, then mcp.so + Cursor (both pick up automatically). Documents the new API-based MCP registry flow; the old modelcontextprotocol/servers PR path is obsolete.
1 parent 6c5853a commit 467cebe

2 files changed

Lines changed: 139 additions & 0 deletions

File tree

PUBLISHING.md

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
# Publishing @instanode/mcp
2+
3+
End-to-end checklist for pushing a new version out to every registry we
4+
care about. Do steps in order — smithery + the MCP registry both pull
5+
from npm, so npm must land first.
6+
7+
## 0. Pre-flight
8+
9+
From `mcp/`:
10+
11+
```bash
12+
# Make sure TypeScript builds cleanly.
13+
npm run build
14+
15+
# Make sure server.json still validates against the live registry schema.
16+
mcp-publisher validate server.json
17+
18+
# Inspect exactly what will be published to npm.
19+
npm pack --dry-run
20+
```
21+
22+
Expected: build is silent, `server.json is valid`, and the pack dry-run lists
23+
`dist/`, `README.md`, `LICENSE`, and `package.json` — no stray files.
24+
25+
Bump `version` in both `package.json` and `server.json` if this is a real
26+
release. Commit the bump so the git tree is clean before publishing.
27+
28+
## 1. npm (blocking — all other registries pull from here)
29+
30+
You should be logged in as `instanode`:
31+
32+
```bash
33+
npm whoami # should print: instanode
34+
npm publish --access public
35+
```
36+
37+
The `--access public` flag is required for scoped packages (`@instanode/...`)
38+
that start life private by default on npm.
39+
40+
Verify it landed:
41+
42+
```bash
43+
npm view @instanode/mcp version
44+
```
45+
46+
## 2. MCP Registry (registry.modelcontextprotocol.io)
47+
48+
The modern MCP registry is API-based, not a PR to
49+
`modelcontextprotocol/servers`. You authenticate with GitHub (the
50+
`io.github.instanode-dev/mcp` namespace in `server.json` proves
51+
org ownership automatically) and then push.
52+
53+
```bash
54+
mcp-publisher login github
55+
# Follow the device-code prompt. Opens your browser, confirms the GitHub
56+
# org membership, writes ~/.mcpregistry_token.
57+
58+
mcp-publisher publish
59+
# Reads ./server.json, submits to the registry. Response includes the
60+
# listing URL on modelcontextprotocol.io/registry.
61+
```
62+
63+
If you need to retract or mark a version deprecated later:
64+
65+
```bash
66+
mcp-publisher status --version 0.7.1 deprecated
67+
```
68+
69+
## 3. smithery.ai
70+
71+
smithery scans the repo at `InstaNode-dev/mcp` on push; the `smithery.yaml`
72+
at the repo root is the source of truth for install UX. There's also a
73+
one-time connection step to claim the listing.
74+
75+
1. Visit https://smithery.ai/
76+
2. Sign in with GitHub (use the `InstaNode-dev` org account).
77+
3. Go to "New Server" → enter the GitHub URL `InstaNode-dev/mcp`.
78+
4. smithery picks up `smithery.yaml` and publishes the listing.
79+
80+
After the first connection, subsequent pushes to the mcp repo trigger
81+
automatic re-index within ~15 minutes.
82+
83+
## 4. mcp.so
84+
85+
mcp.so is a community-indexed directory; they either pick up new servers
86+
automatically from npm + the MCP registry, or via a submission form.
87+
88+
- Auto-pickup path: once published on both npm and the MCP registry, the
89+
listing typically appears within 24 hours with no action required.
90+
- Manual submit (faster): https://mcp.so/submit — paste the GitHub URL.
91+
92+
## 5. Cursor's MCP directory
93+
94+
Cursor indexes from the MCP registry. After step 2 lands, the server will
95+
appear at https://cursor.com/mcp within ~24 hours. No separate action.
96+
97+
## Post-publish verification
98+
99+
```bash
100+
# Regular user install path (what a dev finds in Claude Code docs)
101+
npx -y @instanode/mcp@latest --version
102+
103+
# Registry URL (should resolve to a listing page)
104+
open https://registry.modelcontextprotocol.io/v0/servers/io.github.instanode-dev/mcp
105+
```
106+
107+
If either fails, roll forward: bump the patch version, fix the bug, re-run
108+
from step 1. npm doesn't allow overwriting published versions.

smithery.yaml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
startCommand:
2+
type: stdio
3+
configSchema:
4+
type: object
5+
required: []
6+
properties:
7+
instanodeToken:
8+
type: string
9+
title: InstaNode API Token
10+
description: |
11+
Optional bearer JWT for paid-tier callers. Mint at
12+
https://instanode.dev/dashboard under "API token for CLI / agent".
13+
Lifts the free-tier 5-per-subnet-per-day provisioning cap and auto-
14+
links new resources to your account. Leave empty to use the free tier
15+
anonymously (10 MB / 2 connections / 24h TTL Postgres).
16+
instanodeApiBase:
17+
type: string
18+
title: API Base URL
19+
description: |
20+
Override the API base URL. Defaults to https://api.instanode.dev.
21+
Only change this for self-hosted InstaNode deployments.
22+
default: https://api.instanode.dev
23+
commandFunction: |-
24+
(config) => ({
25+
command: 'npx',
26+
args: ['-y', '@instanode/mcp@latest'],
27+
env: {
28+
...(config.instanodeToken ? { INSTANODE_TOKEN: config.instanodeToken } : {}),
29+
...(config.instanodeApiBase ? { INSTANODE_API_BASE: config.instanodeApiBase } : {})
30+
}
31+
})

0 commit comments

Comments
 (0)