Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
MCP standards client for your own custodial SAIHM operator. Free start: @saihm/mcp-server-pro
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
SAIHM_ENDPOINT_URL, SAIHM_AUTH_HEADERValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"saihm": {
"command": "npx",
"args": [
"-y",
"@saihm/mcp-server"
],
"env": {
"SAIHM_ENDPOINT_URL": "your-value",
"SAIHM_AUTH_HEADER": "your-value"
}
}
}
}Run this in your terminal
claude mcp add saihm --env SAIHM_ENDPOINT_URL=your-value --env SAIHM_AUTH_HEADER=your-value -- npx -y @saihm/mcp-serverFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"saihm": {
"command": "npx",
"args": [
"-y",
"@saihm/mcp-server"
],
"env": {
"SAIHM_ENDPOINT_URL": "your-value",
"SAIHM_AUTH_HEADER": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"saihm": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@saihm/mcp-server"
],
"env": {
"SAIHM_ENDPOINT_URL": "your-value",
"SAIHM_AUTH_HEADER": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account SAIHM-Admin, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: SAIHM_ENDPOINT_URL, SAIHM_AUTH_HEADER
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.3.17) reached the registry 27 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, MCP Server Autocad Lisp Helper
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
High-precision static analysis and debug server for AutoCAD AutoLISP (.lsp) files.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
The standards client for your own custodial SAIHM operator. It carries no cryptography of its own and expects an operator endpoint URL plus an operator token. If you just want memory working, free, in about a minute, use `@saihm/mcp-server-pro` and ask your agent to *"Join SAIHM"*.
· Apache-2.0
New to SAIHM? Watch the 6-minute overview (captions and transcript), or read the SAIHM manual (PDF).
This package is the standards client: eight memory tools any MCP agent — Claude Code, Claude Desktop, Cursor, or your own — can call. It carries no cryptography of its own. It speaks the publicly documented SAIHM memory protocol over plain MCP and reaches whichever SAIHM operator you point it at.
Which package do I want?
Want to watch it work first? Runnable demos across every major model, offline, no account — [See it run](#see-it-run).
A Model Context Protocol server that exposes eight tools any MCP-capable AI agent (Claude Code, Claude Desktop, custom agents) can call to gain a persistent, encrypted memory layer the user owns:
saihm_remember — store an encrypted memory cellsaihm_recall — retrieve your memories, decrypted by your operatorsaihm_forget — erase a memory; whether erasure is cryptographic or access-control depends on your operator (see its documentation)saihm_status — your protocol-runtime stats and storage tier dashboardsaihm_share / saihm_revoke_share — share chosen memory shards, by shard id, with another agent, and revoke that accesssaihm_governance_propose / saihm_governance_vote — protocol governance; not enabled by default, so expect an error unless your operator has turned it onEach tool forwards to a SAIHM operator endpoint that runs the full protocol stack. The server itself holds no crypto, no storage, and no protocol runtime — those live behind the operator endpoint.
| Tool | Title | Behavior |
|---|---|---|
saihm_remember | Remember | writes a new memory cell |
saihm_recall | Recall | read-only; safe to repeat |
saihm_forget | Forget (GDPR erasure) | destructive — irreversible erasure |
saihm_status | Status | read-only |
saihm_share | Share | writes a sharing contract |
saihm_revoke_share | Revoke share | withdraws a grant |
saihm_governance_propose | Propose (governance) | forwards a proposal; not enabled by default |
saihm_governance_vote | Vote (governance) | forwards a vote; not enabled by default |
Each tool carries MCP annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) and a human-readable title, so MCP hosts can gate confirmations and agents can select the right tool at reasoning time.
This package speaks MCP and holds no cryptography, so it always needs an operator endpoint and token. Two companions cover the rest:
Runnable, one-command demos ground a memory you own in every major model — Claude, GPT, DeepSeek, Qwen, Kimi, GLM — then prove you can erase it, alongside drop-in adapters for LangChain, LlamaIndex, CrewAI, AutoGen, and LangGraph. Each runs offline in about a minute; no account needed.
Measured — up to ~86% fewer context tokens. Most agents re-send their entire transcript every turn, so context spend grows ~O(N²) over a session; recalling a bounded set of memory cells instead cut input tokens by 62.8%–85.9% across a realistic multi-session coding task. The benchmark is open, offline, and deterministic — reproduce the number rather than trust it:
git clone https://github.com/SAIHM-Admin/saihm-token-benchmark
cd saihm-token-benchmark && npm install && node benchmark.mjs
npm install @saihm/mcp-server
npx @saihm/mcp-server
The server needs two env vars:
SAIHM_ENDPOINT_URL=https://operator.example.com/mcp
SAIHM_AUTH_HEADER=Bearer
Don't have an endpoint and token yet? They're issued by a SAIHM *operator*.
This package is deliberately crypto-free, so it needs a custodial
operator — one that performs cryptography server-side and returns plaintext.
The hosted SAIHM service at [https://saihm.net](https://saihm.net) is not one. It is
non-custodial by design: it stores only ciphertext and never holds your keys,
so cells sealed there can only be opened by a client that holds them. To use
the hosted service — including the free trial (sign in with GitHub, no
card) — use
[`@saihm/mcp-server-pro`](https://www.npmjs.com/package/@saihm/mcp-server-pro),
which seals and opens on your own machine. See
Free trial and
Join SAIHM below.
Use *this* package against a custodial operator you run or subscribe to.
Until one is configured, the tools have nowhere to reach and will return an
error.
Authorization header value the operator expects (typically a Bearer issued to you after key-bound enrolment). The server is authentication-agnostic and never transmits raw private keys; the operator's enrolment flow keeps your signing key on your machine.Both are read from the process environment. This package loads no .env file — it has no dotenv dependency and never reads configuration from disk — so set them in the env block of your MCP host's server configuration, or export them in the shell that launches the server. If you keep them in a .env for your own convenience, source it yourself before launching, and keep it out of version control.
Want to test SAIHM on real infrastructure before you pay? Start a free trial — for testing purposes, no card — by proving you're a unique person once through a GitHub device sign-in. It runs through the non-custodial @saihm/mcp-server-pro client, which seals cells on your own machine so the operator stays blind.
First generate your master secret — it never leaves your machine, and it is the only key to your memory:
openssl rand -hex 32 > saihm-master.key && chmod 600 saihm-master.key
Then activate:
SAIHM_ENDPOINT_URL=https://saihm.net/mcp \
SAIHM_MASTER_SECRET_FILE=./saihm-master.key \ SAIHM_TIER=FREE \ npx -y @saihm/mcp-server-pro free-join
It prints a short code and a link: open https://github.com/login/device in your browser and enter the code. The sign-in stays in your browser — this client never sees or holds your GitHub token; it is exchanged server-side and kept ephemeral. When free-join returns, start the server normally (drop free-join) and it self-onboards on the free trial. No card, and nothing to cancel — it's a fixed, one-time allowance, not an auto-renewing subscription.
Ready for production? Upgrade in place to a monthly plan — same signing key, same memories, no re-onboarding.
Wiring the server in is not the same as using it. The moment that matters is the first recall that returns something — before that you have an empty store and an agent with no particular reason to reach for it.
Here is the whole product in miniature. Once the server is wired in (next section) and your host has restarted, say this to your agent:
Remember that I take my coffee black, and that I'm building a Rust CLI called
ferry.
...then start a new conversation (or restart your host) and ask:
What do you know about me?
The new conversation should come back with both facts, and your host should show a saihm_recall call. That conversation never saw the first one — the memory is what carried them across. Check that round trip before you build anything on top of it.
If the recall comes back empty, it is nearly always one of these:
| what you see | cause | fix |
|---|---|---|
| no SAIHM tools offered at all | the host never started the server | keep timeout in the JSON below, then restart the host |
| tools offered, but the agent never calls them | it has no standing instruction to | see Tell your agent to use it below — this is the common one |
| recall runs but comes back empty | nothing was stored on the first turn | ask for saihm_remember by name, then recall again |
401 or 403, and your endpoint is saihm.net or saihm.coti.global | that service is non-custodial — this client cannot read it | use @saihm/mcp-server-pro instead; see the free trial above |
401 or 403 from your own operator | no valid token | re-issue it with that operator |
could not reach ... | endpoint wrong or unreachable | check SAIHM_ENDPOINT_URL; the message names the cause |
Host note (2026-09-23). The hosted endpoint is
https://saihm.net/mcp. The previous host,saihm.coti.global, serves the identical service until 2026-12-31 and is then discontinued; a configuration that still names it should switchSAIHM_ENDPOINT_URLtohttps://saihm.net/mcp.
{
"mcpServers": { "saihm": { "command": "npx", "args": ["@saihm/mcp-server"], "env": { "SAIHM_ENDPOINT_URL": "https://operator.example.com/mcp", "SAIHM_AUTH_HEADER": "Bearer " }, "timeout": 60 } } }
Keep timeout, and keep the block as strict JSON with no trailing commas. Hosts that don't recognise timeout ignore it, but Cline allows a server only 1.5 s to start — too short for npx to resolve and launch a package — and a server that misses the deadline is skipped silently, with no error in the chat.
Wiring the server in makes the tools available; it does not make an agent reach for them. Say this once, and keep it in w
Only the beginning is shown; read the rest in the repo