Skip to main content
Glama
monthop-gmail

cf-odoo-mcp-server

cf-odoo-mcp-server

MCP server para Odoo ERP que se ejecuta en Cloudflare Workers

Usa un transport stateless HTTP — no necesita Durable Objects, ni contenedores, ni procesos en ejecución; cabe cómodamente en el free tier de Workers.

Es un port de odoo-mcp-claude, que ofrece el mismo conjunto de 10 herramientas, pero se ejecuta como un proceso de Python y habla mediante XML-RPC.

Odoo 19 tiene 2 tipos de API key — comprueba cuál necesitas

Odoo 19 permite crear API keys con 2 scopes que no son intercambiables.

Tipo de key

Habla con

Qué obtienes

mcp

el /mcp de Odoo

servidor MCP integrado con 5 herramientas solo lectura — no hay scope de escritura que activar

rpc

/jsonrpc

acceso completo al ORM este proyecto usa este

La separación de scopes es estricta en ambos sentidos: una key de tipo rpc que llame a /mcp recibirá un 401, y una key de tipo mcp no puede autenticarse vía JSON-RPC.

Por eso puede que no necesites usar este proyecto en absoluto. Si tu agente solo lee, el servidor MCP integrado de Odoo no requiere despliegue, ni buscar alojamiento, ni llevar el código de Odoo a otro sitio — basta con apuntar el cliente a https://<odoo-ของคุณ>/mcp con una key de tipo mcp. Además rechaza los modelos técnicos, una salvaguarda que este proyecto no tiene.

El trabajo que requiere escribir datos necesita una key de tipo rpc, que es la razón de ser de este proyecto — además de poder conectar varios Odoo a través de un único endpoint y tener un límite predeterminado al leer. Ambos pueden ejecutarse en paralelo.

NOTES.md tiene la comparación completa, incluidos los puntos donde el schema del servidor MCP integrado hace tropezar al agente.

Por qué usar JSON-RPC y no XML-RPC

El xmlrpc.client de Python necesita un raw socket, que el runtime de Workers no proporciona. Pero Odoo expone el mismo execute_kw vía JSON-RPC en /jsonrpc, que es HTTP normal y corriente, usable directamente con fetch sin necesidad de adaptaciones.

Requisitos

Odoo debe ser accesible desde Internet mediante HTTPS — el Worker no puede entrar en la LAN. Si Odoo aún no es público, pon Cloudflare Tunnel delante.

Herramientas

Herramienta

método de Odoo

odoo_list_servers

— (muestra los servidores configurados)

odoo_search_read

search_read

odoo_search_count

search_count

odoo_read

read

odoo_create

create y luego lee los campos escritos

odoo_write

write y luego lee los campos escritos

odoo_delete

unlink

odoo_execute

cualquier método

odoo_fields_get

fields_get

odoo_version

common.version

Configuración

Variable

Para qué se usa

MCP_AUTH_TOKEN

Obligatorio bearer token que el llamador debe incluir

ODOO_SERVERS

JSON que admite uno o varios servidores; si se define, tiene prioridad sobre las variables de abajo

ODOO_URL ODOO_DB ODOO_USERNAME ODOO_PASSWORD

alternativa para un solo servidor

ALLOWED_ORIGIN_HOSTNAMES

Opcional. Lista de hostnames separados por comas a los que se permite que el Origin del navegador llame a /mcp, o *. Si no se define, solo se aceptan localhost y el hostname workers.dev del propio Worker — los clientes del lado del servidor no envían Origin, así que no se ven afectados.

Conviene usar una API key de Odoo en lugar de la contraseña de la cuenta, y dar a esa cuenta solo los permisos que las herramientas necesiten de verdad — odoo_delete y odoo_write acceden a todo lo que la cuenta pueda acceder.

ODOO_SERVERS tiene este aspecto

{
  "default_server": "prod",
  "servers": {
    "prod": { "url": "https://odoo.example.com", "db": "mydb", "username": "bot@example.com", "password": "api-key" }
  }
}

Desarrollo local

npm install
cp .dev.vars.example .dev.vars   # แล้วกรอกค่าให้ครบ
npm run dev

.dev.vars ya está en gitignore; no commitees contraseñas jamás.

Despliegue

npx wrangler login
npx wrangler deploy

npx wrangler secret put MCP_AUTH_TOKEN     # openssl rand -hex 32
npx wrangler secret put ODOO_URL
npx wrangler secret put ODOO_DB
npx wrangler secret put ODOO_USERNAME
npx wrangler secret put ODOO_PASSWORD

Los secretos se almacenan cifrados y no aparecen en wrangler.jsonc.

Conectar el cliente

.mcp.json en esta carpeta es un archivo de Claude Code, no del Worker — solo le dice al cliente con qué endpoint y con qué token hablar. Este archivo toma valores del environment, así que no contiene secretos y se puede commitear a git.

{
  "mcpServers": {
    "odoo": {
      "type": "streamable-http",
      "url": "${ODOO_MCP_URL:-https://cf-odoo-mcp-server.<subdomain>.workers.dev/mcp}",
      "headers": { "Authorization": "Bearer ${MCP_AUTH_TOKEN}" }
    }
  }
}

Claude Code no carga .env por ti; tienes que exportar las variables al environment antes de invocarlo.

cp .env.example .env    # แล้วกรอก MCP_AUTH_TOKEN
set -a; . ./.env; set +a
claude

Si olvidas exportarlas, las variables no se sustituirán; claude mcp list avisará de que no encuentra las variables y el Worker responderá 401 — falla de forma visible, no en silencio.

ODOO_MCP_URL sirve para apuntar a otro Worker, por ejemplo staging y production, sin tener que editar .mcp.json.

Para otros clientes que no lean .mcp.json, configura el endpoint y la cabecera Authorization: Bearer <token> con el mismo formato.

GET /health no requiere autenticación y devuelve {"status":"ok"}.

Seguridad

Este endpoint es público; toda petición que entre a /mcp debe llevar un bearer token, y se compara en tiempo constante. Si MCP_AUTH_TOKEN no está definido, el Worker devuelve 500 en lugar de abrirse del todo.

Un único token compartido es adecuado para un servidor privado o de uso interno. Si necesitas identidades individuales, pon Workers OAuth Provider delante.

Notas de uso real

NOTES.md documenta lo probado con un Odoo real y las precauciones importantes al dejar que un agente de IA maneje estas herramientas — en especial cómo Odoo descarta silenciosamente los valores escritos en campos de solo lectura.

Licencia

MIT

-
license - not tested
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform

  • ERP français avec serveur MCP natif : plus de 1 800 actions métier auto-générées via OpenAPI.

  • A paid remote MCP for hosted MCP server, built to return verdicts, receipts, usage logs, and audit-r

View all MCP Connectors

Latest Blog Posts

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/monthop-gmail/cf-odoo-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server