内容
align="center"><img src="media/octo-mcp-lockup.svg" alt="OCTO width="360">
# OCTO MCP 服务器 —官方* 演示
> ⚠️ **非 不隶属于 OCTO,也不得到 OCTO 的认可。是一个独立的展示了 AI 代理如何使用开放的 [OCTO 标准](octo.travel) 来预订旅游、活动和景点。它与**模拟供应商**(以及可选的 Ventrata *测试* 供应商)进行预订。没有真实的预订,没有真实的费用。
**赋予您的 AI 预订旅游的能力。** 这是一个小型的 [模型上下文协议](https://modelcontextprotocol.io) 服务器。将它添加到 Claude、Cursor、Windsurf 或任何 MCP 客户端,您的助手就可以通过**一个服务器连接所有 OCTO 供应商**,并在实际扣费前由人工审批。
它 OCTO 的一个战略问题:*当旅行者开始要求他们的助手预订事项时,谁是代理和供应商之间的---
## ⚡ 添加到您的 AI(60 秒)
以下所有操作都使用一个稳定的命令 — 无需安装,无需死路径:
`npx -y -p github:MyTrip-ai/octo-mcp-server octo-mcp-server-stdio`
**最简单 — 一个引导式,自动检测您的客户端并为您配置:**
```bash
npx githubTrip-ai/octo-mcp-server connect
```
**或复制粘贴到您的客户端:**
| 客户端 | |
|--------|-----|
| **Claude Code** | `claude mcp add octo -s user -- npx -y -p github:MyTrip-ai/octo-mcp-server octo-mcp-server-stdio` **Claude 桌面版** | 设置开发者 → 编辑配置以下 `octo` 块,然后完全退出并重新打开 |
|** | 将以下块添加到 `~/mcp.json` **Windsurf** | 将以下块~/.codeiumurf/mcp` |
| **VS Code** (Copilot/代理) | 命令面板 → “MCP: 添加服务器” → 命令(stdio),或粘贴到您的用户 `.json` (使用"` + `"type"`) |
| **ChatGPT** | (,MCP 设置复杂...)添加托管 URL `https://octo.mytrip.ai/mcp` (设置 → 连接器) — 参见 [托管端点](#-hosted-endgpt--remote-clients) |
```json
{
mcpServers": {
octo": {
" "npx",
"args-y", "-p", "github:MyTrip-ai/octo-mcp-server", "octo-mcp-server-stdio"]
}
}
}
```
> `npx github:MyTrip-ai/octo-mcp-server connect --print` 打印**每个**客户端的确切配置。第一次启动会获取并构建(几秒钟);之后会缓存。
>
> **运行命令后,它打印一行然后“冻结”?** 这是正确的 — 您不打算手动运行它。stdio MCP 服务器打印其启动行,然后静默等待您的 AI 客户端在 **stdin** 上使用协议。您的客户端(Claude、...)为您启动它。为了证明它回答,请将其输送一个请求:
> ```bash echo '{"jsonrpc":"2.0","id":1,"method":"params":{"protocolVersion5-06-18abilities":{},"clientInfo":{"name":"x","version":"0"}}}' \
> | npx -y -p github:-ai/octo-mcp-server octo-mcp-server-stdio
> ```
**然后告诉您的 AI:**
> *“使用 octo 工具为我预订一个加拉帕戈斯群岛的浮潜游,时间六。”*
它将发现 → 检查可用性 → **停止并要求您,然后再确认。人工审核是的关键。
## 🧭 或在不安装的情况下试用
```bash
npx github:MyTrip-ai/ocp-server # 一个:添加到 AI · 演示 · 介绍
npx github:MyTrip-ai/octo-server demo # 90讲解
```
更喜欢/octo-demomedia/octo-demo.txt记录稿,或
`npx asciinema play media/octo-demo.cast`.
## 为什么这O 很重要
1新的分销渠道。** 当旅行者要求他们的 AI 预时,OCTO 可以成为代理和供应商之间的桥梁。
2. **一次构建,到达所有供应商。** 一个单一的 MCP 服务器面向**所有** OCTO 供应商 — 今天为转售商提供动力的同一标准化明天的 AI 代理。添加另一个 OCTO 供应商(Bókun、Ventrata、...)并新增代码**即可使用. **OCTO 可以引领这一潮流。** 一个“代理就绪”配置文件 — `octo/mcp` 或 `octo/ai-content — 将允许供应商宣传绪状态,并将 OCT置于竞争的前沿。 *(一个开放性问题,本演示旨在启动,而不是解决。)*
## 它是如何工作的(使它安全的设计)
故意**不是** OCTO REST API 的 1:1 包装 — 这对 LLM 来说是一个陷阱。完整的原理在 [`DESIGN.md`](DESIGN.md) 中。基本内容:
- **一个服务器,许多供应商** — 每个供应商都位于一个适配器(模拟或实时 HTTP)后面。
-从不接触不透明的 ID** — OCTO 的 `availabilityId` 和性 `uuid` 保留端,因此代理预订。
- **资金是人类可读的** — OCTO 的整数 + `currencyPrecision` 变成 `"$180.00 USD"`。
- **支出的人工审核** — `confirm_booking` 在没有明确批准的情况下拒绝。
- **能力和身份验证在服务器端协商** — 模型从不管理标头或密钥。
## 使用实时 OCTO 库存(可选)
在 git 忽略的 `.env` 中设置一个**免费的 Ventrata 测试密钥** (或 `connect` 向导/引导式客服将提供一个):
```bash
VENTRATA_OCTO_ENDPOINT=https://api.ventrata.com/octo
VENTRATA_OCTO_API_KEY=your-free-test-key
# optional: ANTHROPIC_API_KEY=... (upgrades the built-in chat Claude)
```
在 <https://dashboard.ventrata.com/octo/signup> 获取一个(测试供应商“EdinExplore”)。
## 🌐 托管端点(ChatGPT 和远程客户端)
一个实时远程(可流式传输的 HTTP)端点已经上线:
```
https://octo.mytrip.ai/mcp
```
访问 **<https://octo.mytrip.ai>** 以查看其实时演示 — 一个包含工具列表和连接说明的概览页面mcp` 路径本身是一个*协议*端点,而不是网页,因此直接打开它只会显示一条简短的已到达线路”说明 — 这是预期的;与之交互的 MCP 客户端会获取所有工具。)
将其添加到任何支持**远程**服务器的 MCP 客户端 — 例如 **ChatGPT** (设置 → 连接器 → 添加自定义连接器,该 URL;可能模式),或远程 Claude/Cursor。不需要安装。非官方 · 模拟/测试数据实际费用。
> 自己托管:`npm run serve或 `node dist/serve.js`)位于 TLS 反向代理后面;设置 `OCTO_ALLOWEDyour.host` DNS 重新绑定。参见 [`src/serve.ts`](src/serve.ts)。
## 架构
```
src/
index.ts OCTO MCP 服务器(stdio)— 9 个工具、资源、提示
octo/ OCTO 类型 + 适配器缝隙(mockAdapter, httpAdapter)
chat/engine.ts 共享聊天引擎(确定性 + Claude 智能,解析器)
cli:客户端注册 连接 · 客服 · 演示 · 界面
scripts/ 桥(网页聊天)+ 烟雾/实时/CLI/连接/演示测试 + 制作投影片
web/ 基于同一的网页聊天(npm run bridge)
media/ 记录的演示(.cast + .```
## 开发和验证
```bash
npm install
npm run connect-smoke #注册表 + 配置写入器 + 握手(13 个检查)
npm run smoke # MCP 服务器,模拟供应商(12 个)
npm run live # 通过 Ventrata 的真实 OCTO 往返(需要密钥)
npm run cli-smoke # 引导流程,端到端
npm run demo-smoke # 讲解
npm run cast # 重新生成 media/octo-demo.{cast,txt}
npm run bridge # 在 http://localhost:8787 的网页聊天
9 Available text triggered tools:
工具类型 AI 调用它的原因
list_suppliers 只读 "有哪些供应商可用?"
search_products 只读 "找到加拉帕戈斯群岛的浮潜游"
get_product_details 只读 "显示完整详情和取消政策"
check_availability 只读 "星期六有 2 名成人可用吗?" → 返回 slot-3 等插槽句柄
create_hold 写入(幂等) "保留 2 名成人的 slot-3" → 返回 BK-1 + 倒计时
confirm_booking 破坏性 "确认 BK-1" → 未经 humanApproved=true 拒绝
cancel_booking 破坏性 "取消 BK-1" → 未经 confirm=true 拒绝
get_booking 只读 "BK-1 的状态是什么?"
list_bookings 只读 "显示此会话的所有预订"
```
## 许可证
[MIT](LICENSE). 一个 代理和 OCTO 标准的对话的参考产物。再次强调:**非官方隶属于 OCTO。**