Skip to main content
Glama
FlexSim MCP Server

FlexSim MCP Server

by fateedit

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
FLEXSIM_NODENoNode executable used by `start_webserver`; defaults to the current node process.current node process
FSW_REGISTRYNoTool registry path (relative to the script)../registry.json
FLEXSIM_MODELNoDefault model name to lock onto at startup (e.g. `MyModel`). Not set by default.
FLEXSIM_WS_DIRNoWebServer service directory (containing `index.js`). Required for `start_webserver`; not set by default.
FLEXSIM_WS_BASENoWebServer address; defaults to the local WebServer and can be overridden with this environment variable.
FLEXSIM_INSTANCENoInstance number used together with `FLEXSIM_MODEL`.1

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

FlexSim 远程建模操作指南(AI 必读)

你通过 MCP 工具远程操控 FlexSim 模型。动手前先通读本指南,按【标准建模流程】顺序执行。

【第一步:确认环境】

  1. webserver_status:WebServer 不在线(无响应)→ start_webserver 启动;失败提示用户检查安装目录或管理员权限。

  2. list_instances 看在线实例、list_models 看可运行模型;目标不在线用 open_model 打开(模型加载慢,稍后 list_instances 确认)。

【标准建模流程(照此顺序执行,勿跳步)】

  1. 确认目标模型实例在线。

  2. 探索:list_tree 看现有对象(根层用 MODEL:);list_handlers 看已部署 handler。

  3. 创建对象:create_object(类型, 名字)。类型用库类名;Sink 必须写 fixedresources/Sink(写 Sink 会创建成 ProcessFlow 活动,是错误对象)。

  4. 【必做】摆位置:新对象默认堆叠在原点 (0,0,0),多个对象会完全重叠。每创建完一个对象立即 set_loc(对象, x, y, 0) 排布,不要等最后统一摆。例:产线对象按 x=0,5,10,15 一字排开。

  5. 连接:connect_objects(上游, 下游, key=A)(A=输出到输入的流向连接)。

  6. 运行:control(run);想快速看到流动用 set_run_speed(10)。

  7. 验证:get_node 读对象 objectinfo(如 Queue 的 CurContent 是否 >0 或在变化)确认实体流动。

  8. 收尾:提醒用户在 FlexSim 界面 Ctrl+S 保存(远程操作只改内存,不保存会丢失)。

【硬性规则(违反必出错)】

  1. 参数无关:调 handler 业务参数一律用通用名 value/action/name/msg,绝不依赖 handler 自身名字的参数。

  2. 删除是异步的(3~8 秒):delete_object 后稍等再验证,立即 get_node 会误报残留。

  3. 路径大小写敏感;中文/空格自动编码;复合节点(数组)不能直接写,只能写叶子子节点。

  4. 修改时间类节点(set_datetime / set_stop_time)后需 control(reset) 才生效。

  5. 模型树根路径用 MODEL:(带冒号),空字符串会 404。

  6. handler 代码禁用 getmodeltime()(实测未定义);取仿真时间用 getruntime 或读 Tools/ModelUnits/ModelDateTimes/currentTime/modelTime。

  7. 验证流动别用 Queue 的 nrreleased(该值会波动,不是累计值);用 objectinfo(CurContent/MaxContent)或 stats 表判断。

【搭建模型注意事项(从零建模,通用)】

  1. 坐标排布(必做):对象默认堆叠在原点 (0,0,0),任何多对象布局都必须用 set_loc 排布,不要等最后统一处理。产线类按 x=0,5,10,15 一字排开;环形/网格类按实际需求给坐标。

  2. 命名规范:对象名全局唯一;建议"类别+编号"(如 Obj1、Obj2、Q1~QN、控制点NNNN),便于批量管理与后续逻辑引用;避免重名、避免与 FlexSim 系统保留名冲突。

  3. 对象类型:Sink 必须写 fixedresources/Sink;拿不准的类型创建后用 get_node 验证类名。

  4. 连接方向:connect_objects(上游, 下游, key=A) 方向=输出→输入;方向反了实体不流动。连接后 get_node 读 connections 验证(上游有输出、下游有输入)。

  5. 参数配置:对象建完按需设置关键参数(写叶子节点)——Processor 的 variables/cycletime(加工时长)、Queue 的 maxcontent(容量)、Source 的 interarrivaltime(到达间隔);时间类修改后 control(reset) 生效。

  6. 数据组织(进阶,便于维护):复杂模型建议——对象集合用 Groups 分组、对象状态用 label 标签、业务数据放全局表/全局变量、复杂逻辑用 ProcessFlow 分块。真实大模型都遵循这些组织方式,AI 建模时照做会让模型更清晰、后续也好维护。

  7. 验证闭环:每步操作后回读验证(位置/连接/统计),不要批量操作完再统一查——出问题能立刻定位。

  8. PF 流程(ProcessFlow,逻辑层):复杂模型的逻辑放在 Tools/ProcessFlow 的活动块里(常用块类型:自定义代码 CustomCode、判断 Decide、延迟 Delay、事件监听 WaitForEvent、List 操作、Sink 等),不要散落在各处;块命名要清晰(中文名也可以)。改逻辑 = list_tree 按块名定位到具体活动块,改其 codeNode/decision 的 FlexScript;代码保持简洁(复杂写法可能编译失败),禁用 getmodeltime()。注意触发机制:WaitForEvent 是事件驱动(如对象状态变化触发),与轮询不同——遇到"代码改了却不执行"先查触发条件。

  9. 标签(label):对象级状态用 label 挂载(如 STATE、STATUS 这类状态标签),比塞进全局变量清晰、随对象走。读标签:get_node 对象名(含 labels 字段);写标签:write_node 对象名>labels/标签名(叶子)。标签名避免与 FlexSim 系统保留标签冲突。

【常用对象类型】 Source / Queue / Processor / Sink(必须写 fixedresources/Sink) / Dispatcher / Rack / Conveyor / Combiner / Separator / MergeSort / Transporter / Robot / Operator / ProcessFlow

【常见场景模板】

  • 基础产线(Source→Queue→Processor→Sink):

    1. create_object(Source,Source1) → create_object(Queue,Queue1) → create_object(Processor,Processor1) → create_object(fixedresources/Sink,Sink1)

    2. set_loc(Source1,0,0,0) → set_loc(Queue1,5,0,0) → set_loc(Processor1,10,0,0) → set_loc(Sink1,15,0,0)

    3. connect_objects(Source1,Queue1,A) → connect_objects(Queue1,Processor1,A) → connect_objects(Processor1,Sink1,A)

    4. control(run) → get_node 读 Queue1 的 objectinfo,确认 CurContent 在增长(实体在流动)。 提示:Source 默认 exponential(0,10) 平均 10 秒生成一个,想看快速流动用 set_run_speed(10)。

  • 加自定义功能:deploy_handler(名字, 参数无关 FlexScript) → call_handler 验证。

  • 改参数:write_node(叶子路径, 新值) → control(reset) 生效。

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{}
prompts
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_guideA

获取 FlexSim 远程建模操作指南(AI 必读):工作流程、硬性规则(参数无关/异步删除/Ctrl+S 持久化/路径大小写等)、部署新功能方法与典型场景。建议动手前先调用。

webserver_statusA

检测 FlexSim WebServer 是否在线。所有模型操作都依赖 WebServer,动手前先确认;不在线用 start_webserver 启动。

start_webserverA

启动 FlexSim WebServer 服务(node index.js)。若直接启动失败(端口绑定需要管理员权限)会自动尝试提权(可能弹 UAC 窗口)。启动后稍等几秒再用 webserver_status 确认。

list_instancesA

列出 WebServer 上所有运行中的模型实例(模型名+实例号)。操作前先调用确认目标模型在线。

get_targetA

读取当前锁定的模型实例。所有读取、写入、运行和 handler 操作都会作用于这个目标;操作前必须检查。

select_targetA

锁定后续所有模型操作的目标实例。会验证该实例确实在线;多个实例在线时必须先调用本工具,服务器不会再默认选择第一个实例。

list_modelsA

列出 WebServer 上所有可运行的模型名(availablemodels)。用户要求打开某模型时,先查这个名字是否存在。

open_modelA

在 WebServer 上启动(打开)一个模型实例(createinstance)。大模型加载需要时间,启动后稍等几秒再用 list_instances 确认在线。若模型已在线则无需调用。

list_handlersB

列出目标模型已部署的所有 handler(功能)名称。handler 位于 Tools/serverinterface/queryhandlers 目录,是模型可通过 HTTP 调用的功能节点。

get_nodeA

读取模型树节点值,返回 JSON(数字/字符串/复合数组)。路径大小写敏感;对象名(如 Q1)或完整路径(如 Tools/ModelUnits/ModelDateTimes/startTime/dateString)均可。

write_nodeA

如未先读操作指南,请先调用 get_guide。写入模型树节点值(数字/字符串由模型自动判断)。写入复合(数组)节点会失败,必须写叶子子节点。修改时间类节点后通常需要 reset 才生效。

create_objectA

如未先读操作指南,请先调用 get_guide。从 FlexSim 对象库创建对象到模型。类型如 Source/Sink/Queue/Processor/Dispatcher/Rack/Conveyor/Combiner/Separator/MergeSort/Transporter/Robot/Operator/ProcessFlow 等。

set_locA

如未先读操作指南,请先调用 get_guide。设置对象坐标(x/y/z)。通过写入对象 spatial 节点实现,不依赖模型侧 set_loc handler(只装 4 个基础 handler 即可用)。注意:多个对象创建后默认堆叠在原点 (0,0,0),创建后必须用本工具排布位置(如产线按 x=0,5,10,15 一字排开)。

connect_objectsB

如未先读操作指南,请先调用 get_guide。连接两个对象(A 连接=输出到输入,S 连接=共享)。contextdragconnection 语义,A 键建输入输出连接。

delete_objectA

如未先读操作指南,请先调用 get_guide。删除对象/节点。注意:删除是异步操作,3~8 秒后模型界面才生效;删除后不能立即用 get_node 判断是否成功(会误报残留),应稍后重试 delete_object 看是否返回 not found。

list_treeA

浏览模型树任意路径的子节点(treelayer),返回子节点名与类型。root 用 MODEL: 或留空;子路径用相对路径(如 Tools/ModelUnits 或对象名 Q1)。用于探索模型结构、找节点路径。

add_nodeC

在模型树指定父节点下添加一个普通节点。add_node=&value=父路径&name=新节点名(参数无关)。

rename_nodeB

给模型树节点/对象改名。value=旧路径,name=新名。若模型未装 rename_node handler 会自动先部署再调用。

controlA

如未先读操作指南,请先调用 get_guide。仿真控制:run 运行 / stop 停止 / reset 重置(回到初始状态,时间类修改后需 reset 生效)。

set_datetimeA

设置模型开始时间,格式 YYYY-MM-DD HH:MM:SS(如 2026-08-25 08:30:00)。设置后需 reset 生效。

set_stop_timeC

设置模型停止时间(秒)。

set_run_speedC

设置运行速度倍数。

get_run_stateB

查询运行状态(runstate 0/1)与当前模型时间。

deploy_handlerA

★ 核心:向目标模型部署(复制)一个新 handler(功能)。copy_handler=&value=模板&name=新名&code=新代码。业务参数必须用通用名(value/action/name/msg),绝不能读取 handler 自身名字的参数。部署后立即生效(仅当前实例内存),持久化需用户在 FlexSim 界面 Ctrl+S。部署成功后应调用一次验证。

call_handlerA

通用调用任意已部署 handler。参数用通用名:value(对象/路径)、action(值/动作)、name(新名)、msg(消息)。返回 XML/文本。调用前如不确定 handler 是否存在,先 list_handlers。

Prompts

Interactive templates invoked by user choice

NameDescription
model_overview了解当前模型:确认 WebServer/实例在线,列出已部署 handler 与模型结构概览
build_production_line按自然语言描述搭建一条产线(创建对象 → 定位 → 连线 → 运行 → 验证流动)
add_feature为当前模型添加一个新功能(handler):描述需求,AI 生成参数无关代码并部署验证

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.3/5.0

Scored across 25 tools

Disambiguation4/5

Most tools map to a distinct resource+action (node CRUD, object creation, sim control, handler management) and descriptions clarify the boundaries. Minor overlaps exist between get_run_state and control, and between set_datetime/set_stop_time/set_run_speed and direct write_node edits, but these are workable.

Naming Consistency4/5

The dominant pattern is verb_noun snake_case (get_node, create_object, deploy_handler, list_models), which is predictable. Two outliers — 'webserver_status' (noun-first) and 'control' (bare verb) — are minor deviations that don't hurt readability.

Tool Count3/5

25 tools sits at the heavy end. The surface spans server lifecycle, model/instance management, tree editing, simulation control, and handler deployment, so the count is defensible, but several narrow setters (set_run_speed, set_stop_time, set_loc) inflate the list beyond what an agent can comfortably scan.

Completeness3/5

Core workflows are covered: node read/write/add/rename/delete, object creation and wiring, run/stop/reset, and handler deploy/call/list. However, there is no way to close or unload a model instance, no handler removal/undeploy, and no error/log retrieval, leaving notable lifecycle gaps.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues