使用说明
预订The Wild-MCP服务器
一个用于与Book The Wild狩猎平台交互的综合模型上下文协议(MCP)服务器。此服务器提供用于搜索狩猎、查看详细信息、预订套餐以及使用基于会话的登录管理用户身份验证的工具。
🚀 快速开始
-
安装依赖项:
npm install -
跑
npm run dev
🔧 配置
创建 .env 文件:
PORT=3005
🎯 可用工具
服务器提供五个MCP工具:
1. find-hunts -搜索狩猎套餐
- 描述:在Book The Wild上搜索狩猎套餐。您可以按日期范围进行筛选。要预订一些狩猎,首先使用“获取狩猎细节”工具找到可用的套餐。
- 参数:
dateFrom(可选)-开始日期筛选器(字符串)dateTo(可选)-结束日期筛选器(字符串)
2. get-hun-details -获取狩猎详情
- 描述:检索特定狩猎的详细信息。它包括可供预订的套餐列表。
- 参数:
huntId(必填)-用于检索详细信息的狩猎ID(字符串)
3. book-package -预订狩猎套餐
- 描述:在Book The Wild上预订选定的狩猎套餐(需要身份验证)
- 参数:
bookingDate(必填)-预订日期(字符串)huntId(必填)-狩猎ID(字符串)packageId(必填)-要预订的包裹的ID(字符串)numberOfGuests(必填)-预订的客人数量(个)
4. get-user -获取用户信息
- 描述:检索当前登录用户的信息
- 参数:无
5. log-out -注销用户
- 描述:注销当前登录的用户
- 参数:无
🔐 认证
服务器对需要用户授权的工具使用基于会话的身份验证(book-package, get-user, log-out).
登录进程
- 当在没有身份验证的情况下访问受保护的工具时,服务器将提供登录URL
- 导航至
http://localhost:3005/login?sessionId=<SESSION_ID> - 输入您的Book The Wild凭据(电子邮件和密码)
- 登录后,您可以在该会话中使用所有受保护的工具
会话管理
- 每个MCP客户端连接都会获得一个唯一的会话ID
- 每个会话都会维护登录状态
- 用户可以通过以下方式检查其登录状态
get-user工具 - 用户可以使用注销
log-out工具
备注:登录表单使用模拟令牌进行开发。在生产环境中,这应该被适当的OAuth 2.1流程所取代。
📁 项目结构
src/
├── server.ts # Express server with MCP endpoints
├── session.ts # Session management and transport handling
├── parsers.ts # Query parsing utilities
├── types.ts # TypeScript type definitions
└── tools/ # MCP tool implementations
├── index.ts # Tool registration
├── find-hunts.ts # Hunt search functionality
├── get-hunt-details.ts # Hunt details retrieval
├── book-package.ts # Package booking (auth required)
├── get-user.ts # User info (auth required)
└── log-out.ts # User logout (auth required)
🌐 HTTP端点
/mcp (发布、获取、删除)
- 发布:用于工具调用的主MCP通信端点
- 获取:通过服务器发送事件(SSE)发送服务器到客户端的通知
- 删除:会话终止
- 标头:
mcp-session-id:用于维护状态的会话标识符Content-Type: application/json
/login (获取、发布)
- 获取:提供登录表单UI
- 查询参数:
sessionId-要进行身份验证的会话ID
- 查询参数:
- 发布:处理登录凭据
- 表单数据:
email,password,sessionId - 返回成功确认和模拟身份验证令牌
- 表单数据:
🧪 测试
-
启动服务器:
npm run dev -
服务器将在:
http://localhost:3005/mcp -
测试身份验证流程:
- 使用MCP客户端调用
get-user工具 - 按照提供的登录URL进行身份验证
- 身份验证后重试工具调用
- 使用MCP客户端调用
-
可用的npm脚本:
npm run dev-使用tsx开发npm run dev:watch-自动重启开发npm run build-将TypeScript构建为JavaScriptnpm run build:clean-清理构建目录并重建npm run start-运行内置JavaScriptnpm run start:prod-生产开始npm run type-check-检查TypeScript类型(仅限生产环境)npm run type-check:all-检查TypeScript类型(包括测试)npm run lint-运行ESLintnpm run lint:fix-自动修复ESLint问题npm run format-使用Prettier格式化代码npm run format:check-检查代码格式npm run test-在监视模式下运行测试npm run test:run-运行一次测试npm run test:coverage-使用覆盖率报告运行测试
🎉 特性
- ✅ 使用流式HTTP传输实现完整的MCP协议
- ✅ 使用web登录表单进行基于会话的身份验证
- ✅ 狩猎包管理的五个综合工具
- ✅ TypeScript支持,具有正确的类型定义和单独的测试配置
- ✅ 具有适当错误处理功能的Express.js服务器
- ✅ ESLint+代码质量和格式的预处理
- ✅ Vitest用于测试TypeScript支持
- ✅ 开发和生产构建脚本
对于生产部署,考虑实施适当的OAuth 2.1流程和安全会话管理。