JSBSim飞行模拟器MCP服务器
一个模型上下文协议(MCP)服务器,它封装了JSBSim高保真飞行动力学引擎,使人工智能代理能够在真实的飞行操作中指挥和监控大型运输机。
概述
该MCP服务器为多智能体航空机组人员模拟提供了基础飞行物理层,特别是对于涉及飞行员、飞行工程师、装载师和其他机组人员之间协调行动的货机任务。
主要特点
- 基于物理的现实主义:使用NASA/DoD质量的JSBSim飞行动力学引擎
- 多代理就绪:非对称信息共享的基于角色的访问控制
- 以使命为中心:针对货运/运输飞机的操作进行了优化,包括空投
- MCP本地:与Claude和其他MCP兼容的AI系统无缝集成
快速开始
安装
# Create virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Install in development mode
pip install -e .运行MCP服务器
方法1:直接执行(stdio传输)
cd src
python -m flight_simulator_mcp.server方法2:使用MCP检查器(建议开发)
uv run mcp dev src/flight_simulator_mcp/server.py方法3:在Claude Desktop中安装
uv run mcp install src/flight_simulator_mcp/server.py --name "Flight Simulator"基本用法
from flight_simulator_mcp.simulator import FlightSimulator
# Create simulator with C-130 Hercules
sim = FlightSimulator(aircraft_model="C130", dt=0.01)
# Initialize at cruise altitude
sim.initialize(
latitude=35.0,
longitude=-120.0,
altitude_msl=10000.0,
heading=90.0,
airspeed=200.0
)
# Set throttle for all 4 engines
for engine in range(4):
sim.set_throttle(0.75, engine=engine)
# Advance simulation
for _ in range(100):
sim.advance()
# Get telemetry
telemetry = sim.get_complete_telemetry()
print(f"Position: {telemetry.position.latitude}°N, {telemetry.position.longitude}°W")
print(f"Altitude: {telemetry.position.altitude_msl:.0f} ft MSL")
print(f"Airspeed: {telemetry.airspeed.indicated:.0f} kts")建筑
MCP Client (AI Agent)
↓ (MCP protocol)
MCP Server (flight-simulator-mcp)
├─ Access Control Layer (role-based permissions)
├─ Tool Routing Layer (dispatch to handlers)
└─ Simulator Abstraction Layer
↓
JSBSim Engine (Python bindings)
↓
Flight Dynamics (C++ core)可用的MCP工具
控制工具(仅限飞行员/副驾驶)
set_throttle-设置发动机油门位置(0.0-1.0)set_elevator-设置俯仰控制的升降舵位置(-1.0至1.0)set_aileron-设置副翼位置以进行横滚控制(-1.0至1.0)set_rudder-设置偏航控制的方向舵位置(-1.0至1.0)set_flaps-设置襟翼位置(0.0-1.0)set_wind-设置风况(以节为单位的北/东分量)advance_simulation-按指定秒数提前模拟reset_simulation-使用新飞机/条件重置模拟
监控工具(所有船员)
get_position-当前纬度、经度、高度MSL/AGLget_attitude-俯仰、横滚、航向(单位:度)get_airspeed-指示、真实和地面速度(单位:节)get_telemetry-完整的飞机状态(位置、姿态、发动机、燃料等)get_engines-所有发动机的发动机状态(RPM、油门、运行)get_fuel-燃料状态(总燃料,百分比)
基于角色的访问控制
MCP服务器根据代理角色强制执行权限:
| 角色 | 控制工具 | 监控工具 |
|---|---|---|
| 飞行员 | ✅ 已满 | ✅ 满 |
| 副驾驶 | ✅ 已满 | ✅ 满 |
| 飞行工程师 | ❌ 无 | ✅ 满 |
| 软件 | ❌ 无 | ✅ 满 |
| 导航员 | ❌ 无 | ✅ 满 |
| 系统 | ✅ 已满 | ✅ 满 |
示例
请参阅 examples/ 演示目录:
basic_flight_demo.py-Cessna 172和C-130的简单飞行演示multi_agent_scenario.py-完成多智能体空投任务telemetry_monitoring.py-实时遥测监测和记录mcp_server_demo.py-MCP服务器功能和使用指南
文档
测试
运行测试套件:
source venv/bin/activate
PYTHONPATH=src pytest tests/ -v --cov=src/flight_simulator_mcp当前测试覆盖率: 93% 对于核心模拟器, 68% 用于访问控制
开发状态
✅ 阶段0完成 -环境设置和JSBSim集成 ✅ 第一阶段完成 -带遥测功能的堆芯模拟器包装 ✅ 第3阶段完成 -具有基于角色的访问控制的MCP服务器 🚧 第二阶段正在进行中 -导航实用程序和任务计算
许可证
MIT许可证
贡献
欢迎投稿!请参阅我们的投稿指南。
