Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
Record agent judgments and their real outcomes on GRAFOMEM Cloud. Capture now, score later.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
GRAFOMEM_CGR_TENANT_KEY, GRAFOMEM_CGR_TENANT, GRAFOMEM_CGR_ROLE_KEYS_JSON, GRAFOMEM_CGR_ROLE_KEYS, GRAFOMEM_CGR_FORBIDDEN_TENANTS, GRAFOMEM_API标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"cgr-capture": {
"command": "uvx",
"args": [
"grafomem-cgr"
],
"env": {
"GRAFOMEM_CGR_TENANT_KEY": "your-value",
"GRAFOMEM_CGR_TENANT": "your-value",
"GRAFOMEM_CGR_ROLE_KEYS_JSON": "your-value",
"GRAFOMEM_CGR_ROLE_KEYS": "your-value",
"GRAFOMEM_CGR_FORBIDDEN_TENANTS": "your-value",
"GRAFOMEM_API": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add cgr-capture --env GRAFOMEM_CGR_TENANT_KEY=your-value --env GRAFOMEM_CGR_TENANT=your-value --env GRAFOMEM_CGR_ROLE_KEYS_JSON=your-value --env GRAFOMEM_CGR_ROLE_KEYS=your-value --env GRAFOMEM_CGR_FORBIDDEN_TENANTS=your-value --env GRAFOMEM_API=your-value -- uvx grafomem-cgr运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"cgr-capture": {
"command": "uvx",
"args": [
"grafomem-cgr"
],
"env": {
"GRAFOMEM_CGR_TENANT_KEY": "your-value",
"GRAFOMEM_CGR_TENANT": "your-value",
"GRAFOMEM_CGR_ROLE_KEYS_JSON": "your-value",
"GRAFOMEM_CGR_ROLE_KEYS": "your-value",
"GRAFOMEM_CGR_FORBIDDEN_TENANTS": "your-value",
"GRAFOMEM_API": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"cgr-capture": {
"type": "stdio",
"command": "uvx",
"args": [
"grafomem-cgr"
],
"env": {
"GRAFOMEM_CGR_TENANT_KEY": "your-value",
"GRAFOMEM_CGR_TENANT": "your-value",
"GRAFOMEM_CGR_ROLE_KEYS_JSON": "your-value",
"GRAFOMEM_CGR_ROLE_KEYS": "your-value",
"GRAFOMEM_CGR_FORBIDDEN_TENANTS": "your-value",
"GRAFOMEM_API": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
GRAFOMEM_CGR_ROLE_KEYS_JSON envGRAFOMEM_CGR_ROLE_KEYS envGRAFOMEM_CGR_FORBIDDEN_TENANTS envGRAFOMEM_API env这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日
注册名称已通过域名 grafomem.com 验证(注册中心会核实域名所有权)
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
你需要填写:GRAFOMEM_CGR_TENANT_KEY, GRAFOMEM_CGR_TENANT
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.1.0)于2个月前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Python (uv)。
同一分类中有:Spec Driven Development, Remote Desktop Commander, Intervals MCP
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
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.
Remote MCP server for intervals.icu run data and analysis
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
An MCP server that lets a coding agent record its own judgments and how they turned out, against your GRAFOMEM Cloud tenant.
The model is capture now, score later. Every time your agent makes a call it could be wrong about — "this deploy is safe", "this scan is clean", "this review finding is real" — it records the judgment. Later, when reality settles, it records the outcome. The two are joined by a work_item_id you choose. What accumulates is an append-only, attributable record of judgments and their results.
This package is the capture half only. It writes to your tenant; it does not compute, serve, or display scores.
cgr.cosign.v1 verifier (optional extra)Beside the capture client, this package also ships a reference verifier for the cgr.cosign.v1 two-party co-signature envelope — grafomem_cgr.cosign_verify.verify(record, registry, ledger, trusted_issuers), implementing docs/cgr/cgr-cosign-v1-spec.md §8 (amended by decisions 0010 and 0011). trusted_issuers is required (§8.2a issuer pinning): a collection of issuer key ids with no default and no trust-everything path — omitting it or passing an empty set rejects, rather than trusting the record's self-declared issuer. It is the second, independent reference implementation (the first is @gns-foundation/cgr-verify, JS); both pass the same 28-vector conformance corpus at conformance/cgr-cosign-v1/ with zero verdict disagreements. Install its deps with the extra:
pip install grafomem-cgr[verify] # rfc8785 + cryptography
Capture does not depend on it; the extra is verifier-only.
domain. The domain you pass is stored durably per decision (see below), so it can be attributed later — but it is not scored separately yet.A GRAFOMEM Cloud account. The free tier is sufficient — expected volume is a handful of decisions per day. Note that governed decisions meter as real usage on your plan; the server prints your current usage on startup so this is never a surprise.
One command, plus environment variables — no repo checkout, no launcher script.
Claude Code:
claude mcp add grafomem-cgr --scope user \
--env GRAFOMEM_CGR_TENANT_KEY=sk_your_api_key \ --env GRAFOMEM_CGR_TENANT=your_tenant_id \ --env GRAFOMEM_CGR_ROLE_KEYS_JSON='{"cc-builder@acme":"<64-hex public key>"}' \ -- uvx grafomem-cgr
Or any MCP client that reads a JSON config:
{
"mcpServers": { "grafomem-cgr": { "command": "uvx", "args": ["grafomem-cgr"], "env": { "GRAFOMEM_CGR_TENANT_KEY": "sk_your_api_key", "GRAFOMEM_CGR_TENANT": "your_tenant_id", "GRAFOMEM_CGR_ROLE_KEYS_JSON": "{\"cc-builder@acme\":\"<64-hex public key>\"}" } } } }
| Variable | Required | Meaning |
|---|---|---|
GRAFOMEM_CGR_TENANT_KEY | yes | Your tenant's X-API-Key. Needs decisions:read for the durability guard. |
GRAFOMEM_CGR_TENANT | yes | The tenant id you expect that key to resolve to. If the key resolves anywhere else, every write is refused. |
GRAFOMEM_CGR_ROLE_KEYS_JSON | one of | Role handles → public agent_key, inline as JSON. |
GRAFOMEM_CGR_ROLE_KEYS | these two | Same mapping, as a path to a JSON file. |
GRAFOMEM_CGR_FORBIDDEN_TENANTS | no | Comma-separated tenant ids to always refuse, even if pinned by mistake. Put your production tenant here. |
GRAFOMEM_API | no | Base URL. Defaults to https://api.grafomem.com. |
A role handle (cc-builder@acme) is the identity a judgment is attributed to. Its agent_key is a stable Ed25519 public key, 64 hex characters — the subject the record binds to. Generate one per role:
openssl genpkey -algorithm Ed25519 -out cc-builder.pem
openssl pkey -in cc-builder.pem -pubout -outform DER | tail -c 32 | xxd -p -c 64
Keep the private half. This version does not use it — it binds to the public key only — but per-decision proof-of-possession is planned hardening, and holding the private key is what will let you prove the identity is yours.
`cgr_record_decision` — record a judgment.
| arg | |||
|---|---|---|---|
work_item_id | stable join key you choose (PR number, task id, run id) | ||
agent_handle | one of your configured role handles | ||
domain | deploy-verification \ | security-scan \ | adversarial-review |
decision | certify \ | reject | |
verifiability_tag | judgment (default) \ | rule | |
reason_code, reason_text | optional | ||
agent_confidence | optional, accepted but not yet persisted — see below |
agent_confidence is accepted by the tool schema for forward compatibility but is not currently written to the decision record. Don't rely on it being stored.
Only judgment + certify moves a score. A rule decision is deterministic and carries no reputational weight — tag honestly.
`cgr_record_outcome` — record how it turned out.
| arg | |
|---|---|
work_item_id | the same join key used at decision time |
result | a result label, e.g. deploy_succeeded, ci_failed, vuln_found, review_confirmed |
source | optional provenance string |
An unrecognised `result` is a deliberate no-op. The decision stays pending rather than being resolved on a guess — falsely resolving a decision corrupts the record permanently. Mapped labels are: deploy_succeeded, deploy_healthy, ci_passed, migration_applied, merge_landed, pr_merged, scan_clean, no_vuln_confirmed, review_confirmed, finding_correct, bug_confirmed (success); deploy_failed, deploy_rolled_back, migration_failed, ci_failed, merge_reverted, vuln_found, secret_found, review_refuted, finding_wrong, bug_not_real (failure).
GRAFOMEM_CGR_FORBIDDEN_TENANTS refuses named tenants outright.domain is sent as a dedicated field and stored server-side, per decision, in the never-encrypted CGR-readable decision parameters as cgr_domain — in the signed decision record, not in a client-side log. selftest includes a durability guard that re-reads the decision it just wrote and aborts loudly if cgr_domain did not round-trip, rather than silently recording a domainless decision.grafomem-cgr # run the stdio MCP server (the default)
grafomem-cgr setup # register your role identities on the tenant (idempotent) grafomem-cgr selftest --handle cc-builder@acme --domain deploy-verification
selftest closes the loop once — decision → durability guard → outcome → score read — and prints the movement and the meter. Run it before wiring the server into a session.
MIT licensed.