news 2026/10/30 16:03:12

otari MCP 集成指南:快速将任意 MCP 服务器接入 Chat 与 Responses 请求

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
otari MCP 集成指南:快速将任意 MCP 服务器接入 Chat 与 Responses 请求

【免费下载链接】otari

Open-source, OpenAI-compatible LLM gateway you run yourself. One endpoint for 40+ providers, with virtual keys, budgets, and usage tracking.

项目地址:https://gitcode.com/gh_mirrors/ot/otari
点击查看免费下载

otari 是一个开源、OpenAI 兼容的 LLM 网关,一个端点即可接入 40+ 模型提供商,并自带虚拟密钥、预算和用量追踪。而它的 MCP 集成能力,让/api/v1/chat/completions、/api/v1/messages和/api/v1/responses三个端点都能直接调用 MCP 服务器暴露的工具——模型发起工具调用,网关负责执行、把结果塞回对话、再让模型继续回答,全程你无需自己写循环。

1 分钟看懂:otari 的两种 MCP 接入模式

在 otari 中,MCP 服务器有两种接入方式,它们可以二选一,也可以组合使用:

字段含义适合场景
mcp_servers在请求体内联 MCP 服务器配置,网关直连临时调试、一次性调用
mcp_server_ids引用工作区中已保存的 MCP 服务器 ID长期使用的正式服务

两种写法都属于托管模式(Managed MCP):otari 接管整个「模型 ⇄ 工具」循环。当模型发出一个 MCP 工具调用时,otari 会执行它、把结果追加进对话、再调用一次模型,直到模型返回正常回答为止。

内联 mcp_servers:在请求里直接带上 MCP 服务器

最快的上手方式。MCP 配置是请求的顶级字段,不要塞进tools数组里:

{ "model": "anthropic:claude-sonnet-4-6", "messages": [{"role": "user", "content": "列出仓库中未关闭的 issue"}], "mcp_servers": [ { "name": "github", "url": "https://mcp.example.com/github", "authorization_token": "ghp_...", "purpose_hint": "用于查询仓库和 issue", "allowed_tools": ["list_issues", "get_issue"] } ] }

各字段的作用:

  • name:服务器标签,同一请求内必须全局唯一
  • url:streamable HTTP 形式的 MCP 端点,需可从网关访问
  • authorization_token:可选的 Bearer Token;一旦填写,url必须是https://
  • purpose_hint:可选提示,会拼进系统消息,帮模型更准地选用工具
  • allowed_tools:可选白名单。省略或传null表示暴露全部工具;传[]表示全部禁用;传具体名称则只暴露这些

用 mcp_server_ids 引用工作区已保存的服务器

生产环境更推荐的做法是:把 MCP 服务器注册一次,之后所有请求只传 ID:

{ "model": "anthropic:claude-sonnet-4-6", "messages": [{"role": "user", "content": "总结一下未合并的 PR"}], "mcp_server_ids": ["11111111-1111-1111-1111-111111111111"] }

保存的服务器在控制台Tools → MCP servers页面管理,也可以直接用主密钥调用 API 完成同样的事:

curl -X POST http://localhost:8000/api/v1/workspaces/$WORKSPACE_ID/mcp-servers \ -H "Otari-Key: $OTARI_MASTER_KEY" \ -H "Content-Type: application/json" \ -d '{"name": "github", "url": "https://mcp.example.com/github"}'

几个实用的细节:

  • 🔐authorization_token使用OTARI_SECRET_KEY加密存储,接口永不回显,只返回has_token
  • ⚙️enabled: false会保留配置和令牌,但让该服务器从所有请求中摘除
  • ✅ 创建或修改 URL、令牌、白名单时会自动做一次连接体检,结果放在health字段里;也可用POST /{server_id}/check随时手动复检
  • 📦 单个工作区最多配置 50 个服务器,mcp_server_ids一次最多引用 50 个 ID

otari 托管的工具循环是怎么跑的

这是新手最容易踩坑的地方,值得单独说明:

  1. 模型发出 MCP 工具调用 → otari 执行并把结果追加进对话
  2. otari 再次调用模型,循环往复
  3. 循环由max_tool_iterations控制:默认 10 轮,上限 25 轮
  4. 最后一轮会收回 otari 的全部工具,强制模型基于已有结果作答——即使模型"上瘾"一直想调工具,也一定会以正常回答收尾

另外,MCP 工具可以与 otari 内置工具(web_search、web_fetch、code_execution)在同一个请求中混用,但服务器工具名不能与内置工具重名,否则会返回400。

进阶:调用方编排模式(Caller-orchestrated MCP)

如果你需要人在环上审批(比如人工批准一次写操作),托管循环就不合适了。otari 提供两个无状态端点,把编排权交回给你的应用:

步骤端点说明
发现工具GET /api/v1/mcp/servers/{id}/tools返回该服务器暴露的工具定义与server_revision
执行调用POST /api/v1/mcp/execute执行一次已授权的工具调用,返回原生 MCP 结果

两条规则务必记住:

  • ⚠️执行请求永不自动重试。otari 不做去重,重复发送可能把工具再执行一遍。遇到execution_state: "outcome_unknown"错误时,说明结果不确定,应展示为"状态未知"而非静默重试
  • 🔄server_revision要随授权记录一起保存并回传。它不是审批凭证,但能防止"授权之后配置被改了"导致调错对象

otari 独立强制的是认证、工作区可达性、工具白名单和 URL 安全;用户审批、参数编辑、操作留痕这些边界由你的应用负责。

生产使用前必看的 3 个安全设计

  1. SSRF 防护:MCP URL 在保存时和每次请求时都会做安全校验,默认拦截私有与保留地址、允许回环;OTARI_MCP_ALLOW_LOOPBACK=false可进一步收紧
  2. 名称唯一:同一请求用到的所有 MCP 服务器(内联 + 工作区保存的)名称不能重复,否则400,因为 otari 靠名称路由每次工具调用
  3. 传输上限:发现与执行各有独立的并发和超时预算(如单次工具调用 30 秒、结果 1 MiB),慢速或恶意的 MCP 服务器不会饿死已授权的正常调用

小结

需求推荐方式
快速验证一个 MCP 服务器内联mcp_servers
团队长期使用的正式服务工作区保存 +mcp_server_ids
需要人工审批的敏感操作Caller-orchestrated 双端点

更多细节可参考项目文档:MCP 完整文档、内置工具说明、工具文档。核心实现位于 mcp_loop.py、mcp_client.py 与 workspace_mcp_server_service.py。在 otari 上,MCP 集成不需要你额外搭建任何东西——加上两个字段,任意 MCP 服务器就能进入你的 Chat 与 Responses 请求了。

【免费下载链接】otari

Open-source, OpenAI-compatible LLM gateway you run yourself. One endpoint for 40+ providers, with virtual keys, budgets, and usage tracking.

项目地址:https://gitcode.com/gh_mirrors/ot/otari
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/30 15:56:25

远光九天灵境平台:企业级AI Agent架构与实践

1. 远光九天灵境平台:企业级AI Agent的落地实践 去年我在参与某大型制造企业的数字化转型项目时,第一次深刻感受到传统AI解决方案的局限性——我们部署的智能客服系统只能处理固定场景的标准化问题,一旦遇到业务流程变更或异常情况&#xff0…

作者头像 李华
网站建设 2026/10/30 15:55:32

Win10内核级模拟触摸驱动开发指南

简介:本资源是一套适配 Windows 10 的模拟触摸驱动解决方案,面向嵌入式开发、人机交互测试及触控应用调试工程师,解决 MultiTouchVista 在 Win10 64位系统下因 devcon 工具调用失败导致驱动无法安装的典型兼容性问题。资源包共85个文件&#…

作者头像 李华
网站建设 2026/10/30 15:52:30

Linux进程管理:孤儿进程与O(1)调度算法解析

1. Linux进程管理核心概念解析在Linux系统中,进程管理是操作系统最基础也最关键的职能之一。今天我想和大家深入探讨三个紧密关联的核心概念:孤儿进程的处理机制、进程调度策略,以及曾经在Linux 2.6内核中大放异彩的O(1)调度算法。这些概念不…

作者头像 李华
网站建设 2026/10/30 15:50:39

五级流水CPU Verilog源码:气泡、重定向与多级嵌套中断实战

简介:面向计算机科学与技术专业学生的计算机组成原理课程设计成果包,聚焦基于Verilog HDL的流水线CPU实现,适合正在做组成原理课设、需要参考可上板流水线设计的学生对照学习。工程完整覆盖五级流水分段、数据冲突时的气泡插入与重定向、多级…

作者头像 李华
网站建设 2026/10/30 15:44:45

联想硬盘保护系统:企业级终端数据韧性底座

简介:本资源是面向联想ThinkPad及商用台式机用户、系统运维人员与Linux多系统爱好者的技术实践资料包,聚焦于在联想硬盘保护系统环境下安全部署Linux等第三方操作系统的核心方法论。内容涵盖还原点管理、MBR/GPT多启动兼容方案、安全模式安装流程、分区策…

作者头像 李华
网站建设 2026/10/30 15:27:42

J2EE实时新闻推送系统源码解析:毕业设计部署与二次开发指南

简介:本资源为基于J2EE的实时新闻推送网站系统毕业设计全套资料,面向计算机专业学生及Java Web初学者,解决毕业设计选题、系统开发与论文撰写的一站式需求。系统采用J2EE技术栈与MySQL数据库,区分用户与管理员两类角色&#xff1a…

作者头像 李华