______________________________________________________________________
标题:FlexSim MCP服务器 表情符号⚙️ 颜色来源:蓝色 颜色To:绿色 sdk:毕业 sdk版本:“5.0.0” app_file:app.py 固定:false
FlexSim MCP服务器(包括FlexSimPy)
通过模型上下文协议(MCP)控制和自动化FlexSim模拟。此存储库公开了一个FastMCP服务器,该服务器启动FlexSim(通过FlexSimPy),并提供打开模型、运行/停止、单步执行、查询/设置节点值、评估FlexScript、导出结果等工具。
为什么这很重要
- 桥接数字双胞胎和人工智能助手(Claude/Cursor),用于制造/仓库分析和“假设”研究。
- 演示强大的系统工程:GUI流程编排、异步I/O、协议处理、Windows怪癖和可复制的自动化。
______________________________________________________________________
设计
┌─────────────────────┐ JSON-RPC ┌─────────────────────┐
│ MCP Client │◄────────────────────► │ MCP Server │
│ (Claude/Cursor) │ stdin/stdout │ (flexsim_mcp.py) │
└─────────────────────┘ └──────────┬──────────┘
│
│ Python API
▼
┌─────────────────────┐
│ FlexSimPy │
│ (Python SDK) │
└──────────┬──────────┘
│
│ COM/IPC
▼
┌─────────────────────┐
│ FlexSim │
│ (Simulation Engine)│
└─────────────────────┘______________________________________________________________________
特性
- MCP服务器入口点:
mcp_server/flexsim_mcp.py - 暴露的工具:
- 模拟控制: flexsim_open_model, flexsim_reset, flexsim_run, flexsim_run_to_time, flexsim_stop, flexsim_step, flexsim_get_time - 模型/脚本: flexsim_evaluate, flexsim_compile, flexsim_save_model, flexsim_new_model - 节点访问: flexsim_get_node_value, flexsim_set_node_value - 结果/统计数据: flexsim_get_statistics, flexsim_export_results
- 登录中:
mcp_server/flexsim_mcp.log - 可复制环境:
uv sync - FlexSimPy构建自动化:
utility/build_automation.py - 集成测试:
tests/integration/test_mcp_client.py(基于stdio的MCP客户端) - GUI健全性测试:
utility/integration_test.py - 通过以下方式配置行为
config.toml以及环境覆盖
______________________________________________________________________
需求
- 操作系统:Windows
- Python:3.12(默认值;可通过配置
config.toml或FLEXSIM_PYTHON_VERSION) - 包管理器:
uv(https://astral.sh) - FlexSim:
- 实际运行需要本地FlexSim安装(或中的repo本地镜像 FlexSimDev/program) - FlexSimPy SDK子模块提供于 depends/FlexSimPy (参见 .gitmodules)
______________________________________________________________________
快速入门
引导式设置(推荐)
# From the repo root
python setup_mcp_server.py
# The setup helper will:
# - Summarize your configuration (install locations, Python version, submodule presence)
# - Ensure `uv` is installed and run `uv sync`
# - Build/install FlexSimPy via `utility/build_automation.py`
# - Optionally run a GUI integration sanity test
# - Print next steps to run the MCP server and tests手动设置
# 1) Install dependencies
uv sync
# 2) Check (and optionally build) FlexSimPy
uv run python utility/build_automation.py --status
# To force a build with a specific Python version:
# uv run python utility/build_automation.py --python-version 3.12
# 3) Launch MCP server in test mode (keeps the process alive; launches FlexSim on first tool call)
uv run mcp_server/flexsim_mcp.py --test-mode
# 4) Run integration tests (spawns the server as a subprocess; stdio MCP client)
uv run python tests/integration/test_mcp_client.py______________________________________________________________________
配置
主要配置位于 config.toml (回购根)。您还可以在运行时使用环境变量进行覆盖。
示例(摘录自 config.toml):
[flexsim]
install_path = "FlexSimDev/program"
src_path = "C:\\Program Files\\FlexSim 2025 Update 2"
[python]
version = "3.12"
[server]
name = "FlexSimPy MCP Server"
version = "0.1.0"
http_endpoint = "http://127.0.0.1:8088/mcp"
[session]
reuse_policy = "singleton"
[logging]
level = "INFO"
log_file = "flexsim_mcp.log"
[build]
flexsimpy_dir = "depends/FlexSimPy"
auto_build = true
auto_install = true环境覆盖(请参见 utility/config.py):
FLEXSIM_CONFIG_PATH–通往替代品的道路config.tomlFLEXSIM_INSTALL_PATH–覆盖FlexSim程序路径FLEXSIM_PYTHON_VERSION–覆盖FlexSimPy的Python版本FLEXSIM_LOG_LEVEL–覆盖日志记录级别
______________________________________________________________________
运行MCP服务器
两种模式:
- 测试模式(交互式;无stdio协议)
uv run mcp_server/flexsim_mcp.py --test-mode
# Keeps running; FlexSim launches on first tool call; intended for manual testing- MCP stdio模式(未传递标志时的默认模式)
uv run mcp_server/flexsim_mcp.py
# Expects MCP JSON-RPC messages via stdin/stdout; used by clients/tests客户端配置(用于Claude/Cursor/等):
{
"mcpServers": {
"flexsim": {
"command": "uv",
"args": [
"--directory",
"/",
"run",
"mcp_server/flexsim_mcp.py"
]
}
}
}______________________________________________________________________
示例工具调用(通过MCP的JSON-RPC)
打开模型
{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{
"name":"flexsim_open_model",
"arguments":{"params":{
"model_path":"C:/path/to/Model.fsm"
}}
}}跑步和阅读时间
{"jsonrpc":"2.0","id":2,"method":"tools/call",
"params":{"name":"flexsim_run_to_time","arguments":{"params":{"target_time":300}}}}
{"jsonrpc":"2.0","id":3,"method":"tools/call",
"params":{"name":"flexsim_get_time"}}评估FlexScript
{"jsonrpc":"2.0","id":4,"method":"tools/call",
"params":{"name":"flexsim_evaluate","arguments":{"params":{
"script":"getmodeltime()"
}}}}获取/设置节点值
{"jsonrpc":"2.0","id":5,"method":"tools/call",
"params":{"name":"flexsim_get_node_value","arguments":{"params":{
"node_path":"Model/Queue1/stats/input"
}}}}
{"jsonrpc":"2.0","id":6,"method":"tools/call",
"params":{"name":"flexsim_set_node_value","arguments":{"params":{
"node_path":"Model/Processor1/variables/processtime",
"value":5.0
}}}}更多FlexScript示例和行为:请参阅 eval-flexscript.md.
______________________________________________________________________
测试
集成测试(stdio客户端;验证工具和基本运行顺序):
uv run python tests/integration/test_mcp_client.py
# Test 1: open model; Test 2: run for 20s, stop, verify time > 0GUI健全性测试(手动、交互式菜单):
uv run python utility/integration_test.py
# Launches FlexSim GUI and provides simple interactive actions______________________________________________________________________
存储库结构
mcp_server/flexsim_mcp.py--FastMCP服务器和FlexSimPy控制器逻辑(入口点)utility/
- config.py --带有env覆盖的配置加载器 - build_automation.py --FlexSimPy构建/安装编排(MSBuild解析,.pyd安装) - copy_flexsim.py --将FlexSim安装复制到 FlexSimDev/ (使用 flexsim.src_path) - integration_test.py --GUI支持的健全性测试(抑制CEF stderr,安全清理) - utility.py --助手:抑制stderr、杀死FlexSim进程、强制退出
tests/integration/
- test_mcp_client.py --启动服务器并调用工具的异步stdio客户端 - README.md --测试说明和样本输出
depends/FlexSimPy--FlexSimPy SDK子模块FlexSimDev/program--FlexSim安装的可选回购本地镜像config.toml,mcp_server_config.json,AGENTS.md,eval-flexscript.md
______________________________________________________________________
批量实验编排器(设计)
一种高影响力的增强功能,可以使用复制运行参数扫描、收集指标并导出统一的 summary.csv (以及 manifest.json),实现大规模的“假设”研究。
- 设计文件:
Batch_Experiment_Orchestrator.md - 状态:设计在仓库中;计划实施(尚未
flexsim_mcp.py) - MVP工具(计划中):
flexsim_run_experiments具有参数列表、种子/复制、运行时间、统计数据、artifact_dir
______________________________________________________________________
故障排除
- 未找到FlexSim:
- 更新 flexsim.install_path 在 config.toml 或设置 FLEXSIM_INSTALL_PATH - 可选使用 utility/copy_flexsim.py 将现有安装镜像到 FlexSimDev/
- FlexSimPy不可用:
- 检查状态: uv run python utility/build_automation.py --status - 为活动Python版本进行重建,并确保 .pyd 已安装
- Stdio客户端问题:
- 确保运行服务器时没有 --test-mode 使用stdio客户端时 - 检查 mcp_server/flexsim_mcp.log 详情
- GUI噪音(CEF)或关机问题:
- 这些实用程序抑制CEF stderr,并在需要时强制安全解释器退出
