NetLogo的第一个MCP(模型上下文协议)服务器——使AI助手能够通过自然对话创建、运行和分析基于代理的模型。
适用于: Claude Code、Claude Desktop、Cursor、Windsurf、VS Code(Copilot)、Cline、Continue、Roo Code、Zed、OpenCode、Codex——任何支持MCP的工具。
为什么选择NetLogo MCP?
作为一名正在学习基于代理的建模课程的人工智能学生,我搜索了一个MCP服务器来控制NetLogo——什么都没有。所以我建了一个。
你不用手动编写NetLogo代码、点击按钮和调整滑块,而是用简单的英语告诉你的AI助手你想要什么:
“用100只绵羊和20只狼创建一个捕食者-猎物模型。运行500只蜱虫,向我展示种群动态。”
人工智能编写代码,运行模拟,并通过对话向您显示结果。
运作原理
You (in any MCP client) → AI Assistant → MCP Protocol → NetLogo MCP Server → NetLogo (GUI or headless JVM)默认情况下,会打开一个真实的NetLogo窗口,以便您可以实时观看模拟运行。无头模式可用于CI或服务器。
特性
- 从代码创建模型(AI将其封装在其中
.nlogox格式) - 运行模拟,收集逐点数据作为标记表
- 运行BehaviorSpace实验 --列出保存的实验,预览运行计划,通过无头启动器驱动并行参数扫描
- 将视图导出为PNG格式——在聊天中可见
- 设置全局变量、滑块、开关
- 获取世界状态、代理计数、世界维度、补丁网格
- 内置NetLogo原语、编程指南和 NetLogo 6→7 过渡指南 作为MCP资源
- 用于模型分析、ABM创建、参数扫描、BehaviorSpace实验和CoMSES探索的提示模板
- 用于教学和实时探索的实时GUI模式
- 令牌高效输出模式(
summary_only,max_rows抽选)用于长期运行
工具
| 工具 | 说明 |
|---|---|
create_model(code) | 从NetLogo代码创建新模型 |
open_model(path) | 加载现有的.nlogo/.nlogox模型 |
command(netlogo_command) | 执行NetLogo命令(设置、执行等) |
report(reporter) | 评估记者表达 |
run_simulation(ticks, reporters) | 运行N个刻度,以表格形式收集数据 |
set_parameter(name, value) | 设置全局变量/滑块/开关 |
get_world_state() | 获取滴答数、代理数、世界维度 |
get_agent_sample(breed, n, attributes) | 将N名特工作为降价表进行抽样——填补了计数和手工制作的记者之间的空白 |
get_patch_data(attribute, max_cells) | 以二维网格形式获取补丁数据(用于热图);上述自动降采样 max_cells (默认值为10000) |
export_view() | 将当前视图导出为PNG图像 |
save_model(name, code) | 将模型保存到文件 |
export_world() | 将完整的世界状态导出到CSV |
close_model() | 卸载当前模型,然后 clear-all 工作空间 |
server_info() | 检查服务器配置(路径、GUI模式、无头启动器) |
list_models() | 列出模型目录中的模型文件 |
search_comses(query) | 搜索CoMSES-Net模型库 |
get_comses_model(uuid) | 获取一个COMSES模型的元数据+引用文本 |
download_comses_model(uuid) | 安全下载+提取COMSES存档 |
open_comses_model(uuid) | 下载(或重用缓存)并加载NetLogo模型 |
read_comses_files(uuid) | 从下载的模型中读取ODD/源代码内容 |
list_experiments() | 列出加载模型中保存的BehaviorSpace实验 |
preview_experiment(...) | 预览BehaviorSpace运行计划(总运行次数、时间估计)而不执行 |
run_experiment(...) | 无头运行BehaviorSpace实验(命名或内联规范) |
加上4个资源(原语参考、编程指南、模型源、, NetLogo 6→7 过渡指南)5个提示(analyze_model, create_abm, parameter_sweep, explore_comses, behaviorspace_experiment).
行为空间整合
从任何MCP客户端运行NetLogo的BehaviorSpace实验。三个工具涵盖了工作流程:
list_experiments()--阅读 `装载部分.nlogox` 对节省的实验进行盘点。没有JVM往返;瞬间。preview_experiment(...)--在不执行的情况下显示运行计划(总运行次数、参数组合、时间估计)。在大扫除之前,一定要先跑这个。run_experiment(...)--驱动器NetLogo_Console --headless(或netlogo-headless.bat)在单独的JVM中。返回解析结果以及CSV全表的路径。
长跑受到以下因素的限制 max_total_runs (默认值200)和 timeout_seconds (默认值为600);部分表CSV在超时时保留。
试试这个 behaviorspace_experiment 提示或只是问: *“进行一项BehaviorSpace实验,以10步为一步,将初始密度从50到90不等,每次三次,测量海龟数量。”*
CoMSES-Net集成
NetLogo MCP可以搜索并安全地从 CoMSES-Net计算模型库 --最大的同行评审ABM存储库。NetLogo模型自动加载;Python/R/Julia模型在本地被识别和缓存,因此您可以从任何MCP客户端(包括没有文件系统工具的客户端)检查它们的源代码和ODD文档。
试试这个 explore_comses 提示或只是问: *“在COMSES上给我找一个捕食者-猎物ABM,并运行一个简短的基线。”*
安全属性(适用于每次下载):
- 档案以硬字节上限流式传输(
COMSES_MAX_DOWNLOAD_MB,默认50MB)强制中流,而不仅仅是通过HEAD。 - 在提取之前,每个zip成员都经过路径遍历验证。
- 未压缩尺寸溢出时拉链炸弹被拒绝。
- 提取是原子性的:首先下载到临时目录中,然后只有在成功后才能移动到缓存中。
- 缓存目录只有在携带
.comses_complete标记。 "latest"在计算任何缓存路径之前,解析为具体版本;解析后的版本被返回给AI,因此后续读取保持固定在同一插槽中。
安全模型
NetLogo MCP提供连接AI客户端 主机上的任意文件和进程I/O,仅限于服务器运行的用户 command 和 create_model 工具接受任何NetLogo声明;NetLogo的标准原语包括 file-open / file-write-line / file-delete, export-world / import-world, set-current-directory,并通过扩展名调用shell(sh),Python执行(py),以及网络I/O(web).像对待本地终端一样对待信任边界: 只将此服务器连接到您信任的AI客户端,就像shell一样。
具体来说:
- stdio传输假定父客户端是受信任的。没有身份验证,添加它也无济于事——父进程拥有文件描述符。
- 这
models/和exports/任何工具调用都可以写入目录。不要指着NETLOGO_MODELS_DIR在一个你不会去的地方chmod o+w. - 模型下载通过
open_comses_model使用路径遍历和zip炸弹防护进行提取(请参阅上面的CoMSES-Net集成),但 加载后,任何command对它们的调用运行不受信任的NetLogo代码.在第三方模型上运行安装程序之前,请阅读ODD文档并浏览源代码。 - 未来的版本可能会提供选择加入功能
NETLOGO_MCP_RESTRICTED=true阻止危险图元的模式。默认设置将保持不受限制——该产品是“让AI驱动NetLogo”,而受限制的默认设置将破坏核心流程。
先决条件
| 要求 | 是否通过终端安装? | 如何 |
|---|---|---|
| Python 3.10+ | 是 | Windows: winget install Python.Python.3.12 ·macOS: brew install python@3.12 ·Linux: sudo apt install python3.12 |
| Java JDK 11+ | 是 | Windows: winget install EclipseAdoptium.Temurin.21.JDK ·macOS: brew install --cask temurin ·Linux: sudo apt install openjdk-21-jdk |
| Git | 是 | Windows: winget install Git.Git ·macOS/Linux:通常预装 |
| Netlogo 7.0+ | 否--手动 | 下载自 ccl.northwestern.edu/netlogo |
只有NetLogo需要手动下载。 其他所有内容都可以通过终端安装,下面的Zero Config Setup提示符会自动处理这些内容。
零配置设置(推荐)
如果您正在使用AI编码工具,请将下面的提示复制到您的聊天中。AI将检测您的操作系统,查找您的NetLogo和Java安装,克隆仓库,安装依赖关系,配置MCP客户端,并告诉您如何使用它。
Click to copy the setup prompt
Please set up the NetLogo MCP server for me end-to-end. Follow these steps carefully:
1. **Detect my environment**
- Identify my OS (Windows / macOS / Linux).
- Check Python version (need 3.10+). If missing, tell me to install it first and stop.
- Check for Java JDK 11+ (not JRE). Look in common locations (JAVA_HOME env var, standard install dirs). If missing, tell me to install Adoptium Temurin JDK 11+ and stop.
- Check for NetLogo 7.0+. Look in common locations:
- Windows: `C:/Program Files/NetLogo*`
- macOS: `/Applications/NetLogo*`
- Linux: `/opt/netlogo*`, `~/netlogo*`
If NetLogo isn't installed, tell me to download it from https://ccl.northwestern.edu/netlogo/download.shtml and stop.
2. **Clone and install**
- Pick a sensible parent directory (e.g. my home folder or `~/projects`).
- Run: `git clone https://github.com/Razee4315/NetLogo-MCP.git`
- `cd` into the cloned directory.
- Run: `pip install -e .`
- Verify the `netlogo-mcp` command is now available on my PATH.
3. **Identify my MCP client**
- Figure out which AI tool I'm using (Claude Code, Cursor, Windsurf, Cline, Continue, Roo Code, Zed, OpenCode, VS Code Copilot, Codex, or Claude Desktop).
- If you're not sure, ask me.
4. **Configure the MCP client**
- Locate (or create) the correct config file for my client (see docs/CLIENTS.md for exact paths and schemas).
- Add a `netlogo` server entry with:
- `command`: `netlogo-mcp`
- `env.NETLOGO_HOME`: the NetLogo path you detected
- `env.JAVA_HOME`: the JDK path you detected
- `env.NETLOGO_GUI`: `"true"` (default — opens a live NetLogo window)
- Use the exact JSON schema for my specific client (e.g. `"type": "stdio"` for Cursor, `"servers"` key for VS Code).
- Preserve any existing config entries — merge, don't overwrite.
5. **Tell me what to do next**
- Tell me to fully restart my AI tool for the new MCP server to load.
- Warn me that the FIRST tool call takes 30–60 seconds while the Java Virtual Machine starts (the NetLogo GUI window will appear when it's ready). Tell me NOT to click stop during this wait.
- Give me this exact test prompt to try after restart:
> "Create a simple predator-prey model with wolves and sheep on a green landscape. Run setup, then run 100 ticks while tracking wolf and sheep counts. Export the view before and after so I can see how the world evolved."
- Tell me where models and exports are saved (by default, the current working directory's `models/` and `exports/` folders) and that I can browse them with the `list_models` tool.
Do not skip any verification step. If something fails, stop and tell me exactly what failed and how to fix it.手动安装
git clone https://github.com/Razee4315/NetLogo-MCP.git
cd NetLogo-MCP
pip install -e .配置
创建一个 .env 项目根目录中的文件(或在MCP客户端配置中设置env变量):
# Windows
NETLOGO_HOME=C:/Program Files/NetLogo 7.0.3
JAVA_HOME=C:/Program Files/Eclipse Adoptium/jdk-25.0.2.10-hotspot
# macOS
# NETLOGO_HOME=/Applications/NetLogo 7.0.3
# JAVA_HOME=/Library/Java/JavaVirtualMachines/temurin-21.jdk/Contents/Home
# Linux
# NETLOGO_HOME=/opt/netlogo-7.0.3
# JAVA_HOME=/usr/lib/jvm/java-21-openjdk环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
NETLOGO_HOME | 是 | NetLogo安装目录的路径 |
JAVA_HOME | 否 | JDK目录的路径(如果未设置,则自动检测) |
NETLOGO_MODELS_DIR | 否 | 模型文件目录(默认为当前工作目录 ./models) |
NETLOGO_GUI | 没有 | "true" (默认)用于实时GUI窗口, "false" 无头 |
NETLOGO_EXPORTS_DIR | 否 | 导出视图/世界的目录(默认为当前工作目录 ./exports) |
COMSES_MAX_DOWNLOAD_MB | 否 | 最大CoMSES存档大小(MB)(默认值50)。强制中流。 |
NETLOGO_EXPORTS_MAX_FILES | 否 | 每个文件中保留的最大文件数 exports/ 子目录(默认值为200)。最老的在每次修剪后 export_view / export_world。设置为 0 禁用。 |
NETLOGO_MCP_RESTRICTED | 否 | 设置为 "true" 阻止危险的NetLogo原语(file-*, import-world, set-current-directory,扩展壳逃逸)。默认情况下关闭--请参阅安全模型。 |
客户端设置
下面是三个最常见的客户。 关于Windsurf、Cline、Continue、Roo Code、Zed、OpenCode、Codex和Claude Desktop,请参阅 docs/CLIENTS.md.
Claude Code
添加到您的项目 .mcp.json:
{
"mcpServers": {
"netlogo": {
"command": "netlogo-mcp",
"args": [],
"env": {
"NETLOGO_HOME": "C:/Program Files/NetLogo 7.0.3",
"JAVA_HOME": "C:/Program Files/Eclipse Adoptium/jdk-25.0.2.10-hotspot"
}
}
}
}重新启动Claude Code并用验证 /mcp.
Cursor
添加 .cursor/mcp.json (项目)或 ~/.cursor/mcp.json (全球):
{
"mcpServers": {
"netlogo": {
"type": "stdio",
"command": "netlogo-mcp",
"args": [],
"env": {
"NETLOGO_HOME": "C:/Program Files/NetLogo 7.0.3",
"JAVA_HOME": "C:/Program Files/Eclipse Adoptium/jdk-25.0.2.10-hotspot"
}
}
}
}VS Code (Copilot)
添加 .vscode/mcp.json:
{
"servers": {
"netlogo": {
"type": "stdio",
"command": "netlogo-mcp",
"args": [],
"env": {
"NETLOGO_HOME": "C:/Program Files/NetLogo 7.0.3",
"JAVA_HOME": "C:/Program Files/Eclipse Adoptium/jdk-25.0.2.10-hotspot"
}
}
}
}VS代码使用"servers"而不是"mcpServers".
GUI与无头模式
| 模式 | NETLOGO_GUI | 发生了什么 |
|---|---|---|
| 实时图形用户界面 (默认) | "true" 或省略 | 打开NetLogo窗口。观看模拟实时运行。 |
| 无头 | "false" | 没有窗户。更快的启动。通过查看快照 export_view 聊天。 |
模式在启动时设置——切换、更改env变量并重新启动客户端。
快速开始
连接后,在任何MCP客户端中尝试以下提示:
> Create a simple NetLogo model with 50 turtles doing a random walk.
Run setup, simulate 100 ticks, and export the view.
> Open the Wolf Sheep Predation model and run a parameter sweep
on initial-number-wolves from 10 to 100.
> Build a disease spread model with susceptible, infected, and
recovered agents on a grid.第一次工具调用需要30-60秒 JVM启动时。不要单击停止——NetLogo窗口将在准备就绪时出现。在那之后,每个电话都是即时的。
故障排除
| 问题 | 解决方案 |
|---|---|
NETLOGO_HOME is not set | 将环境变量设置到NetLogo安装目录 |
JAVA_HOME is not set | 将其设置到JDK目录(而不是JRE) |
| JVM启动时崩溃 | 确保JAVA_HOME指向JDK 11+,而不是旧版本 |
No model is loaded | 呼叫 open_model 或 create_model 在使用其他工具之前 |
| 第一个调用挂起30-60秒 | 正常——JVM正在预热。不要点击停止。 |
| 服务器无法连接 | 运行 netlogo-mcp 在终端中手动查看错误输出 |
文档
- docs/CLIENTS.md --为所有11个MCP客户端设置
- docs/DEVELOPMENT.md --项目结构、运行测试、架构说明
- 贡献.md --如何做出贡献
- 更改日志.md --版本历史
上市于
](https://lobehub.com/mcp/razee4315-netlogo_mcp)
作者
保存阿巴斯 电子邮件:saqlainrazee@gmail.com github: @Razee4315 领英: @saveinrazee
许可证
该项目根据 MIT许可证 --可以出于任何目的自由使用、修改和分发。
