关于 FoundryNet — Industrial Machine Intelligence
FoundryNet 是面向工业运营人员和 Agent 的托管 MCP 服务,支持跨制造商机器数据处理。它可规范化遥测数据、管理自动化与预测,并为状态变更操作生成防篡改记录。
主要功能
- 01规范化跨制造商遥测数据
- 02管理机器身份与历史记录
- 03创建并启用自动化
- 04预测故障并评估设备群健康度
- 05验证防篡改工作记录
适用场景
- 01比较不同 OEM 机器的遥测数据
- 02查看运行历史与设备群健康度
- 03将自然语言指令转为自动化
- 04验证已完成机器作业的记录
MCP 相关
通过 Streamable HTTP 向 MCP 客户端提供 32 个工具,也支持旧版 SSE 端点。工具涵盖机器数据、自动化、预测、运营及工作记录验证。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://foundrynet-mcp-production.up.railway.app/mcpclaude mcp add --transport http foundrynet-forge https://foundrynet-mcp-production.up.railway.app/mcp{"mcpServers":{"foundrynet-forge":{"type":"http","url":"https://foundrynet-mcp-production.up.railway.app/mcp"}}}在 Cursor 中打开{"servers":{"foundrynet-forge":{"type":"http","url":"https://foundrynet-mcp-production.up.railway.app/mcp"}}}在 VS Code 中打开{"mcpServers":{"foundrynet-forge":{"type":"http","url":"https://foundrynet-mcp-production.up.railway.app/mcp"}}}{"mcpServers":{"foundrynet-forge":{"serverUrl":"https://foundrynet-mcp-production.up.railway.app/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
Forge by Foundry Labs — 工业机器智能
跨制造商工业 MCP 服务。使用自然语言与任何 CNC、机器人或工业机器交谈——机器身份、覆盖 20 个垂直领域的 46 个供应商包中的遥测数据规范化、通俗易懂的自动化,以及防篡改工作记录。
通过 Streamable HTTP 提供托管 MCP。32 个工具封装 Forge v1 API:配置稳定的机器身份,将原始 OEM 遥测数据规范化为规范架构,查询运行历史,解析并激活通俗易懂的自动化,预测故障(TimesFM),评估设备群健康状况,并将每项改变状态的操作记录为可验证、防篡改的工作记录。
- 网站: https://foundrynet.io/?utm_source=github&utm_medium=readme&utm_campaign=forge-mcp-readme
- 文档: https://foundrynet.io/docs?utm_source=github&utm_medium=readme&utm_campaign=forge-mcp-readme · 免费密钥: https://foundrynet.io/signup?utm_source=github&utm_medium=readme&utm_campaign=forge-mcp-readme
- MCP 端点(Streamable HTTP):
https://mcp.foundrynet.io/mcp - 旧版 SSE 端点(仍在提供服务):
https://mcp.foundrynet.io/sse - 健康状态:
https://mcp.foundrynet.io/health - 服务卡片:
https://mcp.foundrynet.io/.well-known/mcp/server-card.json
功能介绍
它会将来自 18 个制造商系列的原始 OEM 遥测数据规范化为统一的规范词汇,其中包含数千条已确认的字段映射——因此无论机器是 Fanuc CNC、KUKA 机械臂还是 Universal Robots 协作机器人,Agent 都只需针对同一组字段名称编写代码。此外,它还会将通俗易懂的指令转换为结构化自动化(先审核再激活),并将每项改变状态的操作记录为防篡改工作记录。
架构
纯 HTTP 代理。每个工具都是对 https://forge.foundrynet.io/v1/* 的轻量封装。无状态,不与 forge-prod 共享导入项——使用独立的 Railway 服务和独立的依赖项(fastmcp + httpx)。
Claude Desktop / agent
│ Streamable HTTP (/mcp) — or legacy SSE (/sse)
│ Authorization: Bearer <the CALLER's Forge API key>
▼
foundrynet-mcp on Railway
│ gate: validate key → tier → cap → bind caller
│ HTTPS, Authorization: Bearer <the SAME caller's key>
│ X-Forge-Caller-Key-Id: <their forge_api_keys.id>
▼
forge.foundrynet.io/v1/* — scopes every row to that caller
租户隔离。 上游调用以调用者身份发起,而不是以本服务身份发起。过去,每个调用者的请求都会使用服务自己的 FOUNDRYNET_API_KEY 发起,且不会标识调用者:forge-prod 会将数据行限定在已认证密钥的所有者范围内,因此每个 MCP 租户都在同一个共享 Forge 账户中读取和写入数据;而 fleet_oee、shift_report、list_agents 和 prediction_accuracy 不接受机器参数,因此会返回该账户中的全部数据。现在,如果无法标识调用者,上游请求就会被拒绝:没有后备方案,因为唯一的后备方案就是共享密钥。OAuth 访问令牌包含密钥 ID,但不包含密钥,因此无法提交给上游,在调用工具时会因 tenant_context_unavailable 而被拒绝。
POST /a2a/tasks 和 GET /a2a/agents 会根据技能→工具映射,经过与 tools/call 相同的门控函数(gating.enforce_call)。此前,这两个路由会先对调用者进行身份验证,然后不检查层级、不设上限,也不经过付费门控就进行分发,导致 A2A 路由可绕过付费门控,免费使用推理工具。
测试与发布门禁
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt pytest pytest-asyncio
.venv/bin/python -m pytest tests/ -q # 229 checks
scripts/release_gate.sh # tree, deps, import, suite, version
测试套件会通过真实的 Streamable HTTP 和真实的门控层驱动实际 ASGI 应用;只有 Supabase 和上游请求会被替换,而且上游替代项会记录请求,因为最值得断言的正是本服务向 forge-prod 声明了什么身份。tests/test_rest_mcp_parity.py 会从 forge-prod 自身的 _endpoint_to_billing_meter 测量免费层级的对等性;测试时会直接读取其源代码,而不是复制代码。
CI 会在每次推送和拉取请求时运行整个代码树(.github/workflows/release-gate.yml,固定使用 ubuntu-24.04):实测结果为 223 passed, 6 skipped, 229 collected,耗时 2m04s。6 个跳过项是读取本地磁盘上 forge-prod 的 api.py 的检查——5 项对等性检查和 1 项成本账本单写入者检查。它们会明确跳过并打印原因,因为 forge-prod 属于独立的私有仓库,不在运行器上。明确显示跳过,胜过对一个被悄然移除的检查打出绿色勾号。
部署
cd ~/forge-mcp && git checkout main && git pull --ff-only && ./deploy.sh
切勿手动运行 railway up。deploy.sh 会依次执行七项操作,其中五项是为了应对曾经发生过的特定部署故障:
- 如果工作区不干净或当前分支不是
main,则拒绝部署——railway up上传的是工作区,因此存在未提交更改时,没有任何提交能说明实际部署的内容; - 运行
scripts/release_gate.sh,如果检查未通过则拒绝部署。我们特意不提供覆盖此检查的标志; - 获取部署锁(
~/.forge-mcp-deploy.lock,通过原子mkdir实现),避免两个并发部署在上传和验证时发生冲突; - 如果
railway up会归档错误的目录,则拒绝部署。它会从~/.railway/config.json中选择最近的已关联项目目录,向上逐级查找——而不是使用$PWD。这个目录曾继承$HOME的关联配置,而该配置指向的是另一个服务; - 运行
stamp_build.py,写入build_info.json(包含提交、脏状态、上传文件集的content_hash和构建时间); - 运行
railway up --service 162115b7-…——明确指定 ID,因为单独运行railway up会根据同一祖先目录中的关联配置解析服务; - 轮询
https://mcp.foundrynet.io/health,直到build.commit_short和build.content_hash均与刚写入的版本标记一致,然后断言状态。Railway 报告 SUCCESS 只表示上传和构建成功——如果新容器陷入崩溃循环,旧容器仍会继续提供服务,看起来就像部署成功了一样。除了提交外还要检查content_hash,因为railway up上传的是一个文件树:相同的提交搭配不同的文件树,就是不同的部署。
/health 包含一个 build 块,其键名与 forge-prod 的相同,因此同一个验证器可以检查这两个服务。如果缺少 build_info.json,它会用文字明确说明:build_info.json absent — deploy did not run stamp_build.py,并将 commit、content_hash 和 built_at 设为 null——因为看起来像字段缺失的 null,无法与已写入版本标记的构建区分开来。
工具(32 个)
身份与数据:identify_machine、normalize_telemetry、query_machine_history、get_coverage、correct_mapping。自动化:create_automation、activate_automation、list_automations、disable_automation、delete_automation、restore_automation、query_webhook_history。预测(TimesFM):predict、predict_breach、remaining_life、predict_batch、fleet_health、detect_anomalies、machine_intelligence、prediction_accuracy。运维:calculate_oee、fleet_oee、energy_consumption、shift_report、diagnose_machine、health_index。防护机制:check_guardrail、list_guardrails。内核上的 Agent:get_agent_card、list_agents。工作记录:verify_record。演示:fire_sandbox(完整的观察 → 开火 → 结算流程,无卡片)。
get_agent_card 和 list_agents 仅针对连接到你内核实例的 Agent(包括其能力、信任评分和机器访问权限),并已包含在你的订阅中——每次调用不另行收费。它们是用于协调你自有设备上 Agent 的运维工具,并非用于跨平台发现。如需了解适用于任何框架的跨平台 Agent 信任机制,请访问 Assay(assay.foundrynet.io)。verify_record 会为已完成的工作创建防篡改且经过哈希验证的记录。
免费套餐提供只读工具;按用量付费可解锁高级预测和诊断工具(参见 https://forge.foundrynet.io/pricing?utm_source=github&utm_medium=readme&utm_campaign=forge-mcp-readme)。
连接(Claude Desktop、Cursor、任意 MCP 客户端)
claude mcp add --transport http foundrynet-forge \
https://mcp.foundrynet.io/mcp \
--header "Authorization: Bearer fnet_YOUR_KEY"
也可以通过 mcp-remote 桥接程序,在 claude_desktop_config.json 中配置:
{
"mcpServers": {
"foundrynet-forge": {
"command": "npx",
"args": ["-y", "mcp-remote",
"https://mcp.foundrynet.io/mcp",
"--header", "Authorization:Bearer ${FNET_KEY}"],
"env": { "FNET_KEY": "fnet_… (get a free key at foundrynet.io/signup)" }
}
}
}
我们仍支持旧版 SSE(针对 https://mcp.foundrynet.io/sse 使用 --transport sse),以兼容现有配置,但新的集成应使用上述 Streamable HTTP /mcp 端点。
在 https://foundrynet.io/signup?utm_source=github&utm_medium=readme&utm_campaign=forge-mcp-readme 免费获取 fnet_ 密钥(可调用 50 次 normalize,无需绑定卡片)。
必需环境(服务端)
| 变量 | 必需 | 默认值 |
|---|---|---|
FOUNDRYNET_API_KEY | 工具调用路径不再使用 | 仅用于启动时的配置报告;工具调用使用调用者自己的密钥 |
SUPABASE_URL / SUPABASE_SERVICE_KEY | 门控功能必需 | 未设置 = 禁用门控,默认放行 |
MCP_JWT_SECRET | 否 | 未设置 = 禁用 OAuth 令牌签发(503),密钥认证不受影响 |
FORGE_BASE_URL | 否 | https://forge.foundrynet.io |
PORT | 否 | 8080(Railway 会自动设置) |
REQUEST_TIMEOUT | 否 | 120(秒) |
文件
mcp_server.py— 服务端(32 个工具 +/health+/.well-known/mcp路由)gating.py— 按客户端分级的门控(强制执行 Free 与 Pro 工具/配额限制)server.json— MCP 注册表元数据(名称、描述、关键词、远程端点)smithery.yaml— Smithery 列表元数据requirements.txt—fastmcp>=3.4.5,<4、httpx>=0.27、PyJWT>=2.14.0、supabase、stripetests/— 行为测试套件(认证、租户隔离、对等性、幂等性、缓存范围)scripts/release_gate.sh— 部署前必须在确切的提交上通过deploy.sh— 唯一的生产部署途径;需通过门控、加锁、盖章并验证stamp_build.py— 写入build_info.json;/health的build区块报告此信息Procfile— Railway 启动命令(先盖章,再运行python mcp_server.py).github/workflows/release-gate.yml— CI;在推送和 PR 时运行完整测试套件
许可证
专有(商业)。© Foundry Labs LLC。联系邮箱:[email protected]
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。