Skip to main content
Glama
daitianjun

Odoo MCP Skeleton

by daitianjun
README.md
# Odoo MCP Skeleton

This is a Python skeleton for an Odoo MCP server built with `fastmcp`.

It includes:

- `FastMCP` tool registration
- `FastAPI` HTTP service
- `secret-key` header authentication for `/mcp`
- Odoo JSON-RPC client wrapper
- Example read-only tools

## Quick Start With uv

1. Install `uv`.
2. Enter the project directory.
3. Sync dependencies:

```bash
uv sync
```

4. Copy environment variables:

```bash
copy .env.example .env
```

5. Fill in:

- `MCP_SECRET_KEY`
- `ODOO_BASE_URL`
- `ODOO_DB`
- `ODOO_USERNAME`
- `ODOO_PASSWORD`

6. Start the server:

```bash
uv run uvicorn odoo_mcp.main:app --host 127.0.0.1 --port 8080
```

On Windows PowerShell, you can also use:

```powershell
.\run.ps1
```

## Authentication

Clients must send this header when connecting to the MCP endpoint:

```text
secret-key: your-secret-value
```

## Suggested MCP Endpoint

```text
http://127.0.0.1:8080/mcp
```

## Troubleshooting Logs

If you see this pattern:

```text
GET /mcp HTTP/1.1 307 Temporary Redirect
GET /mcp/ HTTP/1.1 404 Not Found
```

it usually means the outer FastAPI app and the inner FastMCP app both added an `/mcp` path. This project mounts FastMCP at `/mcp` and configures the inner FastMCP HTTP app with `path="/"`, so the final endpoint stays:

```text
http://127.0.0.1:8080/mcp
```

If you see requests to these paths:

```text
/.well-known/oauth-protected-resource
/.well-known/oauth-authorization-server
/.well-known/openid-configuration
```

those are MCP client OAuth discovery probes. They can return `404` when you use simple `secret-key` header authentication instead of OAuth.

## Common uv Commands

```bash
uv sync
uv run uvicorn odoo_mcp.main:app --host 127.0.0.1 --port 8080
uv run python -c "import odoo_mcp; print('ok')"
```

## Notes About `fastmcp` Versions

`FastMCP` has changed quickly across versions. This skeleton isolates the MCP-to-ASGI mounting logic in [`src/odoo_mcp/server.py`](C:/Users/tianjun.dai/Documents/AI转型项目/tools/odoo-mcp/src/odoo_mcp/server.py). If your installed version exposes a different HTTP adapter, update only that file.

## Example Tools

- `odoo_healthcheck`
- `search_customers`
- `get_customer_detail`
- `list_sale_orders`