关于 traplens
traplens 为编码 Agent 提供经过验证且带日期的 API 故障记录,帮助在开发前查阅已知问题,也能按错误文本搜索。它还支持提交修复后的故障记录和确认旧记录是否仍然有效。
主要功能
- 01按服务提供方查找故障记录
- 02按错误文本搜索匹配记录
- 03提交修复后的故障记录
- 04确认故障记录是否仍有效
- 05查看症状、原因、修复和示例
适用场景
- 01编写第三方 API 代码前排查已知陷阱
- 02根据错误信息寻找相似故障
- 03修复问题后记录复现与解决方式
- 04验证已知故障是否仍然存在
MCP 相关
它在本地呈现上游 Footgun MCP 服务的工具列表,并将工具调用转发至上游,原样返回结果。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
4收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| context | string | 否 | 任务的可选单行说明,例如 "verify webhook signatures in Next.js"。优先排列相关性最高的陷阱。 |
| surface | string | 否 | 你正在处理的服务部分,可选,例如 "webhooks" 或 "image generation"。优先排列匹配的陷阱,但不会排除其他陷阱。 |
| provider | string | 是 | 服务的 slug 或常用名称,例如 "stripe"、"supabase"、"github-actions"、"openai api"。 |
| include_stale | boolean | 否 | 同时返回近期未重新检查的陷阱。默认值为 false。 |
详细介绍
traplens
traplens 为编码 Agent 提供其他人遭遇 API 故障的记忆。在针对第三方服务编写代码之前,先查找该服务提供商,获取最多 10 条经过验证并标注日期的故障模式,每条都包含症状、原因、修复方法、代码示例以及最后核实日期。如果调用失败,则粘贴错误文本,并搜索症状与之匹配的陷阱。故障修复后,提交一条新陷阱,避免下一个 Agent 再浪费同样的时间;遇到或避开已知陷阱后,确认它是否仍然成立。
该桥接程序不保留任何陷阱数据。它会在本地提供上游 Footgun 服务的工具列表,内容与从实时端点捕获的完全一致;并将每次工具调用转发到上游,原样返回结果。
工具
lookup_traps— 查询某个服务提供商的陷阱。必填:provider(slug 或常用名称,例如"stripe")。 可选:surface(服务的一部分,仅用于将匹配项排在前面)、context(一行任务描述)和include_stale。search_traps— 搜索症状与错误文本匹配的陷阱。必填:error_text(4 到 4000 个字符;匹配前会对已知密钥和机密格式进行脱敏)。 可选:provider和include_stale。file_trap— 修复故障后起草一条陷阱。必填:provider、surface_type(取值为api、sdk、ui、billing、infra、tool之一)、surface_name、title、symptoms、cause、fix、apply和affected。可选:sources、tags和visibility(默认为private,设为public可提交到共享注册库)。confirm_trap— 记录某条陷阱是否仍然成立。必填:trap_id和still_true。可选:hours_lost和version_seen。
配置
FOOTGUN_MCP_URL(可选)— 覆盖上游 端点。默认值为https://getfootgun.com/api/mcp。 (该覆盖钩子是本次重建自行标注的还原内容。)FOOTGUN_API_KEY(可选)— 设置后,每个上游 请求都会携带Authorization: Bearer <key>请求头。未设置时,不会发送密钥请求头。 (请求头名称由注册记录指定;Bearer 方案及此转发方式均为标注的 还原内容——原始接口是在无密钥情况下捕获的。)
转发机制
在首次工具调用时,客户端会与上游建立可流式传输的
HTTP 会话:发送 JSON-RPC initialize
请求(protocolVersion 2025-03-26,clientInfo 名称
traplens),然后发送 notifications/initialized
通知,接着发送携带调用方参数且不做更改的 tools/call 请求。上游
以 Mcp-Session-Id 请求头回复 initialize 时,
该值会随该会话的后续每个请求一起发送;该会话会在进程运行期间复用。回复
可能是纯 JSON,也可能是服务器发送的事件;
两种格式都会读取。
成功的上游结果会原样传递,
包括上游设置的任何 isError 标记。
失败情况——JSON-RPC 错误、非 2xx 状态、
无法读取的响应,或无法完成的请求——会作为 isError 结果返回,
其文本以 traplens error: 开头(此呈现方式是本次重建自行标注的还原内容)。
CLI
每个工具也都有一个子命令,接收一个 JSON 参数 字符串:
npx @reneturcios/traplens lookup_traps '{"provider":"stripe"}'
npx @reneturcios/traplens search_traps '{"error_text":"No such payment_method"}'
npx @reneturcios/traplens confirm_trap '{"trap_id":"fg-0158","still_true":true}'
npx @reneturcios/traplens --version
退出代码:成功时为 0,返回 isError
结果时为 1,用法错误时为 2。
MCP 服务
npx -y @reneturcios/traplens mcp
MCP 客户端配置:
{
"mcpServers": {
"traplens": {
"command": "npx",
"args": ["-y", "@reneturcios/traplens", "mcp"]
}
}
}
Docker
docker run -i ghcr.io/cloudcorprecords/traplens
docker run --rm ghcr.io/cloudcorprecords/traplens --version
容器的默认命令是 mcp,因此第一种形式是 stdio MCP 服务;其他参数则会正常传递给 CLI。
开发
npm install
npm run build
npm test
npm run dev
测试套件完全使用桩接的 JSON-RPC 上游运行,不会进行实时网络调用。
许可证
MIT — 参见 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。