Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

NetLogo MCP

PYPI · NETLOGO-MCP

Create, run, and analyze NetLogo agent-based models through natural conversation

Available components

−4 this week 90 Trust /100

Last scanned (3 hours ago)

Scores higher than 93% of PyPI servers

Category AI and Machine Learning

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security99
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • 3 of 30 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to Razee4315/NetLogo-MCP). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 151 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability82
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 4201 tokens (~150/item across 28 items; 25 tools + 3 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management70
  • Stability observed for 21 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage88
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 59% of tool parameters carry a description.Partial
  • Structured output schemas are declared (96% of tools); any adoption earns full credit.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "command" implies "execute" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 27 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 5 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.

  • 4 Nov 26 −5
    • Stability: pass → 0.67 functional
  • 29 Oct 26 0
    • Stability: 0.97 → pass security
  • 28 Oct 26 0
    • Stability: pass → 0.97 functional
  • 22 Oct 26 0
    • Stability: 0.97 → pass security
  • 21 Oct 26 0
    • Stability: pass → 0.97 functional
  • 17 Oct 26 +3
    • Stability: 0.80 → pass security
  • 16 Oct 26 −3
    • Stability: pass → 0.80 functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed pypi/netlogo-mcp@1.0.2

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem pypi
Reason Verified
Discovered via Registry attestation endpoint
Source repo Razee4315/NetLogo-MCP
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/Razee4315/NetLogo-MCP/.github/workflows/release.yml@refs/tags/v1.0.2
Rekor log index 1739276369
Predicate type PyPI publish attestation https://docs.pypi.org/attestations/publish/v1
Subject digest sha256:d97d8934384f4dafbe2ba7b790c0c54d4db263aab0773ddb8ac057542f9c0050

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 30 packages
Packages resolved 30
Stale 3
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 25 exposed · ~4,036 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
close_model ~112

Unload the currently loaded model and reset the workspace. Useful when you want to discard pending state (mid-run agents, set parameters, pending plots) and start fresh, or before opening a new model file from disk to make sure cached compilation state isn't carried forward. Note: this does NOT shut down the JVM or NetLogo workspace — only the model. The next `open_model` / `create_model` call will reuse the same JVM (no 30-60s warmup).

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultstringyes–

No examples provided.

command ~45

Execute a NetLogo command (e.g. 'setup', 'go', 'create-turtles 10').

NameTypeReqDescription
netlogo_commandstringyesThe NetLogo command string to execute.
NameTypeReqDescription
resultstringyes–

No examples provided.

create_model ~375

Create a new NetLogo model from code and load it.

NameTypeReqDescription
codestringyesNetLogo model code. Can be just the procedures (globals, breeds, setup, go, etc.) — the .nlogox envelope will be added automatically. Or provide a full .nlogox XML file.
widgets––Optional interface widgets. Each item is an object: {"type": "slider", "variable": "num-sheep", "min": 0, "max": 250, "default": 100, "step": 1, "label"?, "units"?} {"type": "switch", "variable": "s…
NameTypeReqDescription
resultstringyes–

No examples provided.

download_comses_model ~272

Download and safely extract a COMSES model archive. Standalone "fetch but don't open" tool. Most AI flows should use `open_comses_model` instead — it subsumes this tool and also loads NetLogo models into the workspace. Safety guarantees: - `version="latest"` is resolved to a concrete version BEFORE any cache path is computed. Cache dirs are named by the resolved version. - HEAD request screens oversize archives before streaming. - Stream enforces the byte cap mid-download; overruns abort and delete the partial file. - Zip members are validated against path traversal before extraction. - Uncompressed total is checked against 2 × cap to reject zip bombs. - Extract happens in a temp directory; only a successful extract is moved atomically into the cache. A `.comses_complete` marker is written on success; future calls only trust cached dirs with the marker.

NameTypeReqDescription
identifierstringyesFull model UUID (from `search_comses`).
max_mbnumber–Size cap in MB. Pass 0 or omit to use the `COMSES_MAX_DOWNLOAD_MB` env var (default 50 MB).
versionstring–Version string (e.g. "1.2.0") or "latest".
NameTypeReqDescription
resultstringyes–

No examples provided.

export_view ~30

Export the current NetLogo view as a PNG image. Returns the image so Claude can see the model visualization.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

export_world ~52

Export the full world state to a CSV file. Saves all turtle, patch, and link data. Useful for checkpointing a simulation or analyzing the complete state offline. Returns the path to the exported CSV file.

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultstringyes–

No examples provided.

get_agent_sample ~224

Return a sample of agents with selected variables as a markdown table. Filling the gap between ``get_world_state`` (aggregates only) and hand-crafted ``report`` calls. Picks N random agents from the named breed (or all turtles when ``breed`` is None) and reports the requested per-agent attributes.

NameTypeReqDescription
attributes––Per-agent variables to report. Each entry must also be a valid NetLogo identifier. Defaults to ``who``, ``xcor``, ``ycor``, ``color``, ``heading``.
breed––Agentset name, e.g. ``"sheep"``, ``"wolves"``. ``None`` means ``turtles``. Must be a valid NetLogo identifier — letters, digits, ``-``, ``_``, ``.``, ``?``, ``!`` — same rule as ``set_parameter``.
ninteger–Number of agents to sample (1-200). When N exceeds the agentset size, every agent is returned.
NameTypeReqDescription
resultstringyes–

No examples provided.

get_comses_model ~37

Get detailed metadata for a specific CoMSES model.

NameTypeReqDescription
identifierstringyesFull UUID from `search_comses` results.
NameTypeReqDescription
resultstringyes–

No examples provided.

get_patch_data ~219

Get patch data as a 2D grid (useful for heatmaps / spatial analysis).

NameTypeReqDescription
attributestringyesThe patch variable to report (e.g. 'pcolor', 'grass').
max_cellsinteger–Upper bound on the number of grid cells returned in full-grid mode. When the world exceeds the cap, rows and columns are evenly downsampled (nearest-neighbor) to fit; the response includes a ``downsa…
summary_onlyboolean–If True, return shape + min/mean/max/std/unique-count instead of the full 2D grid. For a 100×100 world this trims ~10k cells of JSON to ~6 numbers — useful when you just want to know "is this attribu…
NameTypeReqDescription
resultstringyes–

No examples provided.

get_world_state ~39

Get the current world state: tick count, agent counts, world dimensions. Returns JSON with ticks, turtle/patch/link counts, and world bounds.

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultstringyes–

No examples provided.

list_experiments ~174

List BehaviorSpace experiments saved inside a NetLogo model file. Reads the `<experiments>` section of a `.nlogox` (or `.nlogo`) without starting a JVM, so it's instant. By default it inspects the model the AI most recently loaded; pass `model_path` to inspect a specific file. Returns JSON: `{"model_path": ..., "experiments": [<spec>...]}` where each spec includes `name`, `repetitions`, `time_limit`, `setup_commands`, `go_commands`, `metrics`, `variables` (with `expanded_size` per variable), and `total_runs`. An empty list means the file has no saved experiments — you can still pass an inline spec to `run_experiment`.

NameTypeReqDescription
model_path–––
NameTypeReqDescription
resultstringyes–

No examples provided.

list_models ~37

List all .nlogo model files in the configured models directory. Returns a JSON array of {name, path, size_kb} objects.

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultstringyes–

No examples provided.

open_comses_model ~440

Download (or reuse cache), then open a COMSES model ready to use. This is the **single entry point** most AI flows should call. Behavior: - Resolves `"latest"` to a concrete version BEFORE any cache path is computed. The returned `resolved_version` is what every follow-up `read_comses_files` call MUST pass — never re-pass `"latest"` in the same flow, or you risk inspecting a different cache slot than the model you just loaded. - If the cache for `(identifier, resolved_version)` is already complete (has `.comses_complete`), skips download. - Otherwise, downloads + extracts safely (same logic as `download_comses_model`). - If the model is NetLogo, picks one `.nlogo` / `.nlogox` per Section 4.4 rules (exactly one → use it; else prefer `code/`; else prefer `.nlogox`; else lex-largest relative path — a deterministic tie-breaker, NOT semver-aware). - If NetLogo, loads it into the workspace. - If not NetLogo, returns structured info for manual follow-up. Returns JSON with: - `status`: "loaded_netlogo", "not_runnable_in_netlogo", or "no_netlogo_file". - `resolved_version`: concrete version string (never "latest"). - `identifier`, `title`, `language`, `license`, `cached`. - `extracted_path`: absolute path to cached model directory. - `all_netlogo_files`: list of every NetLogo file found. - `loaded_netlogo_file`: the one selected (if any). - `code_files`: source files by extension. - `odd_doc`: ODD / README path, if any. - `message`: short text for the AI to show the user.

NameTypeReqDescription
identifierstringyesFull model UUID.
max_mbnumber–Max download size in MB. Pass 0 or omit to use the env default.
versionstring–Version string or "latest".
NameTypeReqDescription
resultstringyes–

No examples provided.

open_model ~45

Open an existing .nlogo model file.

NameTypeReqDescription
pathstringyesPath to the .nlogo file. Can be absolute, or relative to the configured models directory.
NameTypeReqDescription
resultstringyes–

No examples provided.

preview_experiment ~245

Show the run plan for a BehaviorSpace experiment WITHOUT executing it. Use this before `run_experiment` to verify the parameter combinations, total runs, and rough time estimate. Two modes: - **By name:** pass `experiment_name` (must match a saved experiment in the model file). The other args are ignored. - **Inline:** omit `experiment_name` and pass `metrics` + (optionally) `variables`, `repetitions`, `time_limit`, `setup_commands`, `go_commands`, `stop_condition`. Returns JSON with the resolved spec, `total_runs`, and a coarse `estimated_seconds_lower_bound` derived from `time_limit × total_runs` assuming roughly 1k ticks/s per run (real models are usually slower).

NameTypeReqDescription
experiment_name–––
go_commandsstring––
metrics–––
model_path–––
repetitionsinteger––
run_metrics_every_stepboolean––
sequential_run_orderboolean––
setup_commandsstring––
stop_condition–––
time_limitinteger––
variables–––
NameTypeReqDescription
resultstringyes–

No examples provided.

read_comses_files ~427

Return text contents of source and documentation files from a downloaded COMSES model. The model MUST already be downloaded by `open_comses_model` or `download_comses_model`. If the cache is absent, this tool returns an error telling the AI to call one of those first. The AI should pass the `resolved_version` it captured from `open_comses_model` — not the literal string `"latest"` — or it risks inspecting a different cache slot than the model it just loaded. When `version="latest"` is passed, this tool calls the COMSES API to resolve it (so it works standalone) and surfaces the concrete version in the `resolved_version` field of the response. Behavior: - Files are UTF-8 decoded with `errors="replace"` so binary junk never aborts the call. Every file that matches `extensions` is returned as a string (may contain replacement characters for non-text bytes). - Files are included in priority order: ODD docs → NetLogo source → other code → other .md/.txt → everything else matching extensions. - Total body is capped at `max_total_bytes` (default 50 KB — sized to fit in a single conversational-LLM tool response). When the cap is hit mid-file, that file is truncated at a line boundary; subsequent files are listed in `omitted_files` with reason `byte_cap_reached`. For larger pulls, pass a higher value explicitly. - Files matching no `extensions` filter are listed in `omitted_files` with reason `extension_not_in_filter`.

NameTypeReqDescription
extensions––List of file suffixes (with dot) to include. Defaults to NetLogo + common ABM languages + .md + .txt.
identifierstringyesFull model UUID.
max_total_bytesinteger–Cap on total returned content.
versionstring–Concrete version (preferred) or "latest". Always surfaced back in `resolved_version`.
NameTypeReqDescription
resultstringyes–

No examples provided.

report ~46

Evaluate a NetLogo reporter expression and return its value.

NameTypeReqDescription
reporterstringyesA NetLogo reporter expression (e.g. 'count turtles', 'mean [energy] of turtles').
NameTypeReqDescription
resultstringyes–

No examples provided.

run_experiment ~317

Run a BehaviorSpace experiment headlessly and return summarized results. Two ways to specify the experiment: - **By name** — pass `experiment_name` matching a saved experiment in the loaded model (.nlogox `<experiments>` section). All other experiment-shape args are ignored. - **Inline** — omit `experiment_name`. Required: `metrics`. Optional: `variables` (list of `{"name", "values"}` or `{"name", "first", "step", "last"}`), `repetitions`, `time_limit`, `setup_commands`, `go_commands`, `stop_condition`. Variable shapes (Cartesian product of all expanded values is run for each repetition):: [{"name": "density", "values": [50, 60, 70]}, {"name": "growth-rate", "first": 0.1, "step": 0.05, "last": 0.3}]

NameTypeReqDescription
experiment_name–––
go_commandsstring––
max_total_runsinteger––
metrics–––
model_path–––
output_name–––
repetitionsinteger––
run_metrics_every_stepboolean––
sequential_run_orderboolean––
setup_commandsstring––
stop_condition–––
threadsinteger––
time_limitinteger––
timeout_secondsinteger––
variables–––
NameTypeReqDescription
resultstringyes–

No examples provided.

run_simulation ~193

Run the simulation for N ticks and collect reporter data each tick.

NameTypeReqDescription
go_commandstring–The go command to use (default: "go").
max_rowsinteger–If > 0 and the run produces more rows than this, the output is decimated by evenly-spaced sampling (always keeps the final tick). Use to keep a long run's output below the client's context budget wit…
reportersarrayyesList of NetLogo reporter expressions to collect each tick.
summary_onlyboolean–If True, return only min/mean/max/std/final per reporter — much smaller than the full per-tick table. Use this when you don't need the time series, e.g. parameter sweeps that only care about the fina…
ticksintegeryesNumber of ticks to run (1-10000).
NameTypeReqDescription
resultstringyes–

No examples provided.

save_model ~139

Save NetLogo model code to a .nlogox file in the models directory. This saves the model so you can open it in the NetLogo desktop app for live visualization with GUI, sliders, and real-time animation.

NameTypeReqDescription
codestringyesNetLogo model code (procedures only — envelope added automatically). Or provide a full .nlogox XML file.
namestringyesFilename for the model (without extension).
widgets––Optional interface widgets — same schema as create_model (slider/switch/button/monitor). Slider/switch widgets DEFINE their variable; don't also declare it in `globals [...]`.
NameTypeReqDescription
resultstringyes–

No examples provided.

search_comses ~63

Search the CoMSES Net computational model library.

NameTypeReqDescription
pageinteger–1-indexed page number (10 results per page).
querystring–Free-text search across title, description, authors, tags. Leave empty to browse all models.
NameTypeReqDescription
resultstringyes–

No examples provided.

server_info ~91

Return a snapshot of the running NetLogo MCP server's configuration. Useful as a no-cost health check for the AI / user — returns the server version, configured paths, GUI mode, currently-loaded model, and whether a NetLogo headless launcher is reachable for BehaviorSpace runs. No JVM round-trip; this is a pure config / filesystem inspection so it works even before the workspace is fully initialized.

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultstringyes–

No examples provided.

set_parameter ~107

Set a NetLogo global variable / slider / switch value.

NameTypeReqDescription
namestringyesName of the global variable (e.g. 'initial-number-sheep'). Must be a valid NetLogo identifier — letters, digits, and any of ``- _ . ? !`` only. Names with whitespace or shell/NetLogo meta-chara…
value–yesThe value to set. Numbers, strings, booleans accepted.
NameTypeReqDescription
resultstringyes–

No examples provided.

update_model ~144

Update the currently loaded model's code in place and reload it. Prefer this over create_model when iterating on an existing model: the same .nlogox file is rewritten and reloaded, so the NetLogo window stays on one model and the models directory doesn't grow a new file per iteration.

NameTypeReqDescription
codestringyesNew NetLogo procedures — a FULL replacement of the code tab, not a diff. Raw procedures only (no .nlogox XML).
widgets––Optional new interface widgets (same schema as create_model). When omitted, the model's existing widgets are preserved unchanged — sliders keep their positions and values.
NameTypeReqDescription
resultstringyes–

No examples provided.

watch_simulation ~163

Run the simulation SLOWLY so a human can watch it in the GUI window. Unlike run_simulation (full speed, returns data), this steps `go` once per tick with a pause between steps — use it for demos and teaching when the user wants to see the dynamics unfold live. In headless mode it works but there's nothing to watch; prefer run_simulation there.

NameTypeReqDescription
delay_msinteger–Pause between steps in milliseconds (10-2000, default 150). ticks x delay_ms must stay under 120 seconds — chain calls for longer demos.
go_commandstring–The command to run each step (default "go").
ticksintegeryesSteps to run (1-2000).
NameTypeReqDescription
resultstringyes–

No examples provided.

Install

How do I install the NetLogo MCP server?

NetLogo MCP runs locally as a PyPI package, launched with uvx netlogo-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · netlogo-mcp

# add to Claude Code
claude mcp add razee4315-netlogo-mcp -- uvx netlogo-mcp
Common questions

What is the NetLogo MCP server?

NetLogo MCP is listed in the public MCP registry as io.github.Razee4315/netlogo-mcp. Create, run, and analyze NetLogo agent-based models through natural conversation. This page covers its PyPI package (netlogo-mcp).

Is the NetLogo MCP server safe to use?

NetLogo MCP scores 90 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the NetLogo MCP server expose?

NetLogo MCP exposes 25 tools: open_model, command, report, run_simulation, watch_simulation, and 20 more. Their descriptions and schemas cost roughly 4,036 tokens of context every time the server is loaded.

Is the NetLogo MCP server still maintained?

NetLogo MCP is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the NetLogo MCP server under?

NetLogo MCP declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.