EMS MCP服务器
一种MCP(模型上下文协议)服务器,为飞行数据分析提供对EMS(事件管理系统)API的LLM访问。
先决条件
- Python 3.11+
- 紫外线 包管理器
安装
git clone
cd ems-mcp
# Create virtual environment
uv venv
# Activate virtual environment
# Windows (cmd):
.venv\Scripts\activate
# Windows (PowerShell):
.venv\Scripts\Activate.ps1
# macOS / Linux:
source .venv/bin/activate
# Install the package
uv pip install -e .这创建了一个 ems-mcp 可在虚拟环境中执行:
- 窗户:
.venv\Scripts\ems-mcp.exe - macOS/Linux:
.venv/bin/ems-mcp
配置
所有MCP客户端都需要三个值才能连接到您的EMS服务器:
| 变量 | 描述 |
|---|---|
EMS_BASE_URL | EMS服务器URL(例如。 https://your-ems-server.com)--做 不 包含 /api |
EMS_USERNAME | 您的EMS用户名 |
EMS_PASSWORD | 您的EMS密码 |
克劳德代码(CLI)
创建一个 .mcp.json 项目根目录中的文件:
{
"mcpServers": {
"ems-mcp": {
"command": "C:\\absolute\\path\\to\\ems-mcp\\.venv\\Scripts\\ems-mcp.exe",
"args": [],
"env": {
"EMS_BASE_URL": "https://your-ems-server.com",
"EMS_USERNAME": "your-username",
"EMS_PASSWORD": "your-password"
}
}
}
}克劳德代码读取 .mcp.json 打开项目目录时自动执行。
克劳德桌面版
编辑 claude_desktop_config.json:
- 窗户:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
将服务器添加到 mcpServers 块:
{
"mcpServers": {
"ems-mcp": {
"command": "C:\\absolute\\path\\to\\ems-mcp\\.venv\\Scripts\\ems-mcp.exe",
"args": [],
"env": {
"EMS_BASE_URL": "https://your-ems-server.com",
"EMS_USERNAME": "your-username",
"EMS_PASSWORD": "your-password"
}
}
}
}在macOS/Linux上,使用Unix风格的可执行文件路径(例如。 /home/user/ems-mcp/.venv/bin/ems-mcp).
保存更改后重新启动Claude Desktop。
Gemini CLI
创建 .gemini/settings.json 在项目目录中:
{
"mcpServers": {
"ems-mcp": {
"command": "C:\\absolute\\path\\to\\ems-mcp\\.venv\\Scripts\\ems-mcp.exe",
"args": [],
"env": {
"EMS_BASE_URL": "https://your-ems-server.com",
"EMS_USERNAME": "your-username",
"EMS_PASSWORD": "your-password"
}
}
}
}可用工具
发现
list_ems_systems--列出可用的EMS系统(从这里开始)list_databases--浏览数据库层次结构find_fields--按关键字查找字段(mode="search"),浏览字段组树(mode="browse"),或BFS遍历实体类型数据库(mode="deep");返回编号[N]可直接在其他工具中使用的引用get_field_info--获取字段元数据和离散值映射search_analytics--按名称搜索时间序列分析(高度、空速等)get_result_id--(已弃用)解决[N]提及完全不透明的ID;标准工作流程中不再需要
询问
query_database--使用过滤器、排序和聚合查询航班记录query_flight_analytics--获取特定航班的时间序列数据
资产
get_assets--获取参考数据:asset_type的fleets,aircraft(可选通过以下方式过滤fleet_id),airports,或flight_phasesping_system--检查EMS系统是否在线
资源
服务器还公开MCP资源以获取稳定的参考数据:
ems://workflow-guide--发现查询工作流指南ems://systems--可用EMS系统列表(缓存)ems://systems/{system_id}/fleets--系统的车队目录(缓存)ems://systems/{system_id}/airports--机场参考数据(缓存)ems://databases/common-fields--包含精选字段词汇的数据库索引ems://databases/{database_name}/common-fields--为命名数据库整理公共字段(例如。FDW Flights)
提示
预编码多步骤EMS工作流的可重用模板:
analyze_flights--发现->查询->分析尾号/日期范围compare_flights--两个航班ID之间的并排时间序列比较search_flight_parameters--通过关键字发现可用字段,并支持实体数据库
发展
uv pip install -e ".[dev]"
pytest tests/故障排除
401未经授权 --检查一下 EMS_USERNAME 和 EMS_PASSWORD 正确,并且帐户具有API访问权限。
连接错误 --验证 EMS_BASE_URL 做 不 包括a /api 后缀。它应该只是服务器URL(例如。 https://your-ems-server.com).
MCP客户端找不到服务器 --确保通往的路径 ems-mcp 配置中的可执行文件是一个绝对路径,并且虚拟环境已经创建(uv venv && uv pip install -e .).
