使用说明
带有HTTP传输的Odoo MCP服务器
(基于tuanle96/mcp-odoo,感谢他的出色工作)
一个与Odoo ERP系统集成的MCP服务器实现,使AI助手能够通过模型上下文协议与Odoo的数据和功能进行交互。现在,该实现同时支持stdio和HTTP传输层,以提供最大的灵活性。
特点/特性
- 双传输支持同时支持stdio(传统)和HTTP传输层
- 全面的Odoo系统集成完全访问Odoo模型、记录和方法
- XML-RPC 通信通过XML-RPC安全连接到Odoo实例
- HTTP传输安全API密钥认证、速率限制和CORS支持
- 会话管理为HTTP客户端提供安全的会话处理
- SSL/TLS 支持生产环境部署中的HTTPS加密
- 灵活配置支持配置文件和环境变量
- 资源模式系统基于URI的Odoo数据结构访问
- 错误处理为常见的Odoo API问题提供清晰的错误信息
- 无状态操作可靠的集成所需的清晰请求/响应周期
工具
-
执行方法
- 在Odoo模型上执行自定义方法
- 输入:
model(字符串):模型名称(例如,'res.partner')method(字符串):要执行的方法名args(可选数组):位置参数kwargs(可选对象):关键字参数
- 返回值:包含方法结果和成功指示符的字典
-
搜索员工
- 按姓名搜索员工
- 输入:
name(字符串):要搜索的名称(或名称的一部分)limit(可选数字):要返回的最大结果数(默认20)
- 返回值:一个包含成功指示器、匹配的员工姓名和ID列表以及任何错误消息的对象
-
搜索假期
- 在指定日期范围内搜索假期
- 输入:
start_date(字符串):开始日期,格式为YYYY-MM-DDend_date(字符串):结束日期,格式为YYYY-MM-DDemployee_id(可选编号):可选的员工ID,用于筛选假期
- 返回值:一个对象,包含成功指示器、找到的节假日列表以及任何错误消息
资源
-
odoo://models 翻译为中文是:“Odoo://模型(或模型库)”。不过,这里的“models”在Odoo上下文中通常指的是Odoo系统中的各种模型(即业务对象或数据模型),所以更贴切的翻译可能是“Odoo://模型(业务对象/数据模型)”。但为了简洁,一般翻译为“Odoo://模型”即可
- 列出Odoo系统中所有可用的模型
- 返回:模型信息的JSON数组
-
odoo://model/{model_name} 翻译为中文是:“Odoo://模型/{模型名称}”
- 获取特定模型的信息,包括字段
- 示例:
odoo://model/res.partner - 返回:包含模型元数据和字段定义的JSON对象
-
odoo://record/{模型名称}/{记录ID}
- 通过ID获取特定记录
- 示例:
odoo://record/res.partner/1 - 返回:包含记录数据的JSON对象
-
Odoo://搜索/{模型名称}/{领域条件}
- 搜索与特定域匹配的记录
- 示例:
odoo://search/res.partner/[["is_company","=",true]] - 返回:匹配记录的JSON数组(默认限制为10条)
配置
Odoo 连接设置
- 创建一个名为的配置文件
odoo_config.json:
{
"url": "https://your-odoo-instance.com",
"db": "your-database-name",
"username": "your-username",
"password": "your-password-or-api-key"
}
- 或者,使用环境变量:
ODOO_URL您的Odoo服务器URLODOO_DB数据库名称ODOO_USERNAME登录用户名ODOO_PASSWORD密码或API密钥ODOO_TIMEOUT连接超时时间(以秒为单位)(默认:30)ODOO_VERIFY_SSL是否验证SSL证书(默认:true)HTTP_PROXY强制ODOO连接使用HTTP代理
HTTP传输配置
对于HTTP传输,您可以通过环境变量或(其他方式)配置额外设置 http_config.json:
{
"host": "0.0.0.0",
"port": 8000,
"path": "/mcp",
"require_https": false,
"allowed_origins": ["*"],
"ssl_certfile": null,
"ssl_keyfile": null,
"default_rate_limit": 1000,
"session_timeout": 3600
}
HTTP 环境变量:
HTTP_HOST服务器主机(默认:127.0.0.1)HTTP_PORT服务器端口(默认:8000)REQUIRE_HTTPS强制使用 HTTPS(默认:false)ALLOWED_ORIGINS逗号分隔的CORS来源(默认:*)SSL_CERTFILESSL证书文件路径SSL_KEYFILESSL私钥文件路径
与Claude Desktop的使用
把它加到你的(列表/计划/等)里 claude_desktop_config.json:
{
"mcpServers": {
"odoo": {
"command": "python",
"args": [
"-m",
"odoo_mcp"
],
"env": {
"ODOO_URL": "https://your-odoo-instance.com",
"ODOO_DB": "your-database-name",
"ODOO_USERNAME": "your-username",
"ODOO_PASSWORD": "your-password-or-api-key"
}
}
}
}
Docker
{
"mcpServers": {
"odoo": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ODOO_URL",
"-e",
"ODOO_DB",
"-e",
"ODOO_USERNAME",
"-e",
"ODOO_PASSWORD",
"mcp/odoo"
],
}
}
}
安装方法
1. Docker 构建和运行
Docker 构建:
docker build -t mcp/odoo:latest -f Dockerfile .
Docker 运行:
docker run -i --rm -e ODOO_URL -e ODOO_DB -e ODOO_USERNAME -e ODOO_PASSWORD mcp/odoo
2. Python 包
pip install odoo-mcp
运行服务器
Stdio 传输(传统 MCP)
# Using the installed package (default stdio transport)
odoo-mcp
# Using the MCP development tools
mcp dev odoo_mcp/server.py
# With additional dependencies
mcp dev odoo_mcp/server.py --with pandas --with numpy
# Mount local code for development
mcp dev odoo_mcp/server.py --with-editable .
HTTP传输(新)
# Run HTTP server in development mode
odoo-mcp --transport http --dev
# Run HTTP server with custom host/port
odoo-mcp --transport http --host 0.0.0.0 --port 8080
# Run HTTPS server with SSL certificates
odoo-mcp --transport http --ssl-cert /path/to/cert.pem --ssl-key /path/to/key.pem
# Run with custom configuration file
odoo-mcp --transport http --config http_config.json
API密钥管理
# Create a new API key
odoo-mcp --create-api-key "my-application"
# List all API keys
odoo-mcp --list-api-keys
HTTP传输使用
一旦HTTP服务器运行起来,您就可以访问:
- 健康检查:
GET http://localhost:8000/health - API 文档:
GET http://localhost:8000/docs - MCP 端点:
POST http://localhost:8000/mcp
示例HTTP请求(URL中包含API密钥):
curl -X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":"1","method":"tools/list"}' \
"http://localhost:8000/mcp?api_key=your_api_key_here"
或者使用带有Authorization头的请求:
curl -X POST \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":"1","method":"tools/list"}' \
http://localhost:8000/mcp
客户示例:
- Python 客户端:参见
examples/http_client_example.py - JavaScript 客户端:参见
examples/javascript_client_example.html
参数格式化指南
在使用MCP工具为Odoo进行开发时,请注意以下参数格式化指南:
-
域名参数:
- 支持以下域名格式:
- 列表格式:
[["field", "operator", value], ...] - 对象格式:
{"conditions": [{"field": "...", "operator": "...", "value": "..."}]} - 任一格式的JSON字符串
- 列表格式:
- 示例:
- 列表格式:
[["is_company", "=", true]] - 对象格式:
{"conditions": [{"field": "date_order", "operator": ">=", "value": "2025-03-01"}]} - 多种条件:
[["date_order", ">=", "2025-03-01"], ["date_order", "<=", "2025-03-31"]]
- 列表格式:
- 支持以下域名格式:
-
字段参数:
- 应该是一个字段名的数组:
["name", "email", "phone"] - 服务器将尝试将字符串输入解析为JSON
- 应该是一个字段名的数组:
许可证
这个MCP服务器采用MIT许可证授权。