使用说明
Odoo MCP 服务器
一个模型上下文协议(MCP)服务器,通过XML-RPC连接到Odoo v18数据库,以提取销售信息用于大型语言模型(LLM)交互。
特点/功能
- :electric_plug:(电插头) XML-RPC 连接通过XML-RPC API直接连接到Odoo v18
- :bar_chart: 翻译为中文是:“柱状图” 销售数据提取提取销售订单,应用灵活的域过滤条件
- :mag: 翻译为中文是“放大镜” 高级过滤支持自定义Odoo域过滤器
- 📈(图表显示上升趋势) 销售分析获取销售统计数据和总结
- :white_check_mark:(这个符号通常表示“已勾选”或“正确/通过”的意思,直接翻译为中文即“已勾选”或“正确/通过”,但具体翻译可能根据上下文有所调整) 数据验证使用Zod进行全面的输入验证
- :mag: 翻译为中文是“放大镜” MCP 检查器内置测试支持
可用工具
1. get_sales_orders
从Odoo中提取销售订单,可选择性过滤。
参数:
domain(可选):以JSON字符串形式的Odoo域名过滤器limit(可选):要返回的最大记录数(默认:100)offset(可选):要跳过的记录数(默认:0)fields(可选):以逗号分隔的字段列表
默认行为仅返回已确认的销售订单(state = 'sale')
2. get_sales_order_details
获取特定销售订单的详细信息。
参数:
order_id(必填):销售订单IDinclude_lines(可选):包含订单行(默认:true)
3. get_sales_stats
获取销售统计数据和总结。
参数:
date_from(可选):开始日期(YYYY-MM-DD)date_to(可选):结束日期(YYYY-MM-DD)group_by(可选):按字段分组(user_id,team_id,state,partner_id)
设置
1. 克隆并安装依赖项
git clone [repository-url]
cd odoo-mcp
npm install
2. 配置环境
复制环境模板并填写您的Odoo凭据:
cp .env.example .env
编辑 .env:
ODOO_URL=<https://your-odoo-instance.com>
ODOO_DATABASE=your_database_name
ODOO_USERNAME=your_username
ODOO_API_KEY=your_api_key
注API密钥比密码更安全。在Odoo中生成一个API密钥:
- 进入设置 > 用户与公司 > 用户
- 选择您的用户
- 前往API密钥选项卡
- 生成一个新的API密钥
3. 构建项目
npm run build
使用
开发模式
以开发模式运行服务器,并启用热重载:
npm run dev
生产模式
构建并运行编译后的服务器:
npm run build
npm start
使用MCP Inspector进行测试
在将服务器与Claude集成之前,请使用MCP检查器进行测试:
npm run inspector
这将启动MCP检查器,在那里您可以:
- 测试工具调用
- 检查回复
- 调试连接问题
与Claude的集成
将此服务器添加到您的Claude配置中:
{
"mcpServers": {
"odoo-sales": {
"command": "node",
"args": ["/path/to/odoo-mcp/dist/server.js"],
"env": {
"ODOO_URL": "<https://your-odoo-instance.com>",
"ODOO_DATABASE": "your_database_name",
"ODOO_USERNAME": "your_username",
"ODOO_API_KEY": "your_api_key"
}
}
}
}
示例用法
基本销售订单查询
Get all confirmed sales orders from this month
自定义域名过滤器
Get sales orders for customer "John Smith" that are in draft state
大型语言模型(LLM)将自动构建适当的领域过滤器:
[["partner_id", "ilike", "John Smith"], ["state", "=", "draft"]]
销售统计
Show me sales statistics for the last quarter grouped by salesperson
项目结构
odoo-mcp/
├── src/
│ ├── clients/
│ │ └── odoo-client.ts # XML-RPC client for Odoo
│ ├── tools/
│ │ └── sales-orders.ts # Sales order tools implementation
│ ├── types/
│ │ └── odoo.ts # TypeScript interfaces
│ └── server.ts # Main MCP server
├── dist/ # Compiled JavaScript
├── package.json
├── tsconfig.json
├── .env.example
└── README.md
要求
- Node.js18岁以上
- **Odoo(注:Odoo是一个开源的业务应用软件套件,用于管理企业运营,如进销存、会计、CRM等,此处为直接音译,实际使用时通常保留原名)**v18(可能与旧版本兼容)
- XML-RPC 访问Odoo 实例必须允许 XML-RPC 连接
错误处理
服务器包含对以下内容的全面错误处理:
- 无效的Odoo凭据
- 网络连接问题
- 无效的域名过滤器
- 缺少必需的参数
- Zod 验证错误
- XML-RPC 与 HTML 响应检测
- 自动URL修正建议
- 详细的诊断信息
增强型诊断
当连接问题发生时,服务器现在提供:
- HTTP终端点测试验证端点是否可达
- 内容类型验证检测服务器是否返回HTML而非XML-RPC
- URL建议为常见的配置错误提供修正后的URL
- 特定错误指导解释每个错误的含义及如何修复它
示例错误输出
Server returned HTML instead of XML-RPC response (found <TITLE> tag).
Endpoint returns Content-Type: text/html
This suggests:
1. URL might be pointing to Odoo web interface instead of XML-RPC endpoint
2. XML-RPC might be disabled on this Odoo instance
3. Authentication might be required at web server level
4. Wrong port or path
Try these URLs in your .env file:
1. ODOO_URL=https://your-domain.com:8069
2. ODOO_URL=https://your-domain.com/odoo
3. ODOO_URL=https://your-domain.com/web
做出贡献
- 为仓库创建分支
- 创建一个特性分支
- 进行你的更改
- 如适用,请添加测试
- 提交一个拉取请求
许可证
MIT 许可证 - 详情请参阅 LICENSE 文件
作者
FReptar0 可以翻译为“F爬行者0”或者根据上下文具体含义进行调整,但通常直接保留原样以表示这是一个特定名称或标识。如果这是一个虚构的名称或特定技术/设备的名称,那么直接使用“FReptar0”作为译文也是可接受的,无需翻译。不过,若需一个更贴近中文表达习惯的译文,“F爬行者0”是一个简单的翻译选项