SimBrief飞行计划MCP服务器
模型上下文协议(MCP)服务器,为Claude Desktop和其他MCP客户端提供对SimBrief飞行计划数据的访问。使用TypeScript构建,部署在具有Google OAuth身份验证的Cloudflare Workers上。
特性
- Google OAuth身份验证:使用基于电子邮件的权限进行安全访问控制
- Cloudflare员工:使用持久对象进行有状态会话的边缘部署
- SSE/HTTP传输:MCP客户端的双协议支持
- SimBrief API集成:完全访问飞行计划数据
- TypeScript:完全类型安全和现代异步/等待模式
- 哨兵集成:可选的错误跟踪和性能监控
- 速率限制优化:可选API关键支持改进SimBrief费率限制
可用的MCP工具
飞行计划工具
- 获取最新飞行计划 (首选/默认)
- 获取最新飞行计划的完整JSON数据 - 包括所有细节:航行通告、天气、机组警报、MEL/CDL等。 - 默认情况下使用,除非用户特别要求提供摘要
- getFlightPlanById
- 按ID获取特定飞行计划的完整JSON数据 - 需要21个字符的SimBrief计划ID
- getDispatchBriefing
- 获取包含操作信息的格式化调度简报 - 包括:航班信息、路线、燃油计划、重量、天气
- 获取最新飞行计划摘要
- 获取最新飞行计划摘要 - 仅在用户特别要求摘要时使用
- getFlightPlanById摘要
- 按ID获取具体飞行计划摘要
安装
先决条件
- Node.js 18或更高版本
- npm或纱线
- Cloudflare帐户
- SimBrief帐户和用户ID
- Google OAuth凭据
设置
- 克隆存储库:
cd simbrief-mcp- 安装依赖项:
npm install- 配置牧马人:
编辑 wrangler.toml 设置您的KV命名空间ID:
[[kv_namespaces]]
binding = "OAUTH_KV"
id = "your-kv-namespace-id" # Replace with your actual KV namespace ID- 设置秘密:
# Required secrets
wrangler secret put GOOGLE_CLIENT_ID
wrangler secret put GOOGLE_CLIENT_SECRET
wrangler secret put COOKIE_ENCRYPTION_KEY
# Optional secrets
wrangler secret put SIMBRIEF_API_KEY # Improves rate limits
wrangler secret put SENTRY_DSN # Error tracking要生成COOKIE_ENCRYPTION_KEY,请执行以下操作:
openssl rand -base64 32- 配置允许的用户:
编辑 src/config/allowed-users.ts 并添加您的电子邮件用户名(@之前的部分):
const ALLOWED_USERNAMES = new Set([
'your-username', // For your-username@gmail.com
]);- 获取您的SimBrief用户ID:
- 登录SimBrief(https://www.simbrief.com) - 转到帐户设置 - 查找您的飞行员ID(这是您的用户ID)
发展
地方发展
# Start local development server (port 8794)
npm run dev
# Type checking
npm run type-check
# Generate Cloudflare types
npm run cf-typegen建筑
npm run build部署
npm run deployClaude桌面集成
本地开发配置
添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
窗户: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"simbrief": {
"command": "npx",
"args": ["mcp-remote", "http://localhost:8794/mcp"],
"env": {}
}
}
}生产配置
{
"mcpServers": {
"simbrief": {
"command": "npx",
"args": ["mcp-remote", "https://your-worker.workers.dev/mcp"],
"env": {}
}
}
}替换 your-worker.workers.dev 使用您的实际Cloudflare Workers域。
使用示例
获取最新飞行计划
问克劳德:
“获取用户ID 123456的最新SimBrief飞行计划”
获取调度简报
问克劳德:
“获取我最新航班计划的调度简报(用户ID 123456)”
获取具体飞行计划
问克劳德:
“获取用户123456的飞行计划ABCDEF123456789012345”
项目结构
simbrief-mcp/
├── src/
│ ├── auth/
│ │ ├── google-handler.ts # Google OAuth flow
│ │ └── oauth-utils.ts # OAuth utilities
│ ├── config/
│ │ └── allowed-users.ts # User access control
│ ├── tools/
│ │ ├── simbrief-api.ts # SimBrief API client
│ │ └── register-simbrief-tools.ts # MCP tools registration
│ ├── types/
│ │ └── index.ts # TypeScript types
│ └── index.ts # Main entry point
├── wrangler.toml # Cloudflare Workers config
├── tsconfig.json # TypeScript config
├── package.json # Dependencies
└── README.md # This file环境变量
必需的秘密
- GOOGLE_CLIENT_ID:谷歌OAuth客户端ID
- 谷歌客户端密码:谷歌OAuth客户端机密
- COOKIE_ENCRYPTION-KEY:用于cookie签名的32个字符的随机字符串
可选秘密
- SIMBRIEF_API_KEY(简单程序_项目_密钥):SimBrief API提高费率限制的关键
- 哨兵:用于错误跟踪的哨兵DSN
- 环境:环境名称(默认为“生产”)
安全功能
- OAuth 2.0:通过电子邮件验证的Google身份验证
- HMAC Cookie:已签名的Cookie用于客户端批准持久性
- 访问控制:基于电子邮件的用户列表
- 错误清理:从错误中删除敏感信息
- 边缘安全:Cloudflare Workers安全功能
监控
- 控制台日志:可在Cloudflare仪表板中使用
- 哨兵集成:可选的错误跟踪和性能监控
- Cloudflare分析:内置请求指标
故障排除
配置问题
问题: 找不到SimBrief用户ID
解决方案:
- 登录SimBrief
- 转到帐户设置
- 您的飞行员ID就是您的用户ID
身份验证问题
问题: “拒绝访问”错误
解决方案:
- 检查您的电子邮件用户名是否在
src/config/allowed-users.ts - 验证是否正确设置了Google OAuth凭据
API错误
问题: SimBrief API错误消息
解决方案:
- 验证用户ID是否正确
- 查看SimBrief上是否有最近的飞行计划
- 如果使用API密钥,请确保其有效
与原始Python版本的差异
改进
- TypeScript:完全类型安全和更好的IDE支持
- Cloudflare员工:边缘部署,实现全球低延迟
- 谷歌OAuth:安全身份验证而不是公共访问
- 更好的错误处理:Sentry集成的全面错误消息
- 代码组织:模块化结构,关注点明确分离
- 生产就绪:内置监控、日志记录和安全功能
迁移说明
如果你从Python版本迁移:
- 用户ID仍然作为参数传递(不是环境变量)
- 所有工具名称均遵循camelCase惯例(getLatestFlightPlan与get_latest_flight_plan)
- 需要谷歌身份验证-设置允许的用户
- 部署在Cloudflare Workers上,而不是在本地运行
贡献
欢迎投稿!请确保:
- 代码遵循TypeScript和Prettier格式
- 所有工具都包括正确的错误处理
- 文档已针对新功能进行了更新
- 测试通过(如适用)
许可证
麻省理工学院
支持
对于问题或疑问:
- 检查上面的故障排除部分
- 查看Cloudflare Workers日志
- 检查Sentry以获取错误详细信息(如果已配置)
鸣谢
内置:
