ITASCA MCP Server
PYPI · ITASCA-MCP · SCANNED SEP 20
Give AI agents full access to ITASCA PFC, FLAC3D, 3DEC, MPoint, MassFlow: docs, simulation, plots.
Available components
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 Security100
- 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 native-build step with no shell scripting around it. View diagnostics → Pass
- 1 of 23 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 0 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability62
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 2967 tokens (~296/item across 10 items; 10 tools + 0 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 Management87
- Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% 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 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "itasca_execute_task" 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 11 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
How do I install the ITASCA MCP Server server?
ITASCA MCP Server runs locally as a PyPI package, launched with uvx itasca-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 · itasca-mcp
claude mcp add yusong652-itasca-mcp -- uvx itasca-mcp
{
"mcpServers": {
"yusong652-itasca-mcp": {
"command": "uvx",
"args": [
"itasca-mcp"
]
}
}
} {
"servers": {
"yusong652-itasca-mcp": {
"command": "uvx",
"args": [
"itasca-mcp"
]
}
}
} codex mcp add yusong652-itasca-mcp -- uvx itasca-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"yusong652-itasca-mcp": {
"type": "local",
"command": [
"uvx",
"itasca-mcp"
],
"enabled": true
}
}
} openclaw mcp add yusong652-itasca-mcp --command uvx --arg itasca-mcp
mcp_servers:
yusong652-itasca-mcp:
command: "uvx"
args: ["itasca-mcp"] {
"McpServers": {
"yusong652-itasca-mcp": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"itasca-mcp"
]
}
}
} assistant mcp add yusong652-itasca-mcp -t stdio -c uvx -a itasca-mcp
{
"mcpServers": {
"yusong652-itasca-mcp": {
"command": "uvx",
"args": [
"itasca-mcp"
]
}
}
} 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.
- 20 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 19 Sept 26 0
- Stability: 0.80 → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Package version: 0.8.2 → 0.9.0 functional
- 18 Sept 26 −3
- Stability: pass → 0.80 functional
- 17 Sept 26 +1
- Stability: 0.97 → pass security
- Package version: 0.8.1 → 0.8.2 functional
- 16 Sept 26 0
- Stability: pass → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: 380 → 296 ▲ functional
- Stability: pass → 0.97 functional
- Package version: 0.6.8 → 0.8.1 functional
- 15 Sept 26 +15
- Malware scan: unverified → pass ▲ security
- Stability: 0.97 → pass security
- 14 Sept 26 −15
- Malware scan: pass → unverified ▼ security
- 13 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
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 20 Sept 2026 · Analysed pypi/itasca-mcp@0.9.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
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 23 packages
| Packages resolved | 23 |
|---|---|
| Stale | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
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 →
itasca_browse_commands Itasca Browse Commands ~321
Browse Itasca command documentation by path (like glob + cat). Navigation levels: - No command: All command categories overview - Category only (e.g., "ball"): List commands in category - Full command (e.g., "ball create"): Full documentation When to use: - You know the command category or exact command - You want to explore available commands Related tools: - itasca_query_command: Search commands by keywords (when path unknown) - itasca_browse_reference: Browse reference docs (e.g., "contact-models linear")
| Name | Type | Req | Description |
|---|---|---|---|
| command | – | – | Itasca command to browse (space-separated, matching Itasca command syntax). Examples: - None or '': List all command categories - 'ball': List all ball commands - 'ball create': Get ball create docum… |
| software | string | yes | ITASCA engine to query: 'pfc', 'flac', '3dec', 'mpoint', or 'massflow'. Required — there is no default engine. |
| version | string | – | Documentation version to browse. Defaults to 7.0 for multi-version engines (PFC: 6.0/7.0/9.0, FLAC: 7.0/9.0, 3DEC: 7.0/9.0); 9.0-only engines (MPoint, MassFlow) always resolve at 9.0. |
Structured output declared, but exposes no named fields.
No examples provided.
itasca_browse_python_api Itasca Browse Python Api ~206
Browse Itasca Python SDK documentation by path (like glob + cat).
| Name | Type | Req | Description |
|---|---|---|---|
| api | – | – | Itasca Python API path to browse (dot-separated, starting from itasca). Examples: - None or '': Root overview - all modules and objects - 'itasca': Core module functions (command, cycle, gravity, etc… |
| software | string | yes | ITASCA engine to query: 'pfc', 'flac', '3dec', 'mpoint', or 'massflow'. Required — there is no default engine. |
Structured output declared, but exposes no named fields.
No examples provided.
itasca_browse_reference Itasca Browse Reference ~562
Browse ITASCA reference documentation (syntax elements, model properties). Works across engines via the required ``software`` selector (pfc/flac/3dec). References are language elements used within commands, not standalone commands. Navigation levels: - No topic: All reference categories for the engine - Category (e.g., "constitutive-models"): List items in category - Full path (e.g., "constitutive-models mohr-coulomb"): Full documentation - Sub-item path (e.g., "plot-items zone contour"): Sub-item details When to use: - Need material/contact/joint model property names (kn, ks, fric, cohesion, friction, ...) - Need range filtering syntax (position, cylinder, group, id) - Need plot item configuration (contour, label, color-by, cut, transparency, legend) - Setting up model-assignment commands (e.g. "... cmodel assign ... property ...") - Using range filters in any command - Configuring "plot item create" commands Related tools: - itasca_browse_commands: Command syntax (e.g., "zone create") - itasca_query_command: Search commands by keywords
| Name | Type | Req | Description |
|---|---|---|---|
| software | string | yes | ITASCA engine to query: 'pfc', 'flac', '3dec', 'mpoint', or 'massflow'. Required — there is no default engine. |
| topic | – | – | Reference topic to browse (space-separated path). Categories vary by engine — call with no topic first to discover them. Examples (by engine): - None or '': List all reference categories for the chos… |
| version | string | – | Documentation version (PFC: 6.0/7.0/9.0, FLAC: 7.0/9.0). Only gates version-specific items (e.g. PFC contact models by availability). range-elements, plot-items, and the FLAC/3DEC reference sets are… |
Structured output declared, but exposes no named fields.
No examples provided.
itasca_check_task_status Itasca Check Task Status ~144
Check status and paginated output for a submitted Itasca task. Output combines Python prints and Itasca console output from itasca.command() calls (table dumps, list output, command summaries) interleaved in execution order. Use skip_newest / limit to paginate, or filter to keep only matching lines.
| Name | Type | Req | Description |
|---|---|---|---|
| filter | – | – | Only keep output lines containing this text |
| limit | integer | – | Output lines per page |
| skip_newest | integer | – | Skip N newest output lines before pagination |
| task_id | string | yes | Task ID returned by itasca_execute_task |
| wait_seconds | number | – | Wait time before querying status |
Structured output declared, but exposes no named fields.
No examples provided.
itasca_execute_code Itasca Execute Code ~622
Execute Python code synchronously in the running Itasca engine process. Returns stdout and an optional result variable immediately. Code runs in the engine's main thread, sharing the same __main__ namespace as any running task — side effects persist and are immediately visible to the task on its next cycle. The tool stays responsive while a task submitted via itasca_execute_task is cycling (calls interleave at cycle gaps), so use it as a live REPL — nothing has to be pre-scripted into the task up front. Typical uses: - Query model state and read Itasca command output: itasca.command('ball list') etc. — table dumps, list output, and command summaries are captured and interleaved with Python prints in execution order - Live inspection and tuning during a running task: check forces or contact statistics, modify parameters, swap callbacks, set sentinel variables the task reads each cycle - Create and export plots: itasca.command('plot ...') Environment: the engine's embedded Python interpreter (Itasca 9+ → Python 3.10, pre-9 → Python 3.6 or older; the product+version is encoded in sys.executable, e.g. PFC900). When unsure, check sys.version_info before relying on newer syntax. Code-writing rules (shared with itasca_execute_task): - Multi-line itasca.command("""...""") batches are normalized to one engine call per command, keeping the bridge reachable mid-batch. Normalization recognizes itasca.command through its import name; call it through that name directly — rebinding via intermediate variables (`_it = itasca`) bypasses it and the output carries a bridge warning. - Pass each FISH definition block (`fish define` / `fish operator` / legacy bare `define`, through its terminating standalone `end`) whole, in ONE itasca.command() string; feeding one line-by-line leaves the engine blocked in interactive FISH mode until completed manually in the GUI console. Per-line loops are fine for ordinary commands. - `program call '<file>'` (.p3dat /…
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | Python code to execute in the Itasca engine user console |
| timeout | integer | – | Console execution timeout in seconds |
Structured output declared, but exposes no named fields.
No examples provided.
itasca_execute_task Itasca Execute Task ~469
Submit a Python script file for asynchronous execution in the Itasca engine. Returns a task_id immediately; the script runs in the background. Companion tools manage the lifecycle: - itasca_check_task_status: poll output, progress, and final status - itasca_interrupt_task: cancel a running task - itasca_list_tasks: browse task history For synchronous, inline execution, use itasca_execute_code instead. While the task is cycling, itasca_execute_code shares the same __main__ namespace in the engine's main thread, so you can inspect or modify simulation state live — probe progress, tune parameters mid-run, swap callbacks, or trigger early termination via a sentinel variable. Submit with reasonable starting values and refine as the task runs. Console output from itasca.command() inside the script (table dumps, list output, command summaries) is captured into the task log alongside Python prints, visible through itasca_check_task_status. Script-writing rules: - Multi-line itasca.command("""...""") batches are normalized to one engine call per command, keeping the task interruptible mid-batch. Normalization recognizes itasca.command through its import name; call it through that name directly — rebinding via intermediate variables (`_it = itasca`) bypasses it and logs a bridge warning. - Pass each FISH definition block (`fish define` / `fish operator` / legacy bare `define`, through its terminating standalone `end`) whole, in ONE itasca.command() string; feeding one line-by-line leaves the engine blocked in interactive FISH mode until completed manually in the GUI console. Per-line loops are fine for ordinary commands. - `program call '<file>'` (.p3dat / .p2dat / .dat / ...) is supported: the bridge runs the file inline, one command per engine call, so the bridge stays reachable, the task stays interruptible, and the file's output lands in the task log command by command.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | yes | Brief task purpose |
| entry_script | string | yes | Absolute path to entry Python script in the Itasca engine workspace |
Structured output declared, but exposes no named fields.
No examples provided.
itasca_interrupt_task Itasca Interrupt Task ~36
Request graceful interruption of a running Itasca task.
| Name | Type | Req | Description |
|---|---|---|---|
| task_id | string | yes | Task ID returned by itasca_execute_task |
Structured output declared, but exposes no named fields.
No examples provided.
itasca_list_tasks Itasca List Tasks ~45
List tracked Itasca tasks with pagination.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max tasks to return |
| skip_newest | integer | – | Skip N most recent tasks before listing |
Structured output declared, but exposes no named fields.
No examples provided.
itasca_query_command Itasca Query Command ~290
Search Itasca command documentation by keywords (like grep). Returns matching command paths. Use itasca_browse_commands for full documentation. When to use: - You have keywords but don't know exact command path - Example: "ball create", "contact property", "model solve" Related tools: - itasca_browse_commands: Get full documentation for a known command path - itasca_browse_reference: Browse reference docs (e.g., "contact-models linear") - itasca_query_python_api: Search Python SDK by keywords
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of results (1-20). |
| query | string | yes | Search keywords for Itasca commands. Examples: 'ball create', 'contact property', 'model solve'. Case-insensitive. |
| software | string | yes | ITASCA engine to query: 'pfc', 'flac', '3dec', 'mpoint', or 'massflow'. Required — there is no default engine. |
| version | string | – | Documentation version to search. Defaults to 7.0 for multi-version engines (PFC: 6.0/7.0/9.0, FLAC: 7.0/9.0, 3DEC: 7.0/9.0); 9.0-only engines (MPoint, MassFlow) always resolve at 9.0. |
Structured output declared, but exposes no named fields.
No examples provided.
itasca_query_python_api Itasca Query Python Api ~193
Search Itasca Python SDK documentation by keywords (like grep). Returns matching API paths with signatures. Use itasca_browse_python_api for full documentation. When to use: - You have keywords but don't know exact API path - Example: "ball velocity", "create", "contact force" Related tools: - itasca_browse_python_api: Get full documentation for a known API path - itasca_query_command: Search Itasca commands by keywords
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of results (1-20). |
| query | string | yes | Search keywords for Itasca Python SDK API. Examples: 'ball pos', 'contact force', 'model solve'. Case-insensitive. |
| software | string | yes | ITASCA engine to query: 'pfc', 'flac', '3dec', 'mpoint', or 'massflow'. Required — there is no default engine. |
Structured output declared, but exposes no named fields.
No examples provided.
What is the ITASCA MCP Server server?
ITASCA MCP Server is listed in the public MCP registry as io.github.yusong652/itasca-mcp. Give AI agents full access to ITASCA PFC, FLAC3D, 3DEC, MPoint, MassFlow: docs, simulation, plots. This page covers its PyPI package (itasca-mcp).
Is the ITASCA MCP Server server safe to use?
ITASCA MCP Server scores 79 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. 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 ITASCA MCP Server server expose?
ITASCA MCP Server exposes 10 tools: itasca_browse_commands, itasca_browse_python_api, itasca_browse_reference, itasca_query_command, itasca_query_python_api, and 5 more. Their descriptions and schemas cost roughly 2,888 tokens of context every time the server is loaded.
Is the ITASCA MCP Server server still maintained?
ITASCA MCP Server is still listed as active in the MCP registry. We last reached this channel on 20 September 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 ITASCA MCP Server server under?
ITASCA MCP Server declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.