相关实践
用目录沙箱和写入门禁构建安全的本地 MCP Server
Cyanotype PR #36 展示了把文件生成 CLI 改造成安全 stdio MCP server 的完整路径。输入是 Agent 需要调用 search、validate、preview、generate 等能力,但必须阻止目录逃逸、默认禁止写入、保护手写文件,并保持 CLI/MCP 输出一致。处理过程是基于官方 Go SDK 复用 internal/ops,加入 os.Root allowlist、路径身份校验、write:true gate、replace git check、串行写调用与 stdout/stderr 隔离。产物为 38 个文件、+2486/-198,提供 8 个工具和 1 个 prompt。验证包括 Ubuntu、macOS、Windows、govulncheck 共 4 个 GitHub checks SUCCESS、0 FAILURE,以及 go build/test、lint、三平台漏洞扫描、22 组 CLI/MCP parity、路径逃逸和端到端 JSON-RPC 测试。
用 mcp-builder 构建带 OAuth 与权限隔离的只读 MCP 服务
Supercheck PR #559 展示了将已宣告但尚不可用的 MCP 能力落成安全只读服务的完整流程。输入是 discovery/consent 已存在,但缺少真正的 Streamable HTTP endpoint,同时必须限制组织、项目、角色和敏感数据边界。处理过程是实现默认关闭的 POST /api/mcp,接入 OAuth 2.1 bearer,并在每次调用复核 ban、consent 与 project role;查询使用字段 allowlist、redaction、1 MB body cap 和审计记录,CORS 仅放行 MCP headers。产物是 10 个只读工具,可访问 context、tests、jobs、runs、monitors 和 incidents。验证包括 tsc、lint、full jest 385 suites,通过 GitHub E2E Suite、Deploy Validation、Migration Safety 与多语言 CodeQL;最终 16 个 SUCCESS、2 个 SKIPPED、1 个 NEUTRAL、0 FAILURE。
用固定 mcp_tool_use 保住 deferred MCP 的 Prompt Cache
MiMo-Code PR #2684 展示了 deferred MCP 工具调度的可复用优化。输入是搜索后动态装载 MCP schema 会改变 provider-facing tool definitions,破坏 prompt-cache prefix,同时让真实工具名在权限、指标和 TUI 中丢失。处理过程是改用固定 mcp_tool_use{name,arguments} 调度 deferred tools,保持 deferred mode sticky,在 turn boundary 才发布工具增量,并在调用前做结构化参数预检、拒绝时返回 schema。产物是 11 个文件、+635/-105 的调度实现与规格:provider 工具定义保持稳定,server 尚未连接时也可暴露 search/use,真实 MCP 工具名贯穿 TUI、metrics 和 permissions。验证为 packages/cli typecheck 与相关 bun tests 通过,GitHub unit 4/4 shards、typecheck、lint 共 6 个 checks SUCCESS、0 FAILURE。
用 mcp-builder 修复 Firefox 中 MCP App 卡片的 null origin 渲染故障
logiops-ai PR #157 展示了一个可复用的 MCP App 浏览器兼容性修复闭环。输入是 Firefox 153 中无 referrer 的宿主 frame 被报告为 null origin,sandbox proxy 将其误判为外部宿主,导致 MCP App 卡片在 15 秒 readiness timeout 前无法渲染,原有 35 个 Firefox 浏览器测试失败 5 个。处理过程是升级并固定 mcp-apps-web-host 1.3.1 及其上游 commit/checksum,把同一套 browser walkthrough 测试矩阵扩展到 Firefox,同时保持 Chromium 路径不变。产物是可在 Firefox 正常加载的 MCP App card,以及可复现的 vendor 来源和 checksum。验证结果为 Firefox browser 35 passed(修复前 30 passed/5 failed)、Chromium unchanged、full suite 525 passed、upstream vendor verify 通过,GitHub 10 个 checks SUCCESS、0 FAILURE。
用真实会话审计优化 MCP 与 Skill 工具的首次调用延迟
seshat-runtime PR #735 展示了基于真实会话测量优化 MCP 与 Skill 工具加载策略的流程。输入是 MCP server 与 skill tool 默认 deferred 时首次使用都会增加一次 tool_search 模型往返,真实会话中单工具 MCP turn 约 33 秒、skill turn 28.8 秒。处理过程是运行性能审计,将定义小于 3000 bytes 的 MCP server 随请求加载,并在存在技能时预载 skill tool;大 server 和无技能场景继续 deferred,同时加入可复现实验 harness。产物是 8 个文件、+324/-4 的加载策略和审计工具改动,单工具 MCP turn 从 33 秒降到 21 秒,skill turn 从 28.8 秒降到 12.1 秒,并消除对应 tool_search 往返。验证来自真实 desktop app/z.ai glm-5.1 测量、AUDIT=1 harness,以及 Build/Test/Lint/Security/Branch Policy/Gate 6 个 GitHub checks SUCCESS、0 FAILURE。
升级 MCP 2.3 并收紧远程面板的传输与安全边界
groundskeeper PR #41 将 MCP server 从 mcp 1.x 升级到 2.3,同时保持 token、路由白名单、脱敏和 tighten-only 安全边界。过程是迁移至 MCPServer 与 streamable_http_app,关闭 subscription stream,仅开放 POST /mcp,并复核 4 MiB body limit、异常脱敏和遥测出口。产物为 5 个文件、+39/-24,服务升级至 mcp>=2.3,<3,报告 panel 版本且不暴露 OAuth、metadata 或 SSE 路由。作者记录 1276 tests、HTTP smoke initialize、31 tools 列表、读取和非法 id 拒绝;test、privacy、docker 3 个 checks 均 SUCCESS。尚未用 Claude Desktop 或 Claude Code 连接真实 panel,当前 HTTP smoke 覆盖同协议请求但不等同真实宿主验收。