StudioMeyer MCP Stack 的一部分 — 在 Mallorca 构建 🌴 · 如果使用请 ⭐
直接回应:
child_process.exec() 命令注入的 Serverless Framework MCP 远程代码执行。此包提供了 Anthropic 选择不提供的内容:对服务器允许暴露哪些工具以及允许进行哪些 spawn 调用的密码学验证。它是一个即插即用的依赖,而不是运行时的替代品。
在过去两年里,我们一直在为自己构建工具和系统。这个仓库很小且星标很少,并不是因为它很新。而是因为我们才刚刚决定分享我们构建的东西。这不是一个全新的实验,这是一个有着最近提交的长久故事。
我们喜欢构建和分享东西。我们不喜欢社交媒体策略、增长黑客或追逐星标和关注者。所以这个仓库很小。代码是真实的,正在被使用,问题会得到回复。请自行判断。
如果对你有帮助,分享、测试和反馈对我们有帮助。如果可以更好,提一个 issue 更有用。如果你用它构建了什么东西,请告诉 [email protected]。这真的会让我们开心。
来自马略卡岛帕尔马的一个小工作室。
npm install mcp-server-attestation
# CLI:
npm install -g mcp-attest-cli
# Reference MCP server:
npx mcp-attest-demo
Node 20+。无外部加密依赖——使用 node:crypto Ed25519 原语。
import { verifyManifestStrict, attestSpawnStrict, type SignedManifest } from "mcp-server-attestation";
import signed from "./signed/manifest.json" assert { type: "json" };
// 1. At startup: prove the manifest you ship is the manifest you signed.
verifyManifestStrict(signed);
// 2. Before every child_process.spawn:
attestSpawnStrict(signed as SignedManifest, { command, args });
这就是整个集成。两个函数调用,无需 SaaS,无需守护进程。
如果你更愿意在每次 spawn 时重新验证签名(防御深度,防止未经验证或已交换的清单到达网关),请改用单个故障安全调用——它先验证再认证:
import { attestSpawnVerified, type SignedManifest } from "mcp-server-attestation";
attestSpawnVerified(signed as SignedManifest, { command, args });
mcp-attest-demo)注释是诚实的:attest_sign_manifest 和 attest_keygen 在磁盘上写入文件,因此不是只读的,但不会销毁现有数据,因此 destructiveHint 保持为 false。有关每个工具的能力表,请参阅 docs/THREAT-MODEL.md。
mcp-attest keygen --out-dir ./keys --name prod
mcp-attest sign --manifest manifest.json --private-key keys/prod.key --out signed.json
mcp-attest verify --signed signed.json --pin # TOFU pin
mcp-attest verify --signed signed.json --sigstore # opt-in Rekor cross-ref
mcp-attest inspect --signed signed.json --command /usr/bin/echo --arg "hello"
mcp-attest fingerprint --public-key keys/prod.pub
mcp-attest check-pin --server my-server --signed signed.json
verify 在签名错误时退出代码 2,在引脚不匹配时退出代码 3。
| 规范版本 | 状态 |
|---|---|
| 2024-11-05 | 可在清单中解析,不是参考服务器的目标 |
| 2025-03-26 | 可在清单中解析,不是参考服务器的目标 |
| 2025-06-18 | 完全目标 |
该库与传输无关。参考服务器仅支持 stdio。
~/.mcp-attest/trust.json(可通过 MCP_ATTEST_TRUST_FILE 覆盖)。后续验证将拒绝同一服务器名称的任何新密钥,错误为 TRUST_PIN_MISMATCH。这可以捕捉 Cursor 风格的恶意更新向量。--sigstore 将公钥指纹与 Sigstore Rekor 透明度日志进行交叉引用。shellSafeString 会阻止每个 ASCII shell 元字符、NUL、CR、LF、VT、FF、NEL、零宽度字符、BOM、RTL/LTR 覆盖符、Trojan-Source 隔离符和全角拉丁语易混淆字符。白名单行为需要显式的 regex / enum / prefix / literal 规则类型。regex 规则。 一个 regex 规则的模式由作者签名,但参数值由攻击者控制。清理器会静态检测容易导致回溯的模式(如嵌套的无界量词 (a+)+)并拒绝运行它们,因此单个精心构造的参数不会冻结 spawn 热路径。regex 规则还带有一个输入长度上限(默认 4096)。此包不做什么(不在范围内):
mcp-oauth-shield 构建)。npm install
npm run typecheck
npm test
测试语料包括 CVE 重放固定数据(packages/lib/tests/fixtures/cve-2025-69256-payloads.json、cve-2025-61591-payloads.json)。构建是一个回归检查:每个有效负载都必须被阻止。
--provenance。mcp-server-attestation 单独发布。StudioMeyer 是一家位于马略卡岛帕尔马的人工智能与设计工作室,与全球客户合作。我们为中小企业构建定制网站和 AI 基础设施。生产栈使用 Claude Agent SDK、MCP 和 n8n,并结合 Sentry、Langfuse 和 LangGraph 进行可观测性,以及内部防护层。
MIT,版权 2026 Matthias Meyer (StudioMeyer)。参见 LICENSE。
| Package | 用途 |
|---|
mcp-server-attestation (packages/lib) | 库:Ed25519 签名/验证、清单模式、清理器、spawn 认证、TOFU 信任存储。 |
mcp-attest-cli (packages/cli) | CLI mcp-attest:keygen、sign、verify、inspect、fingerprint、check-pin。 |
mcp-attest-demo (packages/demo-server) | 参考 MCP 服务器(stdio,规范 2025-06-18),暴露了 5 个演示该库的工具。 |
| # | 名称 | 只读提示 | 破坏性提示 |
|---|
| 1 | attest_verify_manifest | true | false |
| 2 | attest_inspect_spawn | true | false |
| 3 | attest_generate_manifest_template | true | false |
| 4 | attest_sign_manifest | false | false |
| 5 | attest_keygen | false | false |
prefix 规则。 prefix 规则默认拒绝 .. 路径组件(denyTraversal: true,包括 %2e%2e 编码形式),因此即使满足 prefix: "/safe/",/safe/../../etc/passwd 也会被阻止。attestSpawnVerified 在认证 spawn 之前检查清单签名,使用一个故障安全调用——除非你已测量过每个 spawn 的 Ed25519 验证在真正的热循环之外,否则请使用它而不是 attestSpawnStrict。