AIPOCH Open Science vs Yade MCP — MCP Server Comparison | AllMCPs
Side-by-Side Model Context Protocol Comparison
AIPOCH Open Science vs Yade MCP
In-depth architectural comparison of the AIPOCH Open Science and Yade MCP MCP servers. Compare execution transports, security boundaries, tool capabilities, quality scores, and ready-to-paste client installation snippets for Claude, Cursor, Windsurf, and VS Code.
At a Glance & Executive Verdict
AIPOCH Open Science
Research · Local stdio
Quality: 44/100 (Fair) | Auth: No auth required
Yade MCP
Research · Local stdio
Quality: 63/100 (Good) | Auth: No auth required
Verdict Summary: Choose AIPOCH Open Science if you need specialized Research tools running via a local process. Choose Yade MCP if your workspace requires Research integration with local subprocess execution. Both servers can be configured concurrently in your client's mcpServers manifest.
Which MCP Server Should You Choose?
A
Choose AIPOCH Open Science when:
You need dedicated capabilities in the Research domain.
You prefer local stdio subprocess transport architecture.
Your security boundary fits: No auth required (Free / Open Source).
An open-source, local-first AI research workbench supporting model selection, code execution, reviewer checks, and traceable research artifacts.
MCP server for YADE — open-source discrete element method (DEM) engine for granular and particle simulation. Browse API docs with BM25 search, execute code via synchronous REPL or async background tasks, monitor progress, and review task history.
No explicit tool names declared in metadata yet. Check project README on main listing page.
Yade MCP Tools (7)
yade_browse_api
Browse YADE's Python API as a YADE-native class tree.
The tree is rooted in YADE's real inheritance hierarchy: paths
mirror the class's __mro__ up to its category root. No
shortcuts — always drill through parents.
yade_query_api
Search YADE API documentation by keywords (like grep).
Returns matching class/function names with descriptions ranked by relevance.
Use yade_browse_api for full documentation of a specific class.
When to use:
- You have keywords but don't know the exact class name
- Examples: "friction material", "gravity engine", "contact force",
"triaxial stress", "sphere create", "hertz mindlin"
Related tools:
- yade_browse_api: Get full documentation for a known class path
yade_execute_task
Submit a Python script for asynchronous execution in YADE.
Returns a task_id immediately; the script is queued and runs in
the background. Tasks run one at a time in submit order (they
share the YADE process and its single simulation state), so a
multi-stage pipeline can be submitted in one go — each stage
starts when the previous one finishes. Use the companion tools
to manage the task lifecycle:
- yade_check_task_status: poll output, progress, and final status
- yade_interrupt_task: stop a running task or cancel a queued one
- yade_list_tasks: browse task history (also shows queue order)
Use this for production simulation runs, long O.run() cycles,
and any operation that may take minutes or longer.
For quick queries and REPL-style testing, use yade_execute_code.
Ready-to-Paste Client Configurations
Paste either (or both) of these JSON server blocks into your client config file (e.g. claude_desktop_config.json or ~/.cursor/mcp.json).
AIPOCH Open Science is categorized under Research and uses a local stdio subprocess. In contrast, Yade MCP belongs to Research using local stdio subprocess. Select AIPOCH Open Science when you need capabilities focused on research and Yade MCP when you require tools for research.
Check status and output for a submitted YADE task.
yade_list_tasks
List tracked YADE tasks with pagination.
Tasks are listed newest first. Queued (pending) tasks run one at
a time in submit order, so among the pending entries the one
furthest down the list runs next.
yade_interrupt_task
Stop a running YADE task, or cancel one still waiting in the queue.
A task that has not started yet is simply removed from the queue
and ends in status ``canceled`` (``method`` reports
``canceled_while_queued``). For a running task, two cancellation
paths are applied together by the bridge:
- ``flag_only`` — sets an interrupt flag that YADE's PyRunner
tick observes between simulation iterations (graceful path
for ``O.run`` tasks).
- ``flag_and_async_exc`` — in addition, injects a ``TaskInterrupt``
exception into the script thread, so pure-Python deadloops
with no ``O.run`` on the stack are terminated too.
The response ``method`` field reports which path ran. When
async-exc is refused (e.g. target thread is a Dummy-N
boost::python frame), ``async_exc_skipped_reason`` explains why.
Namespace after interrupt: the YADE ``__main__`` namespace is
shared between tasks and ``yade_execute_code`` calls. Any
variables the interrupted script had already defined —
including ``O`` state — are preserved. There's no need to
re-run the whole script to continue work: inspect state with
``yade_execute_code`` or resume via a fresh ``yade_execute_task``
that only runs the remaining logic.
yade_execute_code
Execute Python code synchronously in the running YADE process.
Returns stdout immediately. Code runs in the YADE Python
environment where yade modules are already imported;
side effects persist.
This tool remains responsive EVEN WHILE a simulation task is
running (submitted via yade_execute_task). Use it as a live
REPL to inspect simulation state in real time — no need to
pre-script print statements.
Typical uses:
- Query simulation state: O.bodies count, current iteration
- Create/modify bodies, engines, interactions
- Read or set material properties
- Live inspection during a running simulation (e.g. check
stress tensor, coordination number, energy balance,
or capture viewport screenshots when GUI is available)
- Development and REPL-style testing
Unlike yade_execute_task, this tool is fire-and-return: the
response contains the full output. It is NOT tracked by
yade_list_tasks and cannot be interrupted or polled.
Timeout behaviour: on timeout the bridge attempts to abort the
running code. The response is an error envelope (``ok=false``)
whose ``error.code`` is one of:
- ``interrupted`` — the code was running a simulation cycle
(``O.run``) and was paused cleanly at an iteration boundary.
For long simulations or solving to equilibrium, switch to
yade_execute_task — it tracks progress and stops cleanly via
yade_interrupt_task.
- ``terminated`` — a non-cycle abort succeeded (async exception
injection); the pump thread is free, but YADE state may be
partially modified by the code that ran before the abort fired.
Inspect state before retrying.
- ``timeout`` — abort failed (code stuck in a C extension, or
nested inside a running task's PyRunner tick); the bridge may
still be blocked. Restart if unresponsive.
WARNING: For anything expected to take more than a few seconds,
use yade_execute_task instead — it has proper cancellation via
yade_interrupt_task and does not leave state drift on timeout.
Also, do NOT write ``except BaseException:`` in your code; it
defeats bridge-initiated cancellation.