ros2-mcp
Provides tools to read ROS2 topics, call services, get robot status and GPS telemetry, and wrap telemetry into verifiable ai2robot proof bundles. Supports both mock (simulated) and real ROS2 modes via a Python sidecar.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ros2-mcpList the robot topics and show the current GPS position."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ros2-mcp
ROS2 ↔ MCP bridge: let any AI agent (Claude Code, OpenClaw, Cursor) read ROS2 topics, call services, and wrap telemetry into verifiable proof bundles.
Two modes:
Mock mode (default) — simulated robot, zero ROS2 required. Try it now.
ROS2 mode — real topics/services via a Python sidecar (
rclpy).
Quick start (mock, 2 minutes)
npm install
npm run build
npm startRegister with your agent:
claude mcp add ros2-mcp -- npx tsx src/index.tsThen ask:
"List the robot topics, then tell me the current GPS position." "Move the robot forward, then wrap the telemetry into a proof bundle for task task_ros2_001."
Related MCP server: bumi-mcp
Tools
Tool | Purpose |
| list ROS2 topics |
| latest value of a topic |
| call a service (e.g. |
| status + GPS + telemetry in one call |
| wrap telemetry into an ai2robot proof bundle draft (hash-chained) |
| genesis hash for a task |
Real ROS2
Requires a ROS2 environment (tested pattern: ros:humble docker image):
docker run -it --rm ros:humble
apt-get install -y python3-pip && pip install rclpy # usually preinstalledThen run the server with the sidecar:
AI2ROBOT_ROS2=1 npm startThe sidecar (python/ros2_bridge.py) subscribes to all topics generically and
exposes them over stdio JSON-lines. It is a reference implementation; bring
your own transport if you need typed QoS or specific vendors.
Why proof mode
wrap_proof emits bundles in the
ai2robot proof format
(hash-chained action log + GPS traces; Ed25519 signature added by the
executor's key). Any fleet using this bridge can become an ai2robot executor
without changing hardware — the bridge is the adapter kernel.
License
MIT
Available Tools
6 toolscall_serviceB
Call a ROS2 service (e.g. cmd_vel to move the robot).
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | ||
| service | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility. It does not disclose side effects, required permissions, or response behavior of the service call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with an example, making it compact and front-loaded. It lacks detail required for other dimensions, but conciseness itself is adequate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, and only 2 parameters, the description is too sparse to fully inform an agent. It doesn't mention return values, error cases, or prerequisite conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description does not explain the 'args' parameter or how to format service arguments; it only mentions 'service' indirectly via the example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool's verb ('Call') and resource ('ROS2 service') with an illustrative example ('cmd_vel to move the robot'), clearly distinguishing from siblings focused on topics/status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The example hints at a use case but there is no explicit guidance on when to use this tool over siblings, such as read_topic or robot_status. The usage is implied by the name and example.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_fingerprintA
Return the SHA-256 fingerprint of the proof draft for a task.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It implicitly conveys a read-only operation via 'return,' but does not disclose error behavior, side effects, or whether the task must exist. This is adequate for a simple getter but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the verb and outcome, with no unnecessary words. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and no output schema. The description covers the core function and return type (SHA-256 fingerprint) but could improve by specifying the output format (e.g., hex-encoded) and the purpose of the 'proof draft.' Overall, it is sufficiently complete for a basic getter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only says 'for a task,' adding no detail beyond the parameter name taskId. No format, constraints, or semantic meaning are explained, so the agent must rely on the parameter name alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a SHA-256 fingerprint of a proof draft for a specific task, using a specific verb and resource. This distinguishes it from sibling tools like wrap_proof or read_topic, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor any context about verification workflows or prerequisites. The description only states the function, leaving the agent without direction on selecting this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_topicsA
List available ROS2 topics.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states a simple list operation, which implicitly suggests read-only behavior, but it does not disclose any details about the output format, whether it blocks, or any side effects. For such a trivial operation, this is passable but leaves room for ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no unnecessary words. It is front-loaded and to the point, earning every word.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema and no annotations, the description does not explain the return format or provide any context about how this tool fits into the broader workflow. It only says 'list available ROS2 topics,' which is insufficient for an agent to know what to expect or when to use it relative to sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema coverage is 100% (empty properties). The description adds no parameter-specific meaning, but the baseline for 0 params is 4, and no further elaboration is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'available ROS2 topics', which is specific and distinguishes it from sibling tools like read_topic (which reads a specific topic) and call_service (which invokes a service). The purpose is immediately clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for discovering available topics before using other tools like read_topic, but it does not explicitly state when to use it versus alternatives or provide any exclusion criteria. The context is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_topicB
Read the latest value of a ROS2 topic.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits but only states the core action. It does not address whether the tool blocks for a new message, errors on nonexistent topics, handles uninitialized topics, or requires a running ROS2 environment. This minimal statement leaves many behavioral aspects ambiguous.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the essential purpose with no wasted words. It is appropriately sized for the tool's low complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and minimal annotations, the description should explain return values and failure modes, but it only mentions 'read the latest value'. It does not specify the return format, how errors are reported, or what happens if no value is available. The tool's low complexity does not fully compensate for these gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needs to elaborate on the 'topic' parameter. It adds only the qualifier 'ROS2' but does not explain expected format (e.g., fully qualified name) or provide any additional context. The description adds minimal value beyond the parameter name and type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'read' with a clear resource 'ROS2 topic', making the tool's function immediately understandable. It distinguishes from sibling tools like list_topics (list vs read) and call_service (different operation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description is purely declarative and lacks any mention of alternatives or exclusion criteria for when a different tool (e.g., list_topics or call_service) would be appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
robot_statusA
Convenience: read status, GPS and telemetry in one call.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must stand alone. It states the tool reads status, GPS, and telemetry, implying a non-destructive operation, but provides no detail on return format, internal behavior, or error conditions. This is adequate for a read-only convenience tool but lacks depth beyond the basic function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, immediately front-loading the key information ('read status, GPS and telemetry') and the convenience angle. Every word earns its place without redundancy or unnecessary detail, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (zero parameters, no output schema), but while the description states what is read, it does not clarify the structure of the result or whether it aggregates data from multiple sources. This leaves some ambiguity for an agent trying to interpret the response, though it is sufficient for a basic status fetch.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema trivially covers everything. The baseline for zero parameters is 4, and the description adds no parameter-specific meaning because none exist. This meets expectations without needing further elaboration.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'read' and clearly names the resources: status, GPS, and telemetry. The term 'Convenience' differentiates it from sibling tools like read_topic by indicating this is an aggregate one-call operation, making its purpose distinct and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage guidance is implied rather than explicit. 'Convenience' and 'in one call' suggest using this tool when multiple data types are needed at once, but no explicit alternatives are excluded. Sibling tools like read_topic or list_topics are not mentioned, or when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wrap_proofC
Wrap current robot telemetry into an ai2robot proof bundle draft (hash-chained action log).
| Name | Required | Description | Default |
|---|---|---|---|
| events | Yes | ||
| taskId | Yes | ||
| escrowId | No | ||
| executorId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It mentions 'current' and 'draft' and 'hash-chained', giving some context, but does not disclose whether the operation is read-only, requires permissions, has side effects, or what happens to the telemetry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no filler, front-loading the main purpose. It is concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no annotations and no output schema, so the description is the sole source of context. It gives some insight into the output format ('hash-chained action log') but omits critical details like return values, error conditions, and parameter semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero description coverage, and the description does not explain any of the four parameters (taskId, executorId, events, escrowId). It only refers generically to 'robot telemetry', leaving the agent to guess how parameters map to the action.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as creating an ai2robot proof bundle from current robot telemetry, with a specific format (hash-chained action log). This distinguishes it from sibling tools like robot_status or chain_fingerprint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor are prerequisites or exclusions mentioned. The description implies use for proof creation but does not explain context such as needing an active task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
6 tool updates
v0.1.0- First observed
call_service - First observed
chain_fingerprint - First observed
list_topics - First observed
read_topic - First observed
robot_status - First observed
wrap_proof
TDQS
Each tool targets a distinct aspect of the robot: listing topics, reading from a topic, invoking a service, aggregated status, proof bundle creation, and fingerprint hashing. There is no meaningful overlap that would cause misselection.
Most tools follow a verb_noun pattern (list_topics, read_topic, call_service, wrap_proof), but robot_status and chain_fingerprint are noun phrases, creating a minor deviation. The pattern is still readable and mostly predictable.
Six tools is well-scoped for a ROS2 interface that covers topic access, service calls, telemetry aggregation, and proof generation. The count feels appropriate for the apparent purpose without bloat or thinness.
Core functionality like reading topics and calling services is present, but there are notable gaps: no way to publish to topics, no service discovery or type introspection, and no node listing. The proof tools are an extra feature but do not compensate for missing standard ROS2 operations.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Tamper-evident proof creation and verification for AI agents via MCP, A2A, and REST.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Remote MCP server for The Colony — a social network for AI agents (posts, DMs, search, marketplace).
- llm-busOAuthcom.llm-bus
Coordinate multiple AI agents over MCP: atomic claims, leases, shared ledger, handoffs, tasks.
Related MCP Servers
- FlicenseNot gradedqualityFmaintenanceA Python-based server that enables AI assistants to control robots by integrating the Model Context Protocol (MCP) with ROS 2, allowing for natural language commands that translate into robot movement via the /cmd\_vel topic.84-
- AlicenseAqualityBmaintenanceMCP server for controlling the Noetix Bumi humanoid robot via ROS 2, with support for autonomous mission planning using LLMs and computer vision.27MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server for ROS 2, enabling AI assistants to introspect and interact with ROS 2 systems.2MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for AI agents to inspect and control ROS2 graphs, enabling topic listing, node info, service calls, parameter management, and pub/echo without manual ROS2 CLI usage.11MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ai2robot-network/ros2-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server