使用说明
Odoo MCP 服务器
一个专业的模型上下文协议(MCP)服务器,用于实现Odoo ERP系统的无缝集成。支持HTTP和STDIO传输方式,以提供最大灵活性。
🚀 功能
🌐 支持双传输
- HTTP 模式使用Express.js的REST API,适用于Web应用和远程访问
- STDIO 模式为Claude Desktop和本地AI助手提供直接的stdin/stdout通信
🔧 完整集成Odoo
- 认证使用环境变量自动登录或手动连接
- CRUD 操作在任何Odoo模型上实现完整的创建、读取、更新、删除操作
- 高级搜索使用Odoo强大的搜索语法进行复杂领域过滤
- 方法调用在Odoo模型上执行任何自定义方法
- 多协议XML-RPC 和 JSON-RPC 支持
🏗️ 专业建筑
- TypeScript全面的类型安全和现代ES模块
- MCP协议符合2024年11月5日模型上下文协议
- 错误处理全面的错误处理和日志记录
- 模块化设计职责清晰分离
- 生产就绪经过真实Odoo部署的实战检验
📦 安装
NPM(推荐)
npm install -g @mweinheimer/odoo-mcp-server
来自来源
git clone https://github.com/heimerle/odoo-mcp-server.git
cd odoo-mcp-server
npm install
npm run build
⚙️ 配置
环境变量
创建一个 .env.local 文件或设置这些环境变量:
# Odoo Connection (Required)
ODOO_URL=http://your-odoo-instance:8069
ODOO_DB=your_database # or ODOO_DATABASE
ODOO_USERNAME=your_username
ODOO_PASSWORD=your_password
# Transport Mode
MCP_TRANSPORT=stdio # 'http' or 'stdio' (default: http)
# Odoo Protocol
ODOO_TRANSPORT=jsonrpc # 'jsonrpc' or 'xmlrpc' (default: jsonrpc)
# HTTP Mode Settings (only for MCP_TRANSPORT=http)
MCP_HTTP_PORT=3001 # HTTP server port (default: 3001)
克劳德桌面配置
添加到你的 claude_desktop_config.json:
{
"mcpServers": {
"odoo": {
"command": "node",
"args": [
"/path/to/odoo-mcp-server/dist/stdio-server.js"
],
"env": {
"ODOO_URL": "http://your-odoo:8069",
"ODOO_DB": "your_database",
"ODOO_USERNAME": "your_username",
"ODOO_PASSWORD": "your_password"
}
}
}
}
或者使用全局安装:
{
"mcpServers": {
"odoo": {
"command": "odoo-mcp-server",
"args": ["--stdio"],
"env": {
"ODOO_URL": "http://your-odoo:8069",
"ODOO_DB": "your_database",
"ODOO_USERNAME": "your_username",
"ODOO_PASSWORD": "your_password",
"MCP_TRANSPORT": "stdio"
}
}
}
}
🚀 快速入门
HTTP 模式
# Using environment variables
ODOO_URL=http://localhost:8069 \
ODOO_DB=mydb \
ODOO_USERNAME=admin \
ODOO_PASSWORD=admin \
MCP_TRANSPORT=http \
node dist/http-mcp-server.js
# Server starts on http://localhost:3001
STDIO 模式(Claude 桌面版)
# Using the dedicated STDIO entry point
ODOO_URL=http://localhost:8069 \
ODOO_DB=mydb \
ODOO_USERNAME=admin \
ODOO_PASSWORD=admin \
node dist/stdio-server.js
🔧 可用工具
该服务器为Odoo提供了13个MCP工具以实现交互:
- Odoo_Ping(注:此处“odoo_ping”可能是一个特定系统或服务中的命令或功能名称,直接翻译为“Odoo_响铃”或“Odoo_测试连接”等可能不完全准确,具体含义需结合上下文或Odoo系统的相关文档来确定。) - 测试Odoo连接并获取服务器信息
- Odoo连接 - 手动登录Odoo(当未配置自动登录时)
- Odoo搜索读取 - 使用域名过滤器搜索和读取记录
- Odoo创建 - 在任何模型中创建新记录
- Odoo写入(或Odoo数据写入) - 更新现有记录
- Odoo_删除(或“Odoo_解除关联”) - 删除记录
- Odoo 调用方法 - 在模型上执行自定义方法
- `odoo_get_fields` 翻译成中文可以是“Odoo获取字段” - 获取模型的字段定义
- Odoo读取(或Odoo阅读) - 通过ID读取特定记录
- Odoo搜索 - 搜索记录ID
- Odoo搜索计数 - 统计符合标准的记录数量
- `odoo_name_get` 可以翻译为“Odoo中的名称获取”或“Odoo的名称获取方法”,具体取决于上下文和使用场景。这个名称可能指的是在Odoo(一个开源的ERP和CRM软件)中用于获取或显示对象名称的某种方法或函数 - 获取记录的显示名称
- Odoo名称搜索 - 按名称搜索记录
📚 使用示例
示例1:搜索客户(HTTP)
curl -X POST http://localhost:3001/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "odoo_search_read",
"arguments": {
"model": "res.partner",
"domain": [["is_company", "=", true]],
"fields": ["name", "email", "phone"],
"limit": 10
}
},
"id": 1
}'
示例2:创建联系人(Claude桌面版 - STDIO)
直接问克劳德:
在Odoo中创建一个新的联系人,姓名为“John Doe”,电子邮件为“john@example.com”
克劳德将使用 odoo_create 工具自动地。
示例3:更新记录
curl -X POST http://localhost:3001/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "odoo_write",
"arguments": {
"model": "res.partner",
"ids": [42],
"values": {
"phone": "+1234567890"
}
}
},
"id": 1
}'
🧪 开发
从源代码构建
git clone https://github.com/heimerle/odoo-mcp-server.git
cd odoo-mcp-server
npm install
npm run build
开发模式
npm run dev # Watch mode with auto-recompile
npm run lint # Run ESLint
npm run test # Run tests
项目结构
src/
├── http-mcp-server.ts # Main HTTP/STDIO server
├── stdio-server.ts # Dedicated STDIO entry point
├── models/
│ ├── odoo-client.ts # Odoo API client
│ └── odoo-tools.ts # MCP tool definitions
├── utils/
│ └── odoo-sanitizer.ts # Response sanitization
└── types/
└── index.ts # TypeScript type definitions
📖 文档
- 快速入门指南 - 5分钟内快速上手
- 示例 - 详细的使用示例
- 运输方式 - 解释HTTP与STDIO的区别
- MCP设置 - Claude Desktop 集成
- 测试指南 - 如何测试服务器
- 更新日志 - 版本历史
🐛 故障排除
STDIO 模式:“未连接到 Odoo”
确保你使用的是正确的环境变量名称:
- 使用
ODOO_DB或者ODOO_DATABASE(两者都有效) - 必须提供所有凭据以实现自动登录
HTTP 模式:端口已被占用
# Check what's using port 3001
lsof -i :3001
# Kill the process
pkill -f "node.*http-mcp-server"
# Or use a different port
MCP_HTTP_PORT=3002 node dist/http-mcp-server.js
连接被拒绝
检查您的Odoo实例是否可访问:
curl http://your-odoo-instance:8069/web/database/selector
🤝 贡献/参与
欢迎投稿!请:
- 为仓库创建分支(或“克隆仓库”)
- 创建一个特性分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add amazing feature') - 推送至分支(
git push origin feature/amazing-feature) - 提交一个拉取请求
📄 许可证
MIT 许可证 - 详见 许可证 文件中详述。
🔗 链接
- GitHubhttps://github.com/heimerle/odoo-mcp-server(中文可表述为:“GitHub上的heimerle/odoo-mcp-server项目”)
- **NPM(Node Package Manager,节点包管理器)**https://www.npmjs.com/package/@mweinheimer/odoo-mcp-server 的中文翻译为:“https://www.npmjs.com 上的 @mweinheimer/odoo-mcp-server 包”
- 问题https://github.com/heimerle/odoo-mcp-server/issues(中文可表述为:GitHub上的heimerle/odoo-mcp-server项目的问题页面)
🙏 致谢
- 用……建造 模型上下文协议
- 由……提供支持/驱动 Odoo 企业资源规划(ERP)系统
- TypeScript 和 Node.js
为Odoo和AI社区倾心打造
