Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
MCP standards client for your own custodial SAIHM operator. Free start: @saihm/mcp-server-pro
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
SAIHM_ENDPOINT_URL, SAIHM_AUTH_HEADERค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"saihm": {
"command": "npx",
"args": [
"-y",
"@saihm/mcp-server"
],
"env": {
"SAIHM_ENDPOINT_URL": "ใส่ค่าของคุณ",
"SAIHM_AUTH_HEADER": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add saihm --env SAIHM_ENDPOINT_URL='ใส่ค่าของคุณ' --env SAIHM_AUTH_HEADER='ใส่ค่าของคุณ' -- npx -y @saihm/mcp-serverเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"saihm": {
"command": "npx",
"args": [
"-y",
"@saihm/mcp-server"
],
"env": {
"SAIHM_ENDPOINT_URL": "ใส่ค่าของคุณ",
"SAIHM_AUTH_HEADER": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"saihm": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@saihm/mcp-server"
],
"env": {
"SAIHM_ENDPOINT_URL": "ใส่ค่าของคุณ",
"SAIHM_AUTH_HEADER": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub SAIHM-Admin ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: SAIHM_ENDPOINT_URL, SAIHM_AUTH_HEADER
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.3.17) เข้า registry 27 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Zendesk
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า 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.
Zendesk MCP Pack — tickets, users, organizations via OAuth.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
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
ตัดมาแค่ช่วงต้น อ่านต่อใน repo