admin-mcp
Allows interaction with Odoo's API for customer management and administration operations, including listing and searching customers.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@admin-mcplist customers"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
admin-mcp
Servidor MCP (Model Context Protocol) en Python para operaciones de administración Odoo. Scaffold arquitectónico basado en ApkMCP, con FastMCP y transporte Streamable HTTP.
Incluye búsqueda de clientes conectada: service → resource → tool.
Requisitos
Python 3.11+
Para desarrollo con MCP Inspector: Node.js 22.7.5+ y pnpm
Related MCP server: mcp-server-odoo
Instalación
cd AdminMCP
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[lambda]"Con uv:
uv sync --all-extrasConfiguración
Copia .env.example a .env:
Variable | Descripción | Default |
| Timeout HTTP en segundos |
|
| Bind y ruta MCP |
|
Autenticación (auth-key)
Cada petición HTTP al endpoint MCP debe incluir la cabecera auth-key: Bearer + base64(BASE_URL|API_KEY[|database]).
BASE_URL: URL HTTPS del servidor Odoo (sin barra final), p. ej.https://mi-empresa.onrender.comAPI_KEY: clave API de un usuario bot de Odoo (scope rpc)database(opcional): nombre de la base de datos cuando el servidor tiene varias (X-Odoo-Database)
Generar el valor en local:
# Sin base de datos explícita
pnpm auth-key -- https://mi-empresa.onrender.com|99031c76-d288-41ea-866b-ef656f58e497
# Con base de datos (multi-DB)
pnpm auth-key -- https://mi-empresa.onrender.com|99031c76-d288-41ea-866b-ef656f58e497|mi_dbEl servidor decodifica URL, API key y database opcional, y prepara el cliente httpx para llamadas JSON-2 a Odoo (POST /json/2/{modelo}/{metodo}).
Ejecución
python -m app
# o
admin-mcpDesarrollo con Inspector:
pnpm install
pnpm devInspector usa dev/mcp-inspector.config.json (puerto 8001, distinto de ApkMCP en 8000). Configura el header auth-key en el Inspector antes de invocar tools/resources.
Flujo de pedido (ChatGPT)
Formato abreviado: Pepe, arroz 2, aceite (cliente + productos; sin cantidad → 1 unidad).
Paso | Acción |
1 | Usuario indica cliente y productos |
2 | Asistente resuelve cliente, crea carrito, añade productos, muestra carrito |
3 | Usuario puede añadir más productos |
4 | Asistente muestra carrito actualizado |
5 | Usuario confirma → |
Desambiguación: si hay varios clientes o productos, se listan todos con id y el usuario elige por id.
Búsqueda de productos por nombre: add_to_cart(product_search="arroz", quantity=2) — no requiere conocer el product_id de antemano.
ChatGPT impone un límite de ~5000 tokens en el schema total de tools; las descripciones se mantienen breves para que el conector importe todas las tools (incluido catálogo).
Verificar versión en ChatGPT
Tras un despliegue, el usuario puede comprobar qué build está respondiendo:
Preguntar: "¿Qué versión de AdminMCP tienes?"
El asistente invoca
read_server_infoy responde conversion,build_id,instructions_revision, tools y prompts.
Cada respuesta de cualquier tool incluye _server.version y _server.build_id.
Superficie MCP
Tipo | Nombre | Descripción |
Tool |
| Busca clientes por nombre/teléfono |
Tool |
| Busca productos por nombre |
Tool |
| Detalle de producto por id |
Tool |
| Lista categorías |
Tool |
| Crea carrito para un cliente |
Tool |
| Añade producto ( |
Tool |
| Consulta carrito actual |
Tool |
| Vacía carrito |
Tool |
| Confirma pedido en Odoo |
Tool |
| Versión y tools desplegadas |
Resource |
| Listado/búsqueda de clientes |
Resource |
| Catálogo de productos |
Prompt |
| Flujo de búsqueda de clientes |
Prompt |
| Flujo de carrito y pedidos |
Arquitectura
app/
├── server/ # FastMCP, lifespan, middleware auth-key, DI, instructions
├── clients/ # OdooJson2Client (JSON-2 API oficial)
├── services/ # Lógica reutilizable (sin decoradores MCP)
├── resources/ # @mcp.resource app://...
├── tools/ # @mcp.tool acciones
│ └── tool_resources/ # read_* espejo de resources
├── prompts/ # @mcp.prompt
├── utils/ # app_key_codec, excepciones
└── cli/ # admin-mcp-auth-keyRegistro por imports con efecto lateral en app/server/__init__.py.
Flujo de búsqueda de clientes:
AppKeyMiddlewaredecodificaauth-key→AppContextResource
app://customerso toolread_customers→services/customers.py
Cómo extender
Añadir función en
app/services/<dominio>.pyExponer
@mcp.resourceenapp/resources/<dominio>.pyEspejo
read_*enapp/tools/tool_resources/<dominio>.pyTools de acción en
app/tools/<dominio>.pyRegistrar módulos en los
__init__.pycorrespondientesActualizar
app/server/instructions.py
Configuración Cursor MCP
{
"mcpServers": {
"admin-mcp": {
"url": "http://127.0.0.1:8001/mcp",
"headers": {
"auth-key": "Bearer <base64(BASE_URL|API_KEY[|database])>"
}
}
}
}Tests
pnpm test
# o
pytestDespliegue (AWS Lambda)
pnpm deployRequiere credenciales AWS y SERVERLESS_ACCESS_KEY. El workflow .github/workflows/main.yml despliega en push a main.
Relación con ApkMCP
AdminMCP replica la arquitectura de ApkMCP (capas, auth-key, Lambda, Inspector) con operaciones admin: clientes, catálogo, carrito y pedidos confirmados.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/aprezcuba24/odoo-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server