Aviary MCP服务器
MCP服务器暴露了NASA的 鸟舍 通过流式HTTP将飞机设计优化器作为9个工具。AI代理(或任何MCP客户端)可以探索设计空间,修改飞机参数,运行基于梯度的轨迹优化,并检索结果——所有这些都是通过标准的MCP调用完成的。
相关存储库
- MAS航空 --多代理LLM框架,使用此MCP服务器作为飞机设计优化的后端。MAS Aviary协调专业代理(探索、修改、模拟、分析),通过调用此处公开的工具进行协作,以找到燃料最优的飞机配置。
快速开始
1.创建conda环境
Aviary 0.9.10需要特定版本的OpenMDAO和Dymos。较新的版本引入了一个单元兼容性错误,破坏了轨迹优化。下面的固定版本是已知唯一有效的组合。
conda create -n aviary python=3.11 -y
conda activate aviary
pip install -r requirements.txtrequirements.txt 引脚:
| 包 | 版本 | 为什么 |
|---|---|---|
| 鸟舍 | 0.9.10 | NASA飞机设计/优化 |
| openmdao | 3.36.0 | MDO框架--3.41+中断鸟舍单元处理 |
| dynos | 1.13.1 | 轨迹优化——1.15+中断鸟舍单元处理 |
| fastmcp | >=3.0.0 | MCP服务器框架 |
| pytest | 最新 | 测试运行器 |
2.启动服务器
conda activate aviary
python aviary_mcp_server.py服务器正在监听 http://localhost:8600/mcp (流式HTTP传输)。
3.连接客户端
将任何兼容MCP的客户端指向 http://localhost:8600/mcp服务器公开了遵循基于会话的生命周期的9个工具。
get_design_space → create_session → set_aircraft_parameters → configure_mission
↓
check_constraints ← get_results / get_trajectory ← run_simulation
↑
validate_parameters (optional pre-check)4.验证安装
# Unit tests (no server required)
python -m pytest tests/test_aviary_mcp_tools.py -v -m "not slow"
# End-to-end connection test (server must be running)
python test_aviary_mcp_connection.py工具
| # | 工具 | 说明 |
|---|---|---|
| 1 | get_design_space | 列出10个可修改的飞机参数,包括默认值、单位和界限 |
| 2 | create_session | 开始新的会话(装载737/A320级基线飞机) |
| 3 | set_aircraft_parameters | 通过验证修改机翼、机身或发动机参数 |
| 4 | configure_mission | 设置航程、乘客、巡航马赫数、高度、优化器迭代次数(默认值:1500海里,162人,0.785马赫,FL350) |
| 5 | validate_parameters | 静态检查+快速模型评估(~6-9s),无需运行优化器 |
| 6 | run_simulation | 运行SLSQP轨迹优化(默认200次迭代,~40-60s) |
| 7 | get_results | 读取燃油燃烧、GTOW、机翼质量、储备燃油、零燃油重量 |
| 8 | get_trajectory | 提取时间序列数组:高度、马赫数、质量、油门、阻力、距离与时间 |
| 9 | check_constraints | 根据用户定义的限制(\=、==)评估通过/失败 |
设计参数
| 参数 | 默认值 | 单位 | 范围 |
|---|---|---|---|
| 飞机。翅膀。方面比率 | 11.22 | -- | 7-14 |
| 飞机。翅膀。面积 | 124.6 | 平方米 | 100-160 |
| 飞机。翅膀。跨度 | 37.35 | m | 28-48(推导: span = √(AR × area)) |
| 飞机。翅膀。膨胀度 | 25.0 | 度 | 15-40 |
| 飞机。翅膀。锥度比 | 0.278 | -- | 0.15-0.45 |
| 飞机。机身。长度 | 37.79 | 米 | 28-50 |
| 飞机。机身。最大高度 | 4.06 | m | 3–5.5 |
| 飞机。机身。最大直径 | 3.76 | m | 3–5.5 |
| 飞机。发动机。SCALED_SLS_THRUST | 28928 | lbf | 20k-45k(只读,从SCALE_FACTOR导出) |
| 飞机。发动机。SCALE_FACTOR | 1.0 | -- | 0.8-1.5 |
机翼面积、跨度和展弦比是耦合的: AR = span² / area. Span是一个派生参数 --它是根据纵横比和面积计算的,不应该直接设置。如果显式设置span,则如果违反耦合约束超过5%,服务器将发出警告。集 ASPECT_RATIO 和 AREA 相反,span将自动导出。 SCALED_SLS_THRUST 类似地衍生自 SCALE_FACTOR.
任务默认值
| 参数 | 默认值 |
|---|---|
| 范围 | 1500海里 |
| 乘客 | 162 |
| 巡航马赫数 | 0.785 |
| 巡航高度 | FL350(35000英尺) |
| 优化器迭代 | 200(SLSQP) |
项目结构
aviary_mcp_server.py MCP server — 9 tool definitions
aviary_runner.py Aviary Level 2 API wrapper
session_manager.py Session lifecycle, 30-min idle timeout
design_space.py Parameter metadata and validation
requirements.txt Pinned dependencies
start_aviary_server.py Convenience start script
tests/ pytest suite (25 unit + 31 integration)
test_aviary_mcp_connection.py End-to-end smoke test
run_reference_benchmark.py Standalone benchmark (~7,001 kg fuel baseline)
CHANGELOG.md Version history
RESULTS.md Batch evaluation of 8 agent configurations
docs/index.html Project landing page
figures/ Generated plots故障排除
unitless 对比 1 优化过程中的单位错误: 您安装了较新版本的openmdao或dynos。降级到固定版本:
pip install openmdao==3.36.0 dymos==1.13.1build_model() 未找到: Aviary 0.9.10中不存在此方法。服务器在内部使用正确的调用序列——如果你看到这个错误,你的鸟舍版本就错了。
模拟挂起或超时: run_simulation 接受a timeout_seconds 参数(默认值为300)。复杂的配置可能需要更多时间。检查优化器迭代计数(configure_mission → optimizer_max_iter)这是合理的。
引用
如果您在研究中使用此MCP服务器,请引用:
@inproceedings{ezemba2026structure,
title={Structure Shapes Coordination: An Empirical Evaluation of Organizational
Design Principles in Multi-Agent Engineering Design},
author={Ezemba, Jessica and McComb, Christopher and Tucker, Conrad},
booktitle={ASME 2026 International Design Engineering Technical Conferences
and Computers and Information in Engineering Conference (IDETC/CIE2026)},
address={Houston, TX},
month={August 23--26},
year={2026}
}该服务器封装了NASA的 OpenMDAO/鸟舍:
@software{aviary,
title={Aviary: A Multidisciplinary Design, Analysis, and Optimization Tool
for Aircraft},
author={{NASA Glenn Research Center}},
url={https://github.com/OpenMDAO/Aviary},
year={2024}
}