Arena MCP Server
使用说明(Markdown 格式)
-
项目简介
- 该仓库实现了一个 MCP 服务器,使用 FastMCP 框架搭建,通过 JSON-RPC/HTTP 等传输协议与 LLM 客户端通信。核心功能是对 Arena PLM 的 REST API 进行封装,向客户端提供可执行的“工具”(Tools),以及对 PART/DATA 的检索与展示能力,并提供健康检查接口与可选的认证机制。
-
主要功能点
- 基于 MCP 的后端服务器,处理并响应客户端请求,提供标准化的上下文服务。
- 通过工具暴露 Arena PLM 的查询与数据访问能力,例如:
- search_items: 按名称/编号/描述等进行部件检索
- get_item: 获取指定项的详细信息
- get_item_bom: 获取装配件的 BOM
- get_item_where_used: 查找部件被使用的装配件
- get_item_revisions: 获取版本历史
- get_item_files: 获取关联文件
- get_item_sourcing: 获取供应商信息
- get_categories: 获取分类信息
- 支持健康检查端点(healthz)
- 可选开启/关闭认证(使用 Google OAuth 2.0 提供者;也可通过 DISABLE_AUTH 设置禁用)
- 会话管理:Arena 登录/登出,基于 arena_session_id 的会话维持
- 支持多传输协议(http、sse,具体由 MCP_TRANSPORT 配置)
-
安装步骤
-
- 准备环境:确保系统已安装 Python 3.10+、pip
-
- 获取源码:克隆仓库并进入项目目录
-
- 安装依赖:安装项目所需的依赖(通常通过 requirements.txt 或 Poetry 安装)
-
- 配置环境变量(见下文配置要点)
-
- 启动服务器:运行 main 入口,自动启动 MCP 服务器
-
-
服务器配置(MCP 客户端需要的最小配置) 说明:MCP 客户端在连接 MCP 服务器时,需要提供 server 的启动命令与参数。以下为根据仓库信息生成的示例配置信息,实际使用时请按环境调整。 { "server_name": "arena-mcp-server", "command": ["python", "-m", "arena_mcp_server.server"], "args": [] } 注释说明:
- server_name: 服务器在客户端中的名称标识,建议与实际部署名称保持一致。
- command: 启动服务器的命令。此处使用模块化启动方式,假设环境中通过 Python 运行 arena_mcp_server.server 模块来启动。
- args: 启动时所需的额外参数(此实现依赖环境变量来配置大部分行为,当前默认不通过命令行传递额外参数,因此此处留空)。 重要配置点(环境变量,客户端不需要):
- ARENA_EMAIL: Arena 登录邮箱(必填)
- ARENA_PASSWORD: Arena 登录密码(必填)
- ARENA_WORKSPACE_ID: Arena 工作空间ID(可选,未设置时使用默认)
- MCP_HOST: 服务器绑定地址,默认 0.0.0.0
- MCP_PORT: 服务器监听端口,默认 8080
- MCP_TRANSPORT: 传输协议,支持 http 或 sse,默认 http
- DISABLE_AUTH: 是否禁用认证,若为 true 将跳过 OAuth 验证 注:MCP 客户端连接时通常只需要知道服务器的地址、端口及传输方式即可。
-
基本使用方法
-
- 设置 Arena 的账户信息(环境变量 ARENA_EMAIL、ARENA_PASSWORD)以及可选的工作空间
-
- 启动 MCP 服务器(如通过命令:python -m arena_mcp_server.server;也可通过 Docker Compose 启动)
-
- LLM 客户端与 MCP 服务器建立连接,调用工具:
- search_items(name="电阻", limit=10) -> 获取匹配项的摘要与 GUID
- get_item(guid) -> 获取选定项的完整详情
- get_item_bom(guid) -> 查看装配件的 BOM
- get_item_where_used(guid) -> 查找该部件被使用的装配件
-
- 通过健康端点 healthz 监控服务状态
-
- 如需自定义认证策略,可通过 DISABLE_AUTH 控制开关,或配置 Google OAuth2 提供者
-
-
使用提示
- 在实际对话中先通过 search_items 获取候选项,再使用 get_item 与其他工具获取更细粒度信息
- 注意 Arena 的 API 使用可能存在速率限制,请在应用中实现合理的限流与错误处理