Stateless MCP server for Odoo — raw primitives + skill resources
Project description
godoo-mcp-server
Stateless MCP server for Odoo — raw primitives + skill resources.
Installation
pip install godoo-mcp-server
Or with Docker:
docker run -e ODOO_URL=https://your.odoo.instance \
-e ODOO_DATABASE=mydb \
-e ODOO_USERNAME=admin \
-e ODOO_PASSWORD=secret \
-p 8000:8000 \
ghcr.io/godoo-dev/godoo-mcp-server:latest
Configuration
The server resolves Odoo credentials from request headers or environment variables. Headers take precedence over environment variables.
| Credential | Header | Environment Variable |
|---|---|---|
| Odoo URL | X-Odoo-Url |
ODOO_URL |
| Database | X-Odoo-Database |
ODOO_DATABASE |
| Username | X-Odoo-Username |
ODOO_USERNAME |
| Password | X-Odoo-Password |
ODOO_PASSWORD |
If neither headers nor environment variables are set, the server returns a credential error.
Server bind address: Defaults to 0.0.0.0:8000. Override with HOST and PORT environment variables.
Note: If you override
PORT, you must also update the DockerHEALTHCHECKto match the new port.
Security: Header Trust Model
godoo-mcp-server authenticates Odoo users via X-Odoo-Username and
X-Odoo-Password request headers (or ODOO_USERNAME / ODOO_PASSWORD
environment variables). This means any caller who can reach the server
can impersonate any Odoo user by setting these headers.
This is intentional for self-hosted / trusted-network deployments. In
production, you MUST deploy a header-stripping reverse proxy in front of
the server that enforces identity. godoo-proxy
is the SaaS-safe gateway for this role — it implements OAuth 2.1 / SSO
and injects verified per-user credentials before forwarding to
godoo-mcp-server.
If you expose godoo-mcp-server directly on a public network without a
trusted proxy, any network peer gains full Odoo impersonation capability.
Running E2E tests locally
Prerequisites:
- Docker (for the Odoo testcontainer)
claudeCLI on PATH (Claude Code)- Claude auth (API key or active OAuth session)
- Python 3.14 +
uv
Command:
uv run pytest -m e2e -s -v
Cost warning: Each run makes a real, billable Claude API call. Keep the suite small and only run when needed.
The test skips automatically when Docker or the claude CLI is absent — this is a clean skip, not an error.
The default uv run pytest excludes e2e tests automatically via the not e2e addopts filter.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file godoo_mcp_server-0.1.0.tar.gz.
File metadata
- Download URL: godoo_mcp_server-0.1.0.tar.gz
- Upload date:
- Size: 18.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8f8f301badafb6d4f31ea39b561183c9f464ce945293897d9f0ca5df62fda66b
|
|
| MD5 |
df90a6a03b09607dfb0259270f2be567
|
|
| BLAKE2b-256 |
457b866c8c27d2d488c26cbe4d04286660fb1a835a90ff5dba3d271d6d28d7a2
|
File details
Details for the file godoo_mcp_server-0.1.0-py3-none-any.whl.
File metadata
- Download URL: godoo_mcp_server-0.1.0-py3-none-any.whl
- Upload date:
- Size: 27.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
226f8f3ce9a95c6f4c73d90c80b02e288b550f77ecd06d94ab805c7de25af3fc
|
|
| MD5 |
5d7bf0f10c8382d78235417c0d2e8260
|
|
| BLAKE2b-256 |
60f406084cc8e3ad3c08f75b175f41da43edec433ece2678be5b63927ea32e5d
|