Atlas / MCP servers / shinro-xyz / shinro-python-modules

shinro-python-modulesCAUTION

mcp/shinro-xyz/shinro-python-modules

Shinro Python Control Modules

Verdict
CAUTION
Grade
C
Trust score
78 /100
Exposed tools
25 16r · 7w · 2d
Transport
stdio
License
NOASSERTION
Stars
2
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://shinro-xyz.github.io/shinro-python-modules/)

A clean, modular Python control framework built on five abstract base classes — Controller, Plant, StateEstimator, TrajectoryGenerator, and PhysicsEngine — with registry-based factories that compose them from TOML config. The architecture is robot-agnostic: the demos drive a generic control loop over any registered plant, controller, estimator, and trajectory.

Naming note: this repo was previously scoped for a single reference robot. It was renamed to shinro-python-modules because the registry/factory/ABC pattern generalized beyond one robot.

Documentation

Conceptual and operational documentation lives in docs.shinro.xyz:

  • [Control Architecture](https://docs.shinro.xyz/control-architecture/) — why the five ABCs exist, how they compose, sim/hardware parity
  • [Python Modules](https://docs.shinro.xyz/python-modules/) — the operational guide: install, run, extend, component catalog

API Reference — Every exported symbol — the five ABCs, controllers, estimators, plants, trajectories, factories, utilities — with signatures, parameter tables and source links. Generated from the package's own __all__ on every push, so it cannot go stale.

The same guides live in-repo under docs/ (no internet required):

  • `docs/quickstart.md` — install → build a controller from TOML → run a scenario → trace/lower. Start here.
  • `docs/how-it-works.md` — the five ABCs, the dataflow, and each layer (factories, sim, backends, codegen, MCP).
  • `docs/components.md` — catalog of every registered component (class, registered name, file, config).
  • `docs/codegen.md` — tracing →
Read from source at commit bfbf07737e73OBSERVED · 2026-10-11
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.

claude-code
claude mcp add shinro -- uvx shinro
claude-desktop
{
  "mcpServers": {
    "shinro": {
      "command": "uvx",
      "args": [
        "shinro"
      ]
    }
  }
}
03

Exposed tools (25)

16 read · 7 write · 2 destructive. Blast radius: 2 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
analyze_controllabilityreadCheck controllability of a state-space system via Kalman rank test.
analyze_observabilityreadCheck observability of a state-space system via Kalman rank test.
balanced_truncationwritePerform balanced truncation to obtain an order-r reduced model.
controller_computereadCompute a control action from a named controller.
controller_resetdestructiveReset a named controller
create_controllerwriteCreate a controller from a TOML config file or inline parameters.
create_estimatorwriteCreate a state estimator from a TOML config file or inline parameters.
create_trajectorywriteCreate a trajectory generator from a TOML config file or inline parameters.
estimator_estimatewriteRun one predict-update cycle of a named estimator.
estimator_resetdestructiveReset a named estimator
get_mpc_constraintsreadGet the current constraints of a stored MPC controller.
gramian_continuousreadCompute infinite-horizon continuous-time Gramians and Hankel singular values.
gramian_discretereadCompute infinite-horizon discrete-time Gramians and Hankel singular values.
gramian_finitereadCompute finite-horizon Gramians via ODE integration.
list_controller_typesreadList all registered controller types available for creation.
list_controllersreadList all created controller instances.
list_estimator_typesreadList all registered estimator types available for creation.
list_estimatorsreadList all created estimator instances.
list_trajectoriesreadList all created trajectory instances.
list_trajectory_typesreadList all registered trajectory types available for creation.
set_mpc_constraintswriteSet or update linear constraints on a stored MPC controller.
set_pid_output_limitswriteSet output clamping limits on a stored PID controller.
system_summaryreadProduce a human-readable summary of system properties.
trajectory_generatereadGenerate a trajectory by computing polynomial coefficients.
trajectory_position_atreadEvaluate a generated trajectory at time t.
04

Trust audit

CAUTIONgrade C · trust 78/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (3 observation(s))
Network
none-observed
Shell
declared (3 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (15)

MEDIUMInventory / provenance · inv.binary · CWE-1104
src/shinro/runtime/graph_data_consts.bin
graph_data_consts.bin
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
scripts/gen_api.py:95
mod = importlib.import_module(modname)
MEDIUMCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
src/shinro/simulation/robotsim.py:62
importlib.import_module(f"shinro.physics_engine.{engine_type}")
MEDIUMCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
src/shinro/utils/plugin_loader.py:35
importlib.import_module(name)
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
controller_reset, estimator_reset
Why it matters. 2 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenance · inv.binary · CWE-1104
src/shinro/runtime/tests/graphs/drone_gru_weights.bin
drone_gru_weights.bin
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
src/shinro/runtime/tests/graphs/go2_weights.bin
go2_weights.bin
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
src/shinro/runtime/tests/graphs/toy_lstm_weights.bin
toy_lstm_weights.bin
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
tests/fixtures/models/toy_lstm.onnx
toy_lstm.onnx
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.hidden_file · CWE-1104
.pi-lens.json
.pi-lens.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
AGENTS.md:58
- `make docs-serve` — regenerate reference + serve at <http://127.0.0.1:8000>.
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
docs/index.md:55
mkdocs serve                # preview at http://127.0.0.1:8000
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
tests/test_zig_lowering.py:2872
return [float.fromhex(tok.strip()) for tok in m.group(1).split(",") if tok.strip()]
LOWObfuscation / stealth · obf.decode_then_exec · CWE-506, CWE-94
tests/test_zig_lowering.py:2872
fromhex( ... subprocess.
Why it matters. decodes a payload and executes it
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
requirements-dev.txt
pyrefly, ruff, build, setuptools, setuptools-scm, onnx
Why it matters. 6 requirement(s) not pinned with ==
Fix. pin exact versions

Gates applied: no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha bfbf07737e73full audit observations/trust-audit/mcp-server/shinro-xyz__shinro-python-modules.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-11bfbf07737e73CAUTIONC78first audit
06

Questions

What is the shinro-python-modules MCP server?

Shinro Python Control Modules

What tools does shinro-python-modules expose?

25 in total: 16 read-only, 7 that write, and 2 that can delete or overwrite (controller_reset, estimator_reset). Every one is listed on this page with its risk.

Is shinro-python-modules safe to connect to an agent?

With care. The audit graded it C (78/100) and found 15 things worth knowing before you trust this server, listed below with the exact line each was found on. Separately from the audit: 2 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does shinro-python-modules need?

No credential environment variables were found in its source, so it appears to need none.

How does shinro-python-modules run?

It speaks stdio, so it runs as a local process your client starts. It is published on PyPI as shinro.

How current is this page?

The grade is for one exact copy of the source (bfbf07737e73), read on 2026-10-11. The repository is watched and re-audited when it changes.

Advertisement