Skip to content

Commit 2392091

Browse files
authored
Docs/rjv/installation using uvx (#191)
* Added UVX to install information * moved alternate installation to a separate file. Updated config file to use uvx. Added a section for windows using powershell * unified instructions for each OS * Polished the quick install path * minor updates * updated installation instructions on readme * docs: update installation guide - use uvx ros-mcp and simplify troubleshooting * proofreading and grammar
1 parent acd4855 commit 2392091

File tree

3 files changed

+341
-201
lines changed

3 files changed

+341
-201
lines changed

README.md

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,9 @@ The MCP server is version-agnostic (ROS1 or ROS2) and works with any MCP-compati
8282

8383
### Installation
8484

85-
Follow the [installation guide](docs/installation.md) for step-by-step instructions:
86-
1. Clone the repository
87-
2. Install `uv` and `rosbridge`
88-
3. Install Claude Desktop (or any MCP-enabled client)
89-
4. Configure your client to connect to the ROS MCP Server
90-
5. Start `rosbridge` on the target robot
85+
Follow the [installation guide](docs/installation.md) for step-by-step instructions to install, run, and troubleshoot the ROS-MCP server.
86+
87+
For developers, we also have instructions for [installation from source](docs/installation-from-source.md)
9188

9289
---
9390

docs/installation-alternatives.md

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
# Alternate Installation and Configuration Options
2+
3+
This document covers alternative methods for installing the ROS-MCP server, configuring it with different transport options, and using it with different LLM clients.
4+
5+
---
6+
7+
## Alternative Installation Options
8+
9+
### Option A: Install using pip
10+
For users who prefer traditional pip installation:
11+
12+
```bash
13+
pip install ros-mcp
14+
```
15+
> **⚠️ Important**: This package requires pip version 23.0 or higher. Check your pip version with `pip --version` and upgrade if needed:
16+
> **⚠️ Important**: This package requires python version 3.10 or higher. Check your python version with `python3 --version` and upgrade if needed:
17+
```bash
18+
python3 -m pip install --upgrade pip
19+
```
20+
21+
### Option B: Install from Source
22+
For developers or advanced users who need to modify the source code, see [Installation from Source](installation-from-source.md).
23+
24+
### Option C: Install from Source using pip
25+
For developers who want to install from source but still use pip:
26+
27+
```bash
28+
# Clone the repository
29+
git clone https://github.com/robotmcp/ros-mcp-server.git
30+
cd ros-mcp-server
31+
32+
# Install from source using pip
33+
pip install .
34+
```
35+
36+
> **⚠️ Important**: This package requires pip version 23.0 or higher. Check your pip version with `pip --version` and upgrade if needed:
37+
> **⚠️ Important**: This package requires python version 3.10 or higher. Check your python version with `python3 --version` and upgrade if needed:
38+
```bash
39+
python3 -m pip install --upgrade pip
40+
```
41+
42+
---
43+
44+
## Alternate Configuration - HTTP Transport
45+
46+
The default configurations set up the MCP server using the STDIO transport layer, which launches the server as a plugin automatically on launching Claude.
47+
48+
It is also possible to configure the MCP server using the HTTP transport layer, which configures Claude to connect to the MCP server when it is launched as a standalone application.
49+
50+
For HTTP transport, the configuration is the same across all platforms. First start the MCP server manually:
51+
52+
**Linux/macOS/Windows(WSL):**
53+
```bash
54+
cd /<ABSOLUTE_PATH>/ros-mcp-server
55+
# Using command line arguments (recommended)
56+
ros-mcp --transport streamable-http --host 127.0.0.1 --port 9000
57+
58+
# Or using environment variables (legacy)
59+
export MCP_TRANSPORT=streamable-http
60+
export MCP_HOST=127.0.0.1
61+
export MCP_PORT=9000
62+
uv run server.py
63+
```
64+
65+
Then configure Claude Desktop to connect to the HTTP server (same for all platforms):
66+
67+
```json
68+
{
69+
"mcpServers": {
70+
"ros-mcp-server-http": {
71+
"name": "ROS-MCP Server (http)",
72+
"transport": "http",
73+
"url": "http://127.0.0.1:9000/mcp"
74+
}
75+
}
76+
}
77+
```
78+
79+
---
80+
81+
## Comparison between default (STDIO) and HTTP Transport
82+
83+
#### STDIO Transport (Default)
84+
- **Best for**: Local development, single-user setups
85+
- **Pros**: Simple setup, no network configuration needed
86+
- **Cons**: MCP server and LLM/MCP client need to be running on the local machine.
87+
- **Use case**: Running MCP server directly with your LLM client
88+
89+
#### HTTP/Streamable-HTTP Transport
90+
- **Best for**: Remote access, multiple clients, production deployments
91+
- **Pros**: Network accessible, multiple clients can connect
92+
- **Cons**: Requires network configuration, MCP server needs to be run independently.
93+
- **Use case**: Remote robots, team environments, web-based clients
94+
95+
---
96+
97+
## Alternate Clients
98+
99+
### Cursor IDE
100+
For detailed Cursor setup instructions, see our [Cursor Tutorial](../examples/7_cursor/README.md).
101+
102+
### ChatGPT
103+
For detailed ChatGPT setup instructions, see our [ChatGPT Tutorial](../examples/6_chatgpt/README.md).
104+
105+
### Google Gemini
106+
For detailed Gemini setup instructions, see our [Gemini Tutorial](../examples/2_gemini/README.md).
107+
108+
### Custom MCP Client
109+
You can also use the MCP server directly in your Python code.
110+
<details>
111+
<summary>Here is a python example of how to integrate it programmatically</summary>
112+
113+
```python
114+
from mcp import ClientSession, StdioServerParameters
115+
from mcp.client.stdio import stdio_client
116+
117+
async def main():
118+
server_params = StdioServerParameters(
119+
command="uv",
120+
args=["--directory", "/path/to/ros-mcp-server", "run", "server.py"]
121+
)
122+
123+
async with stdio_client(server_params) as (read, write):
124+
async with ClientSession(read, write) as session:
125+
# Use the MCP server
126+
result = await session.call_tool("get_topics", {})
127+
print(result)
128+
```
129+
130+
</details>
131+

0 commit comments

Comments
 (0)