Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 43 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ This server does **not** implement SOVD itself. It provides MCP tools that call
### Prerequisites

- Python 3.11+
- Poetry
- [Poetry](https://python-poetry.org/) or [uv](https://docs.astral.sh/uv/)
- A running ros2_medkit gateway (default: `http://localhost:8080`)

### Installation
Expand All @@ -35,10 +35,27 @@ This server does **not** implement SOVD itself. It provides MCP tools that call
git clone https://github.com/selfpatch/ros2_medkit_mcp.git
cd ros2_medkit_mcp

# Install dependencies
# Install dependencies with Poetry
poetry install
```

Or with [uv](https://docs.astral.sh/uv/):

```bash
uv venv
uv pip install -e . # add '.[dev]' for the test and lint tools
```

> The project uses the Poetry build backend, so install it with `uv pip install`
> (not `uv sync`, which only reads PEP 621 `[project]` dependencies). The entry
> points then live in `.venv/bin/`.

Don't want a checkout at all? Run it straight from the repository with `uvx`:

```bash
uvx --from git+https://github.com/selfpatch/ros2_medkit_mcp ros2-medkit-mcp-stdio
```

### Configuration

The server is configured via environment variables:
Expand All @@ -55,6 +72,8 @@ The server is configured via environment variables:

```bash
poetry run ros2-medkit-mcp-stdio
# uv: uv run --no-sync ros2-medkit-mcp-stdio (or: .venv/bin/ros2-medkit-mcp-stdio)
# uvx: uvx --from git+https://github.com/selfpatch/ros2_medkit_mcp ros2-medkit-mcp-stdio
```

For Claude Desktop, add to your `claude_desktop_config.json`:
Expand All @@ -74,10 +93,32 @@ For Claude Desktop, add to your `claude_desktop_config.json`:
}
```

Or with `uvx`, which needs no local checkout (drop the `cwd`):

```json
{
"mcpServers": {
"ros2_medkit": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/selfpatch/ros2_medkit_mcp",
"ros2-medkit-mcp-stdio"
],
"env": {
"ROS2_MEDKIT_BASE_URL": "http://localhost:8080/api/v1"
}
}
}
}
```

#### Streamable HTTP Transport

```bash
poetry run ros2-medkit-mcp-http --host 0.0.0.0 --port 8765
# uv: uv run --no-sync ros2-medkit-mcp-http --host 0.0.0.0 --port 8765
# uvx: uvx --from git+https://github.com/selfpatch/ros2_medkit_mcp ros2-medkit-mcp-http --host 0.0.0.0 --port 8765
```

The server will be available at `http://0.0.0.0:8765/mcp`.
Expand Down
10 changes: 5 additions & 5 deletions poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "ros2-medkit-mcp"
version = "0.1.0"
version = "0.5.0"
description = "MCP server adapter for ros2_medkit SOVD HTTP API"
authors = ["bburda <bartoszburda93@gmail.com>"]
readme = "README.md"
Expand All @@ -15,7 +15,7 @@ pydantic = "^2.10.0"
uvicorn = { version = "^0.34.0", extras = ["standard"] }
starlette = "^0.45.0"
# Distributed via GitHub Releases wheel (no PyPI yet). Replace with version constraint when available.
ros2-medkit-client = {url = "https://github.com/selfpatch/ros2_medkit_clients/releases/download/py-v0.1.1/ros2_medkit_client-0.1.1-py3-none-any.whl"}
ros2-medkit-client = {url = "https://github.com/selfpatch/ros2_medkit_clients/releases/download/py-v0.5.0/ros2_medkit_client-0.5.0-py3-none-any.whl"}
Comment thread
bburda marked this conversation as resolved.
Comment thread
bburda marked this conversation as resolved.

[tool.poetry.group.dev.dependencies]
pytest = "^8.3.0"
Expand Down
2 changes: 1 addition & 1 deletion src/ros2_medkit_mcp/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
"""ros2_medkit_mcp - MCP adapter for ros2_medkit SOVD HTTP API."""

__version__ = "0.1.0"
__version__ = "0.5.0"
Loading
Loading