Token导航 LogoToken导航TokenDH.com
Odoo Rust MCP logo
AI代理未说明官方级别未说明来源级核验

Odoo Rust MCP

MCP Server

Rust实现的Odoo MCP服务器,支持多种传输协议和Odoo版本,提供模型上下文协议服务。

工具数

11

提示词数

0

GitHub Stars

9

资源数

0
RustClaudeAI代理Claude DesktopClaudeCursorWindsurf

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

rachmataditiya

提供方

rachmataditiya

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

碘锈mcp🚗

![CI](https://github.com/rachmataditiya/odoo-rust-mcp/actions/workflows/ci.yml) ![Release](https://github.com/rachmataditiya/odoo-rust-mcp/actions/workflows/release.yml) ![codecov](https://codecov.io/gh/rachmataditiya/odoo-rust-mcp) ](https://github.com/rachmataditiya/odoo-rust-mcp/releases) ![License: AGPL-3.0](https://www.gnu.org/licenses/agpl-3.0) ![Homebrew](https://rachmataditiya.github.io/homebrew-odoo-rust-mcp/) ![Debian/Ubuntu](https://rachmataditiya.github.io/odoo-rust-mcp/) ](https://github.com/rachmataditiya/odoo-rust-mcp/pkgs/container/odoo-rust-mcp) ![Kubernetes](https://github.com/rachmataditiya/odoo-rust-mcp/tree/main/k8s) ![Helm](https://github.com/rachmataditiya/odoo-rust-mcp/tree/main/helm)

灵感来自标致3008 -优雅、创新、可靠。就像标致3008 SUV将风格与性能相结合一样,这款MCP服务器将优雅与强大的Odoo集成功能相结合。

Rust实现了一个 Odoo MCP服务器 (模型上下文协议),支持:

  • 奥多19+:JSON-2外部API(/json/2/...)使用API密钥验证
  • **奥多\= 19` 使用API密钥。
  • JSON中的额外字段将被忽略。
  • 如果实例省略 apiKey,服务器将回退到全局 ODOO_API_KEY (如果设置)。
  • 如果实例省略 username/password,服务器将回退到 ODOO_USERNAME/ODOO_PASSWORD.

单实例(回退)

Odoo 19+(API密钥):

export ODOO_URL="https://mycompany.example.com"
export ODOO_API_KEY="YOUR_API_KEY"
export ODOO_DB="mycompany"   # optional

**Odoo\"


**示例:终止会话**

curl -X DELETE http://127.0.0.1:8787/mcp \ -H "MCP-Session-Id: "


**安全配置:**

Enable Origin validation (comma-separated list of allowed origins)

export MCP_ALLOWED_ORIGINS="https://example.com,https://app.example.com"

Localhost-only mode (empty value)

export MCP_ALLOWED_ORIGINS=""

Disable Origin validation (default - not recommended for production)

Simply don't set MCP_ALLOWED_ORIGINS


启用Origin验证时:

- 收到具有无效Origin标头的请求 `403 Forbidden`
- 本地宿主来源(`localhost`, `127.0.0.1`, `[::1]`)总是被允许的
- 允许没有Origin标头的请求(同源或非浏览器客户端)

### HTTP API文档

使用OpenAPI 3.0规范对HTTP API进行了说明。你可以:

- 查看OpenAPI规范: `http://localhost:8787/openapi.json`
- 使用规范和Swagger UI、Postman或n8n等工具进行集成
- 规范记录了所有端点,包括请求/响应模式

有关与n8n或Dify等工具的集成,请参阅OpenAPI规范以获取完整的API详细信息。

### 身份验证(HTTP传输)

HTTP传输支持根据 [MCP规范](https://modelcontextprotocol.io/specification/draft/basic/authorization).

**通过环境变量启用身份验证:**

export MCP_AUTH_ENABLED=true export MCP_AUTH_TOKEN=your-secure-random-token-here


**或通过配置UI启用(推荐):**

1. 打开 `http://localhost:3008` 并登录
1. 首选 **安全** 标签
1. 切换 **启用MCP HTTP身份验证**
1. 点击 **生成新令牌** 或粘贴您现有的令牌
1. 更改立即生效(热重新加载,无需重新启动)

当 `MCP_AUTH_ENABLED=true` 和 `MCP_AUTH_TOKEN` 如果已设置,则所有HTTP请求都必须包含 `Authorization` 头球

Authorization: Bearer your-secure-random-token-here


**卷曲示例:**

curl -X POST http://127.0.0.1:8787/mcp \ -H "Content-Type: application/json" \ -H "Authorization: Bearer your-secure-random-token-here" \ -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05"}}'


**热重载支持:**

- 可以启用/禁用身份验证设置,并且可以从配置UI重新生成令牌
- 更改立即生效,无需重新启动服务
- 服务器使用 `Arc` 用于线程安全的动态配置更新

**笔记:**

- 如果 `MCP_AUTH_ENABLED=false` 或 `MCP_AUTH_TOKEN` 未设置,身份验证已禁用(不建议用于生产)
- STDIO传输不使用HTTP身份验证(凭据来自环境)
- 生成安全令牌: `openssl rand -hex 32`
- 对于生产部署,始终启用身份验证

### 运行(WebSocket/独立服务器)

cd rust-mcp ./target/release/rust-mcp --transport ws --listen 127.0.0.1:8787


### 使用Docker Compose运行

创建 `.env` 在repo根目录中(示例 `dotenv.example`)那么:

docker compose up --build


默认情况下,容器运行 **超文本传输协议** 运输和暴露 `http://localhost:8787/mcp`.

**特征:**

- 自定义网络 `mcp-network` 用于与其他容器(n8n、dify等)集成
- 容器编排的健康检查
- 配置文件的卷装载
- 支持 `ODOO_INSTANCES_JSON` 用于多实例设置
- 服务发现的资源限制和标签

**多实例配置:**

1. 创建 `instances.json` 对于您的Odoo实例:

{ "production": {"url": "https://odoo.example.com", "db": "prod", "apiKey": "xxx"}, "staging": {"url": "https://staging.example.com", "db": "staging", "apiKey": "yyy"} }


2. 在中安装和配置 `.env`:

ODOO_INSTANCES_JSON=/config/instances.json


3. 取消注释中的卷装载 `docker-compose.yml`:

volumes: - ./instances.json:/config/instances.json:ro


**与其他容器集成:**

MCP服务器在 `mcp-network` 网络。其他容器可以使用以下方式连接:

In your other service's docker-compose.yml

services: n8n: networks: - mcp-network environment: MCP_URL: "http://odoo-mcp:8787/mcp"

networks: mcp-network: external: true


看 `docker-compose.override.example.yml` 更多集成示例。

### 使用Kubernetes运行

该项目包括Kubernetes清单 `k8s/` 用于生产部署。

**快速开始使用原始清单:**

Apply all manifests

kubectl apply -k k8s/

Or apply individually

kubectl apply -f k8s/namespace.yaml kubectl apply -f k8s/configmap.yaml kubectl apply -f k8s/secret.yaml # Edit first with your credentials! kubectl apply -f k8s/deployment.yaml kubectl apply -f k8s/service.yaml kubectl apply -f k8s/ingress.yaml # Optional, for external access


**验证部署:**

kubectl -n odoo-mcp get pods kubectl -n odoo-mcp logs -f deployment/odoo-mcp


**用于本地测试的端口转发:**

kubectl -n odoo-mcp port-forward svc/odoo-mcp 8787:8787

Access: http://127.0.0.1:8787/mcp


**特征:**

- 命名空间隔离
- MCP配置文件的ConfigMap
- Odoo凭据的秘密
- 部署方式:
  - 资源限制/请求
  - 存活/准备/启动探针
  - Pod抗亲和力,实现高可用性
  - 非根安全上下文
- 用于内部访问的ClusterIP服务
- 通过TLS进行外部访问的入口
- 环境管理的Kustomization

### 使用Helm跑步

要获得更灵活的部署,请在中使用Helm chart `helm/odoo-rust-mcp/`.

**安装:**

Add your values (see helm/odoo-rust-mcp/values.yaml for all options)

cat > my-values.yaml ", 0]] }


解码结果(形状):

{ "count": 18 }


执行操作/按钮(工作流):

{ "instance": "default", "model": "sale.order", "ids": [42], "action": "action_confirm" }


解码结果(形状):

{ "result": null, "executed_on": [42] }


执行任意方法:

{ "instance": "default", "model": "res.partner", "method": "name_get", "args": [[1, 2, 3]] }


解码结果(形状):

{ "result": [] }


模型元数据(字段/类型):

{ "instance": "default", "model": "sale.order" }


解码结果(形状):

{ "model": { "name": "sale.order", "description": "Sales Order", "fields": {} } }


生成报告(PDF格式为base64):

{ "instance": "default", "reportName": "sale.report_saleorder", "ids": [42] }


解码结果(形状):

{ "pdf_base64": "JVBERi0xLjQKJ......", "report_name": "sale.report_saleorder", "record_ids": [42] }


列出型号(可选过滤):

{ "instance": "default", "domain": [["transient", "=", false]], "limit": 50, "offset": 0 }


解码结果(形状):

{ "models": [ {"id": 2, "model": "ir.actions", "name": "Actions"}, {"id": 3, "model": "ir.model", "name": "Models"} ] }


检查访问权限:

{ "instance": "default", "model": "res.partner", "operation": "write", "ids": [1, 2, 3] }


解码结果(形状):

{ "has_access": true, "model": "res.partner", "operation": "write", "model_level": true, "record_level": true }


批量创建记录(最多100条):

{ "instance": "default", "model": "res.partner", "values_list": [ {"name": "Partner 1", "email": "p1@example.com"}, {"name": "Partner 2", "email": "p2@example.com"} ] }


解码结果(形状):

{ "ids": [101, 102], "created_count": 2, "success": true }


### Claude桌面配置示例

将MCP服务器命令设置为内置二进制文件:

**Odoo 19+(API密钥):**

{ "mcpServers": { "odoo-rust": { "command": "/absolute/path/to/odoo-rust-mcp/rust-mcp/target/release/rust-mcp", "args": ["--transport", "stdio"], "env": { "ODOO_INSTANCES": "{\"production\":{\"url\":\"https://mycompany.example.com\",\"db\":\"mycompany\",\"apiKey\":\"YOUR_API_KEY\"}}" } } } }


**Odoo\<19(用户名/密码):**

{ "mcpServers": { "odoo-rust": { "command": "/absolute/path/to/odoo-rust-mcp/rust-mcp/target/release/rust-mcp", "args": ["--transport", "stdio"], "env": { "ODOO_INSTANCES": "{\"legacy\":{\"url\":\"https://mycompany.example.com\",\"db\":\"mycompany\",\"version\":\"18\",\"username\":\"admin\",\"password\":\"your_password\"}}" } } } }


### 游标配置示例

游标支持 `stdio`, `SSE`,以及 `Streamable HTTP` 运输。请参阅游标文档: [`cursor.com/docs/context/mcp`](https://cursor.com/docs/context/mcp).

#### 光标(推荐):stdio

把这个放进去 `~/.cursor/mcp.json` (或 `${workspaceFolder}/.cursor/mcp.json`):

**重要:** 对于stdio传输,您必须使用 **绝对路径** 因为Cursor从不同的工作目录运行二进制文件。

**Odoo 19+(完整示例):**

{ "mcpServers": { "odoo-rust-mcp": { "type": "stdio", "command": "/absolute/path/to/odoo-rust-mcp/rust-mcp/target/release/rust-mcp", "args": ["--transport", "stdio"], "env": { "ODOO_URL": "http://localhost:8069", "ODOO_DB": "mydb", "ODOO_API_KEY": "YOUR_API_KEY", "MCP_TOOLS_JSON": "/absolute/path/to/odoo-rust-mcp/config/tools.json", "MCP_PROMPTS_JSON": "/absolute/path/to/odoo-rust-mcp/config/prompts.json", "MCP_SERVER_JSON": "/absolute/path/to/odoo-rust-mcp/config/server.json" } } } }


**Odoo\<19(完整示例):**

{ "mcpServers": { "odoo-rust-mcp": { "type": "stdio", "command": "/absolute/path/to/odoo-rust-mcp/rust-mcp/target/release/rust-mcp", "args": ["--transport", "stdio"], "env": { "ODOO_URL": "http://localhost:8069", "ODOO_DB": "mydb", "ODOO_VERSION": "18", "ODOO_USERNAME": "admin", "ODOO_PASSWORD": "admin", "MCP_TOOLS_JSON": "/absolute/path/to/odoo-rust-mcp/config/tools.json", "MCP_PROMPTS_JSON": "/absolute/path/to/odoo-rust-mcp/config/prompts.json", "MCP_SERVER_JSON": "/absolute/path/to/odoo-rust-mcp/config/server.json" } } } }


**使用.env文件:**

{ "mcpServers": { "odoo-rust-mcp": { "type": "stdio", "command": "/absolute/path/to/odoo-rust-mcp/rust-mcp/target/release/rust-mcp", "args": ["--transport", "stdio"], "envFile": "/absolute/path/to/odoo-rust-mcp/.env" } } }


注意:使用时 `envFile`,确保您 `.env` 包含的绝对路径 `MCP_TOOLS_JSON`, `MCP_PROMPTS_JSON`,以及 `MCP_SERVER_JSON`.

#### 游标:可流式HTTP(远程/多用户)

使用以下命令运行服务器 `--transport http` 并设置:

{ "mcpServers": { "odoo-rust-mcp": { "url": "http://127.0.0.1:8787/mcp" } } }


**使用承载令牌身份验证:**

如果你有 `MCP_AUTH_TOKEN` 在服务器上设置,使用标头中的令牌配置Cursor:

{ "mcpServers": { "odoo-rust-mcp": { "url": "http://127.0.0.1:8787/mcp", "headers": { "Authorization": "Bearer your-secure-random-token-here" } } } }


注意:使用生成安全令牌 `openssl rand -hex 32` 并设置 `MCP_AUTH_TOKEN` 在服务器上。

### 测试/冒烟

运行单元测试(无警告):

cd rust-mcp RUSTFLAGS='-Dwarnings' cargo test


还有一个小型WS-smoke客户端,可以验证端到端的MCP调用(连接→ 初始化→ 列出工具→ 调用一些工具):

cd rust-mcp cargo run --release --bin ws_smoke_client -- \ --url ws://127.0.0.1:8787 \ --instance default \ --model res.partner


示例输出(本地运行 `res.partner`):

tools/list: 11 tools

  • odoo_search
  • odoo_search_read
  • odoo_read
  • odoo_create
  • odoo_update
  • odoo_delete
  • odoo_execute
  • odoo_count
  • odoo_workflow_action
  • odoo_generate_report
  • odoo_get_model_metadata

odoo_count result: {"count":18} odoo_search_read count: 2 odoo_search_read sample records: [{"id":46,"name":"Kasir C"},{"id":45,"name":"Kasir B"}] prompts/list: odoo_common_models, odoo_domain_filters


### 安全

- 做 **不** 提交 `.env` 或包含API密钥/密码的任何文件。
- 更喜欢在Odoo中使用具有最小访问权限的专用机器人用户进行自动化。

## 发布过程

为了创建一个新版本,有 **2 需要更新版本的文件**:

1. `rust-mcp/Cargo.toml` -现场 `version`
1. `config-ui/package.json` -现场 `version`

### 快速发布(推荐)

使用已提供的帮助脚本:

Bump version, commit, push, dan create tag sekaligus

./scripts/release.sh 0.3.15


这个脚本将:

- 更新版本di `Cargo.toml` 丹 `package.json`
- 提交更改
- 一键遥控
- 创建并推送git标签(这将触发GitHub Actions发布工作流)

### 手动释放

如果需要手册:

1. Update version di 2 file

Edit rust-mcp/Cargo.toml: version = "0.3.15"

Edit config-ui/package.json: "version": "0.3.15"

2. Commit dan push

git add rust-mcp/Cargo.toml config-ui/package.json git commit -m "chore: bump version to 0.3.15" git push

3. Create dan push tag (akan trigger GitHub Actions)

git tag v0.3.15 git push origin v0.3.15


### GitHub 动作将自动:

- 为所有平台(Linux,macOS,Windows)构建二进制文件
- 构建Docker镜像
- 构建Debian软件包
- 使用 artifacts 创建 GitHub 版本
- 更新自制配方
- 更新APT存储库

监控进度:https://github.com/rachmataditiya/odoo-rust-mcp/actions

目录标签

目录标签

RustClaudeAI代理Odoo集成本地部署模型上下文协议Rust实现多实例支持JSON-RPC

支持客户端

Claude DesktopClaudeCursorWindsurf

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

token

工具数量(toolCount,工具数)

11

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明token部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP