Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
Governance and audit layer for AI agents: policy, approvals, tamper-evident audit chains.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
MNEMOPAY_API_KEY, MNEMOPAY_PERSIST_DIR标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"sdk": {
"command": "npx",
"args": [
"-y",
"@mnemopay/sdk"
],
"env": {
"MNEMOPAY_API_KEY": "your-value",
"MNEMOPAY_PERSIST_DIR": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add sdk --env MNEMOPAY_API_KEY=your-value --env MNEMOPAY_PERSIST_DIR=your-value -- npx -y @mnemopay/sdk运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"sdk": {
"command": "npx",
"args": [
"-y",
"@mnemopay/sdk"
],
"env": {
"MNEMOPAY_API_KEY": "your-value",
"MNEMOPAY_PERSIST_DIR": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"sdk": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@mnemopay/sdk"
],
"env": {
"MNEMOPAY_API_KEY": "your-value",
"MNEMOPAY_PERSIST_DIR": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
MNEMOPAY_PERSIST_DIR env这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月6日
注册名称已通过域名 mnemopay.com 验证(注册中心会核实域名所有权)
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
你需要填写:MNEMOPAY_API_KEY
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(1.15.2)于3天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。
同一分类中有:Spec Driven Development, Remote Desktop Commander, Fomu 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.
Kenya government form guides: checklists, draft letters, eCitizen, Huduma, timelines. Sample data.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
The governance layer for AI agents that take consequential actions. Charter-driven mission scope, policy enforcement with human-in-the-loop approvals, FiscalGate budget enforcement, EU AI Act Article 12 audit bundles, Agent Reputation Scoring (300-850), and a tamper-evident MerkleAudit chain — whether the action moves money or changes infrastructure.
MnemoPay sits above the rail (Stripe, Paystack, Lightning, Stripe MPP, x402, Google AP2) and below the agent runtime (LangChain, CrewAI, Claude Agent SDK, your own loop). The rail moves money. The runtime decides. MnemoPay declares the rules, enforces the budget, and produces the evidence.
Payments are one kind of consequential action. The same charter, policy, approval and audit path governs operational tooling too — the primitives do not care whether the step settles a payment or drains a node.
npm install @mnemopay/sdk
New here? Start at
docs/QUICKSTART.md— 60 seconds, three steps, working code.
Docs: Quickstart · Architecture · Permissions · Action ledger · Integrations (OpenAI/Anthropic/Gemini/Cohere/Mistral/LangGraph) · Recall · FiscalGate · Audit bundles (EU AI Act Art. 12) · Subpath import rule · Claude Agent SDK guide · Bundlers: Vite · Webpack · Bun
Community: LICENSE (Apache 2.0) · CHANGELOG · CONTRIBUTING · CODE_OF_CONDUCT · SECURITY · Discussions · Good first issues
Receipts: Trust hub (entity, KYB, Apple Team ID, Article 12 audit chain — verify in <5 min) · Benchmarks (1M ops, 100% adversarial detection, $0 ledger drift) · Python SDK on PyPI (Mock/Stripe/Paystack/Lightning rails, scoring and
AuditChain; Charter, FiscalGate and Article 12 are TypeScript-only so far)
import MnemoPay, {
Charter, FiscalGate, MerkleAudit, // governance primitives AgentReputationScoring, BehavioralEngine, // trust + reputation StripeRail, X402Rail, GoogleAP2Rail, // rails } from "@mnemopay/sdk";
const agent = MnemoPay.quick("my-agent");
await agent.remember("User prefers monthly billing"); const tx = await agent.charge(25, "Monthly API access"); // FiscalGate hold await agent.settle(tx.id); // FiscalGate capture
// Agent Reputation Score — portable, 300-850 range. NOT FICO-brand, NOT a consumer // credit report, NOT governed by FCRA. Scores agents (software), not humans. const scorer = new AgentReputationScoring(); const result = scorer.compute({ transactions: [tx], createdAt: new Date(), /* ... */ }); // → { score: 672, rating: "good", feeRate: 0.015, trustLevel: "standard" }
Native Node ESM (`.mjs` or `"type": "module"`): the package is CommonJS, so a default import yields the whole module object. Use the named export instead:
import { MnemoPay, Charter } from "@mnemopay/sdk", thenMnemoPay.quick(...). The default-import form above works in TypeScript and bundlers.
14 modules. Hash-chained ledger. Charter / FiscalGate / Article 12 audit bundles. 6 payment rails. 200K-operation stress tested. Apache 2.0.
What MnemoPay is NOT: not a bank, not a money transmitter, not a Stripe replacement, not an agent framework, not a compliance platform. It's the rules-and-evidence layer between the rail and the runtime.
"Sub-second governance" is a tested invariant, not marketing. The bench in tests/bench/governance-latency.bench.ts measures each governance hot path with vitest bench and emits a grep-able [gov-bench] summary line per scenario. Numbers below are steady-state percentiles from npm run bench:governance (run on the dev machine — your hardware will differ; the relative ordering is what matters).
| Hot path | p50 | p95 | p99 | machine |
|---|---|---|---|---|
policy.evaluateAction (EU AI Act, single tool_call) | 2.1 µs | 2.8 µs | 5.0 µs | Intel i5-1035G1 @ 1.0 GHz · Node 25.9 · Windows 11 |
MerkleAudit.record (append + chain hash) | 20 µs | 45 µs | 150 µs | Intel i5-1035G1 @ 1.0 GHz · Node 25.9 · Windows 11 |
MnemoPayLite.remember() end-to-end with auto-anchor (Ed25519) | 1.0 ms | 1.7 ms | 2.5 ms | Intel i5-1035G1 @ 1.0 GHz · Node 25.9 · Windows 11 |
Both per-event hot paths (evaluateAction, MerkleAudit.record) clear an entire EU AI Act policy gate and audit-chain write two orders of magnitude inside one millisecond. The end-to-end remember() path — including Ed25519 sign + sequence + chain emit — still sits comfortably inside the "sub-second governance" envelope with three decimal-orders of headroom.
A CI-enforced guard spec in tests/governance/latency-invariant.test.ts runs a degraded-mode sample on every npm test and fails if p95 for policy.evaluateAction regresses past 1 ms, or MerkleAudit.record past 5 ms. Bounds are sized to catch a ~10x regression, not flap on jitter.
How to reproduce: npm run bench:governance (full vitest.bench harness) or npm test -- latency-invariant (CI-bound check).
Every rail ships with the same PaymentRail interface as StripeRail / PaystackRail / LightningRail:
| Rail | What it is |
|---|---|
| `StripeMPPRail` | Stripe Machine Payments Protocol — agent payments routed as crypto deposits on the Tempo network via Stripe-pinned API 2026-03-04.preview |
| `X402Rail` | Coinbase x402 (HTTP 402 revival) — USDC on Base L2 via EIP-3009 transferWithAuthorization. Pluggable signer (bring-your-own viem/ethers/noble). Zero crypto deps in the SDK. |
| `GoogleAP2Rail` | Google Agent Payment Protocol (FIDO Alliance, AP2 v0.2). Mandate VC + Intent VC + HTTP settlement. Pre-flight policy enforcement (caps, expiry, currency, recipients) before any signature is produced. |
Plus the Spatial governance fold — attachSpatialEvidence() co-signs the MerkleAudit chain with GridStamp proof-of-presence for embodied agents (drones, robots). Loose-coupled — no gridstamp runtime dependency.
If you only need one MnemoPay module, import that subpath instead of the package root. This keeps MCP servers and other stdio tools quiet, avoids pulling unused middleware into bundles, and makes the dependency boundary obvious.
import { localEmbed, cosineSimilarity } from "@mnemopay/sdk/recall";
import { StripeRail, X402Rail } from "@mnemopay/sdk/rails"; import { SQLiteStorage } from "@mnemopay/sdk/storage"; import { CommerceEngine } from "@mnemopay/sdk/commerce";
Use the root import when you want the full SDK surface. Use @mnemopay/sdk/mcp only when you are intentionally mounting the MnemoPay MCP server.
@mnemopay/sdk/swarm is the missing piece that browse.sh shipped as a public skill catalog. Ours adds the bit they don't: every agent in the swarm carries a DID, every action is FiscalGate-prechecked against per-agent + total caps, every TaskResult is appended to a shared Article-12 audit chain, and every skill invocation is billable through the same hash-chained ledger the rest of the SDK already uses.
CLI: npx @mnemopay/swarm list · npx @mnemopay/swarm demo — see mnemopay-swarm.
import { Swarm } from "@mnemopay/sdk/swarm";
import { AuditChain } from "@mnemopay/sdk/governance"; import { open } from "@mnemopay/browser"; // any BrowserProvider works
const provider = await someProviderFactory(); const swarm = new Swarm({ size: 4, provider, did: "did:mp:abc...", budget: { perAgent: 0.25, total: 1.00 }, audit: { chain: new AuditChain() }, });
const run = await swarm.spawn([ { id: "t1", skillId: "ramp.com/expense-create", prompt: "submit $42 lunch" }, { id: "t2", skillId: "linear/issue-create", prompt: "file UI bug" }, { id: "t3", skillId: "cloudflare/dns-record-set", prompt: "add CNAME" }, ]);
const results = await swarm.gather(run); const final = await swarm.recombine(results, "merge-json");
When to use it. Any time you'd open N parallel browser sessions to attack a problem — multi-source research, cross-platform issue triage, A/B-style "ask three agents, take the majority answer" — but you want one audit bundle, one budget envelope, and one place where billing happens.
Three recombine strategies (plus your own).
first-success — returns the output of the first ok:true task; perfect for race patterns where any answer is fine.majority-vote — returns the most-common output across ok:true tasks; perfect for fact-extraction where consensus matters.merge-json — deep-merges every ok:true object output with sorted keys (deterministic across runs).concat — joins string outputs with \n in spawn order.(results) => unknown callback.Skill catalog. Public listings live at mcp.mnemopay.com/skills. The catalog is intentionally small and honestly marked — verified-partner badges only show after a real partnership is signed. Everything else carries verified: false, status: 'pending-partner' so you know exactly what trust tier you're getting.
@mnemopay/sdk/swarm/browser extends Swarm with a typed step sequence (goto / act / extract / screenshot / wait) per task and a lazy wire to @mnemopay/browser (optional peer dep — installing the SDK does NOT pull Playwright). Each task gets its own browser session, every step appends a browser.step event to the shared audit chain, and a thrown step kills only that one task — sibling sessions keep running.
import { BrowserSwarm } from "@mnemopay/sdk/swarm/browser";
const swarm = new BrowserSwarm({ size: 3, provider: undefined as never, budget: { perAgent: 0.25, total: 1.00 }, browser: { provider: "stagehand" }, }); const run = await swarm.spawn([ { id: "amzn", prompt: "amazon price", steps: [{type:"goto", url:"https://amazon.com/dp/X"}, {type:"extract", selector:"#priceblock_ourprice"}] }, { id: "bby", prompt: "best buy price", steps: [{type:"goto", url:"https://bestbuy.com/site/X"},{type:"extract", selector:".priceView-customer-price"}] }, { id: "tgt", prompt: "target price", steps: [{type:"goto", url:"https://target.com/p/X"}, {type:"extract", selector:"[data-test=product-price]"}] }, ]); const results = await swarm.gather(run); // BrowserTaskResult[] with .screenshots + .extractedData
File issues at github.com/mnemopay/mnemopay-sdk.
.audit(client) with streaming + on-di只显示了开头部分;其余内容请在仓库中阅读