Skip to main content
Glama
RahulRajelli

robosimtools-mcp

by RahulRajelli
README.md
# robosimtools-mcp

An [MCP](https://modelcontextprotocol.io) server that exposes
[robosimtools.com](https://robosimtools.com)'s 12 robotics/simulation tools to
AI agents. The tool logic here is the **same code robosimtools.com serves to
your browser** — vendored into `lib/` so this server is self-contained. All
computation is local; nothing is uploaded.

> This is the open-source MCP server for robosimtools.com. The website itself is
> a separate project; only the browser tools it already ships publicly are
> included here (see [Vendored modules](#vendored-modules)).

## Tools

| Tool | What it does |
|------|--------------|
| `robosim_convert_rotation` | Quaternion ↔ Euler (12 sequences) ↔ 3×3 matrix ↔ axis-angle ↔ URDF roll-pitch-yaw. |
| `robosim_dh_to_urdf` | Denavit-Hartenberg table → URDF joint chain (standard or modified/Craig). |
| `robosim_diff_ardupilot_params` | Diff two ArduPilot `.param` files; changed / added / removed. |
| `robosim_mesh_mass_properties` | STL/OBJ → mass, center of mass, full inertia tensor. |
| `robosim_validate_urdf` | Structural URDF validation — tree, inertia sanity, joint limits. |
| `robosim_inspect_urdf` | URDF → links, joints, kinematic roots, degrees of freedom. |
| `robosim_xacro_to_urdf` | Expand Xacro properties, macros, conditionals, includes → URDF. |
| `robosim_urdf_to_mjcf` | URDF → MuJoCo MJCF. |
| `robosim_sdf_to_urdf` | Gazebo SDF → URDF with correct relative joint origins. |
| `robosim_step_to_urdf` | STEP/IGES CAD → URDF with per-solid inertia (OCCT WASM kernel). |
| `robosim_generate_sbom` | Lockfile (npm/pip/cargo/go) → CycloneDX 1.6 SBOM. |
| `robosim_cra_readiness` | EU Cyber Resilience Act scoping wizard. |

Every tool is read-only with no side effects.

## Install

```bash
git clone https://github.com/RahulRajelli/robosimtools-mcp
cd robosimtools-mcp
npm install
```

## Use it

The server talks over stdio, so any client that supports local MCP servers
works. Replace the path below with wherever you cloned the repo.

### Claude Desktop

Add to `claude_desktop_config.json` and restart:

```json
{
  "mcpServers": {
    "robosimtools": {
      "command": "node",
      "args": ["ABSOLUTE/PATH/TO/robosimtools-mcp/src/index.js"]
    }
  }
}
```

### OpenAI Codex CLI

Add to `~/.codex/config.toml` and restart Codex:

```toml
[mcp_servers.robosimtools]
command = "node"
args = ["ABSOLUTE/PATH/TO/robosimtools-mcp/src/index.js"]
```

> ChatGPT's own connectors target **remote** (HTTP) MCP servers — for this
> local stdio server, use the Codex CLI or Claude Desktop.

Then ask, e.g.: *"Convert the quaternion (w=0.707, x=0, y=0, z=0.707) to URDF
roll-pitch-yaw"*, or *"Turn this STEP file into a URDF with computed inertia."*

## Test

```bash
npm test             # 39 known-answer checks across all 12 tools
npm run test:e2e     # connects a real MCP client over stdio
npm run test:install # packs, installs to a temp dir, drives the installed copy
```

`test:install` is the one that matters before a release: it verifies the *published* artifact —
that the `files` allowlist is complete, the `bin` shebang works, and the lazily-imported OCCT
WASM kernel still resolves once the package is inside someone else's `node_modules`.

## Vendored modules

`lib/` holds the tool logic — the same ES modules robosimtools.com serves at
`robosimtools.com/js/*.js`. They are vendored (not fetched at runtime) so the
package is self-contained. To refresh them from a local site checkout:

```bash
node scripts/sync-from-site.mjs /path/to/site/public/js
```

## Design notes

- **DOM in Node.** Four tools (URDF validator, Xacro, MJCF, SDF converters) use
  the browser `DOMParser`/`XMLSerializer`. `src/browser-globals.js` provides
  those via [linkedom](https://github.com/WebReflection/linkedom) so the modules
  run unchanged (its `XMLSerializer` strips the XML prolog linkedom adds, to
  match browsers).
- **CAD kernel.** `robosim_step_to_urdf` loads `occt-import-js` (a 7.6 MB WASM
  build of OpenCascade) lazily on first use.
- **Plain JS ESM**, zero build step.

## Contributing

Bug reports and PRs are welcome — see [CONTRIBUTING.md](./CONTRIBUTING.md) for scope, setup and
the AI-assisted contribution policy (disclosure required). Security issues go through
[SECURITY.md](./SECURITY.md), not the public issue tracker. Participation is governed by the
[Code of Conduct](./CODE_OF_CONDUCT.md).

One thing worth knowing up front: **`lib/` is synced from robosimtools.com and PRs editing it
directly will be closed** — the next sync overwrites them. Report tool-logic bugs as issues here
and they get fixed upstream, then synced down.

## License

[MIT](./LICENSE) © 2026 Rahul Rajelli. All code in `src/` and `lib/` is first-party.

The `robosim_step_to_urdf` tool depends on [`occt-import-js`](https://github.com/kovacsv/occt-import-js)
(a WASM build of Open CASCADE), which is **LGPL-2.1**. It is consumed unmodified as a separate npm
dependency and loaded dynamically at runtime — no part of it is redistributed in this package.
Full details, and the conditions a fork must preserve, are in
[THIRD-PARTY-NOTICES.md](./THIRD-PARTY-NOTICES.md).

TDQS

A4.1/5.0

Scored across 12 tools

Disambiguation5/5

Each tool has a clearly distinct purpose, covering different aspects of robotic simulation like rotation conversion, URDF manipulation, mesh processing, and compliance checking. There is no overlap or ambiguity between tool functionalities.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern prefixed with 'robosim_', e.g., 'robosim_convert_rotation', 'robosim_inspect_urdf'. This makes the tool set predictable and easy for an agent to navigate.

Tool Count5/5

With 12 tools, the server offers a well-scoped set for robotics simulation utilities. The number is within the ideal range (3-15) and each tool contributes to a cohesive workflow without unnecessary redundancy.

Completeness5/5

The tool surface covers a broad range of robotics simulation tasks: conversion from multiple formats (SDF, STEP, DH table), validation, inspection, and even regulatory compliance. There are no major gaps for the intended domain.

Maintenance

ActivitySlowing
ResponsivenessNo issues