关于 actionforge
actionforge 是 MCP 桥接服务,可将 ActionForge 账户中的工具提供给 Claude 和其他 MCP 客户端。它将账户工具映射为 MCP 列表与调用,并缓存工具列表 30 秒。
主要功能
- 01通过 tools/list 列出账户工具
- 02通过代理 URL 调用工具
- 03缓存工具列表 30 秒
- 04将工具故障作为可恢复结果报告
适用场景
- 01在 Claude Desktop 中提供 ActionForge 工具
- 02通过 MCP 客户端调用账户工具
MCP 相关
该服务通过 stdio 向 MCP 客户端提供 ActionForge 账户工具。它将 tools/list 映射到 GET /api/tools,并将 tools/call 映射到相应代理 URL。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y actionforge-mcpACTIONFORGE_API_KEY密钥Your ActionForge API key. Generate one from the ActionForge API or dashboard.ACTIONFORGE_URLBase URL of your ActionForge deployment. Defaults to the hosted service if unset.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
ActionForge MCP 服务
将 ActionForge 账号中的工具发布给任何 MCP 客户端使用——Claude Desktop、Claude Code,或任何支持 Model Context Protocol 的客户端。
ActionForge 可将一段描述和一对 JSON Schema 转换为托管 API 端点。你只需描述所需的函数,它便会生成实现、将其部署为无服务器函数,并返回经过验证的 URL。每个工具都是输入的纯函数——生成的代码会在部署前接受扫描,如果访问网络或在运行时执行代码,就会被拒绝。
此软件包是 MCP 桥接层:你的端点会变成 Claude 可直接调用的工具。它没有运行时依赖——仅使用 stdio、fetch,总共约 500 行代码。
在 pritas.github.io/actionforge_ui 获取 API 密钥。
映射关系几乎一一对应,因此这个封装很轻量:ActionForge 工具本身就是 MCP 工具——包含名称、描述、输入 JSON Schema 和输出 JSON Schema。tools/list 会读取 GET /api/tools;tools/call 会向工具的代理 URL 发送请求。
此实现直接依据 2025-06-18 协议架构,而非通过 SDK 实现。这样安装时只需一个软件包,且没有任何下层依赖;所有分支都能在离线状态下测试——npm run smoke 会通过 stdio 对一个关闭的端口运行已编译的服务,因此无需账号即可检查握手、通知所需的静默行为以及传输故障处理。
安装
npx actionforge-mcp
没有运行时依赖——整个服务仅使用 stdio、fetch,总共约 500 行代码。除了 Node 20.12+,无需安装其他内容。
若要从此仓库的本地检出版本安装:
npm install
npm run build
node dist/server.js
配置
export ACTIONFORGE_URL=https://your-deployment.example.com
export ACTIONFORGE_API_KEY=af_... # from POST /api/signup, or npm run keygen
npx actionforge-mcp
所有已发布的内容都限定在该密钥对应的账号范围内。换用其他密钥,就会发布另一个租户的工具——API 会强制实施此范围限制,因此 MCP 服务无法访问该范围之外的内容。
传输方式为 stdio,使用以换行符分隔的 JSON。stdout 仅承载协议帧;所有日志都发送到 stderr,因为其他内容会破坏客户端正在解析的数据流。
Claude Desktop
claude_desktop_config.json:
{
"mcpServers": {
"actionforge": {
"command": "npx",
"args": ["-y", "actionforge-mcp"],
"env": {
"ACTIONFORGE_URL": "https://your-deployment.example.com",
"ACTIONFORGE_API_KEY": "af_..."
}
}
}
}
Claude Code
claude mcp add actionforge \
--env ACTIONFORGE_URL=https://your-deployment.example.com \
--env ACTIONFORGE_API_KEY=af_... \
-- npx -y actionforge-mcp
如何报告故障
本服务严格遵循协议对以下情况的区分,因为这决定了模型能否自行恢复:
| 情况 | 报告为 | 原因 |
|---|---|---|
参数未通过工具的 input_schema 验证(400) | isError: true 的结果 | 模型可以读取验证详情并修正调用 |
| 工具尚未就绪(503) | isError: true 的结果 | 暂时性故障——稍后重试 |
| 请求过于频繁(429) | isError: true 的结果 | 包含需要等待的时长 |
工具已运行,但未通过自身的 output_schema 验证(502) | isError: true 的结果,并在工具中标记为故障 | 问题不在模型提供的参数 |
| 工具不存在(404)或工具名称未知 | JSON-RPC 错误 | 模型无法修正;客户端应重新列出工具 |
| 无法连接到 ActionForge | JSON-RPC 错误 -32603 | 传输故障,不是工具结果 |
凡是模型能够采取行动的内容,都会保留在结果中,供模型查看。只有真正异常的情况才会成为协议错误。
缓存
工具列表会缓存 30 秒;一旦发现某个工具已不存在,就会立即清除缓存——因此,已删除的工具会在下一次列出时消失,而不会一直保留到 TTL 过期。
发布
npm run build && npm run smoke
npm publish --access public
dist/ 已加入 gitignore——它是构建产物,会由 prepublishOnly 重新构建,因此 npm 收到的始终是从已提交的源代码编译而来。
每次发布前都要提升 version;npm 不允许覆盖已发布的版本。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。