Nav2 MCP Server
Provides tools to control and monitor Nav2 navigation operations within the ROS 2 ecosystem, enabling navigation, costmap management, lifecycle control, and real-time status monitoring.
Nav2 MCP Server
An MCP (Model Context Protocol) server that provides tools and resources to control and monitor Nav2 navigation operations, allowing seamless integration with Nav2-enabled robots through the MCP protocol.

Features
Navigation control: Navigate to specific poses, follow waypoint sequences, and execute precise robot movements
Real-time status: Monitor navigation progress, robot pose, and system status with comprehensive feedback
Costmap management: Clear stale obstacle data and manage navigation costmaps for optimal path planning
Lifecycle management: Control Nav2 system startup and shutdown for complete system control
ROS 2 integration: Full compatibility with Nav2 navigation stack and ROS 2 ecosystem
Async operations: Non-blocking navigation commands with progress monitoring and cancellation support
Related MCP server: Apollo Universal MCP Server
Tools
Tool | Description | Parameters |
navigate_to_pose | Navigate the robot to a specific pose (position and orientation) in the map frame |
|
follow_waypoints | Navigate the robot through a sequence of waypoints in order |
|
spin_robot | Rotate the robot in place by a specified angle |
|
backup_robot | Move the robot backward by a specified distance |
|
dock_robot | Dock the robot to a charging station or dock |
|
undock_robot | Undock the robot from a charging station or dock |
|
clear_costmaps | Clear robot navigation costmaps to remove stale obstacle data |
|
get_robot_pose | Get the current position and orientation of the robot | — |
cancel_navigation | Cancel the currently active navigation task | — |
nav2_lifecycle | Control Nav2 lifecycle (startup or shutdown) |
|
get_path | Compute a navigation path between two poses |
|
get_path_from_robot | Compute a navigation path from the robot's current pose to a goal pose |
|
Environment Variables
Variable | Default | Description |
| — | ROS 2 domain ID for network isolation (recommended to set) |
| — | Set to '1' to restrict ROS 2 communication to localhost only |
Configuration
Environment Variables
Variable | Default | Description |
|
| Transport mode: |
|
| HTTP host binding (only used when |
|
| HTTP port (only used when |
|
| Logging level: |
| — | ROS 2 domain ID for network isolation (recommended) |
| — | Set to '1' to restrict ROS 2 communication to localhost only |
Setup
Copy the environment configuration template:
cp .env.example .envEdit
.envto customize settings:
# Transport mode: 'stdio' for local, 'http' for containerized/network
TRANSPORT_MODE=stdio
# HTTP settings (only needed if using http transport)
HTTP_HOST=0.0.0.0
HTTP_PORT=3001
# Logging
LOG_LEVEL=INFOInstallation
Dependencies
Robot Operating System (ROS) 2: Middleware for robotics (Jazzy)
fastmcp: MCP server framework
python: Python programming language
uv: Python package manager (optional)
Install with uv
Clone the repository and install with uv:
git clone https://github.com/ajtudela/nav2_mcp_server.git
cd nav2_mcp_server
# Set up ROS 2 environment variables if needed
export ROS_DOMAIN_ID=0
uv syncOr install directly from the repository:
uv add git+https://github.com/ajtudela/nav2_mcp_server.gitDocker
Build the image
Build the image:
docker build -t nav2-mcp-server:latest .Pull the image
Pull the latest image from the Docker registry:
docker pull ghcr.io/ajtudela/nav2_mcp_server:latestUsage
Running with uv
uv run nav2_mcp_serverConfiguration example for Claude Desktop/Cursor/VSCode
Add this configuration to your application's settings (mcp.json):
Using uv (stdio transport)
{
"nav2 mcp server": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"--directory",
"/path/to/nav2_mcp_server",
"nav2-mcp-server"
],
"env": {
"ROS_DOMAIN_ID": "0",
"ROS_LOCALHOST_ONLY": "1"
}
}
}Using Docker (stdio transport)
"nav2 mcp server": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/ajtudela/nav2_mcp_server"
],
"env": {
"ROS_DOMAIN_ID": "0",
"ROS_LOCALHOST_ONLY": "1"
}
}Using HTTP transport
"nav2 mcp server": {
"type": "http",
"url": "http://localhost:3001/mcp",
"env": {
"TRANSPORT_MODE": "http",
"LOG_LEVEL": "INFO"
}
}This server cannot be installed
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 Servers
- Alicense-qualityBmaintenancePublic implementation of MCP for ROS 2 enabling to interact with system visible various robots, capable of: List available topics List available services Call service Subscribe topic to get messages Publish message on topic and more86Mozilla Public 2.0
- Alicense-qualityDmaintenanceEnables access to Apollo's tools and services through a standardized MCP interface, compatible with MCP-compliant clients.1MIT
- Flicense-qualityDmaintenanceEnables controlling a Unitree GO2 robot's motion (forward, backward, left, right, stop, stand up, and move with custom velocities) via MCP tools, using ROS2 commands.
- AlicenseAqualityBmaintenanceEnables driving Omniverse Kit apps (Isaac Sim, Isaac Lab) over MCP, allowing agents to control simulations, run Python, and call namespace-scoped tools via a single bridge.11MIT
Related MCP Connectors
MCP server wrapping the Tesla Fleet API and TeslaMate API
Workflow diagnostics, capability routing, and x402 settlement for MCP-compatible agents.
Cross-vendor AI memory over MCP. One semantic store, readable and writeable from every MCP client.
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/ajtudela/nav2_mcp_server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server