使用说明
开放代码浏览器mcp+Odoo mcp
该项目结合了:
- 开源代码 带有Playwright浏览器MCP服务器和录制API
- Odoo MCP (模块+Python MCP服务器)用于具有细粒度权限的完全CRUD访问
里面有什么
- 开源代码 --AI编码代理,在端口上服务
4096 - 浏览器MCP服务器 --基于Playwright的浏览器自动化,具有反机器人欺骗、会话记录和沙盒网络访问功能
- HTTP API --在端口上列出、下载或删除会话记录
80 - SFTP访问 --通过端口上的SSH浏览容器文件系统
22 - Xvfb --虚拟显示,使浏览器在容器内无头运行
- Odoo MCP模块 --具有CRUD和每个模型权限的JSON端点
- Odoo MCP服务器 --调用Odoo模块端点的Python MCP服务器
需求
- 码头工人
opencode.json--您的opencode配置文件mcp_server.py--浏览器MCP服务器(包括在内)- 具有插件路径访问权限的Odoo实例
入门(开源+浏览器MCP)
1.建造
docker build -t opencode-browser-mcp .
2.跑步
docker run -d \
-p 4096:4096 \
-p 80:80 \
-p 22:22 \
--name opencode \
opencode-browser-mcp
3.连接到opencode
打开 http://localhost:4096 在您的浏览器中。
Odoo MCP(模块+Python服务器)
1) 安装Odoo模块
- 复制
odoo_mcp/odoo_module/odoo_mcp_module进入您的Odoo插件路径。 - 更新您的应用程序列表并安装 MCP读取API.
- (推荐)在Odoo中设置令牌:
- 设置->技术->参数->系统参数
- 密钥:
mcp.token - 价值:
<your-secret>
- 在Odoo中创建每个模型的MCP权限:
- 设置->MCP->访问
- 启用要允许的模型和操作
- 默认情况下,未列出的任何型号均为拒绝
- 为用户创建一个应由MCP使用的Odoo API密钥
系统参数(可选):
mcp.require_auth(默认1)每次请求都需要登录+api_keymcp.default_deny(默认1)拒绝MCP访问中未列出的任何模型
2) 运行Python MCP服务器(本地)
cd odoo_python_mcp_server
python -m pip install -r requirements.txt
set ODOO_BASE_URL=http://localhost:8069
set ODOO_DB=your_db_name
set ODOO_MCP_TOKEN=your-secret
set ODOO_LOGIN=your_odoo_login
set ODOO_API_KEY=your_odoo_api_key
python server.py
3) 在Docker中运行Odoo MCP服务器
Docker镜像已经包含 odoo_python_mcp_server 并从env-vars读取其设置。
启动容器并在运行时将Odoo凭据作为机密传递:
docker run -d \
-p 4096:4096 \
-p 80:80 \
-p 22:22 \
-e ODOO_BASE_URL=http://odoo:8069 \
-e ODOO_DB=your_db_name \
-e ODOO_MCP_TOKEN=your-secret \
-e ODOO_LOGIN=your_odoo_login \
-e ODOO_API_KEY=your_odoo_api_key \
--name opencode \
opencode-browser-mcp
## SFTP access
Connect with any SFTP client (FileZilla, WinSCP, etc.):
| Field | Value |
|----------|-------------|
| Protocol | SFTP |
| Host | `localhost` |
| Port | `22` |
| User | `root` |
| Password | `rootpass` |
> **Change the default password** before exposing this container publicly. Edit the `echo "root:rootpass" | chpasswd` line in the Dockerfile.
## Recording API
Browser sessions are automatically recorded as `.webm` files and stored in `/app/recordings` inside the container.
### List all recordings
获取http://localhost/recordings
Returns a list of all recording files, sorted newest first:
```json
{
"recordings": [
{ "filename": "session-abc123.webm", "size_bytes": 2345678 },
{ "filename": "session-def456.webm", "size_bytes": 1234567 }
],
"count": 2
}
下载录音
GET http://localhost/recording/download/{filename}
返回编码为base64的命名文件:
{
"filename": "session-abc123.webm",
"size_bytes": 2345678,
"base64": "AAAA..."
}
在本地保存:
curl http://localhost/recording/download/session-abc123.webm | python3 -c "
import sys, json, base64
data = json.load(sys.stdin)
open(data['filename'], 'wb').write(base64.b64decode(data['base64']))
print('Saved:', data['filename'])
"
或者,要一次性下载最新录音,请先列出,然后下载:
FILENAME=$(curl -s http://localhost/recordings | python3 -c "import sys,json; print(json.load(sys.stdin)['recordings'][0]['filename'])")
curl http://localhost/recording/download/$FILENAME | python3 -c "
import sys, json, base64
data = json.load(sys.stdin)
open(data['filename'], 'wb').write(base64.b64decode(data['base64']))
print('Saved:', data['filename'])
"
删除所有录音
DELETE http://localhost/recordings
{
"deleted": ["session-abc123.webm", "session-def456.webm"],
"count": 2
}
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
MCP_HEADLESS |
false |
在无头模式下运行浏览器 |
MCP_VIDEO_DIR |
/app/recordings |
保存记录的目录 |
MCP_HTTP_PORT |
80 |
录制HTTP API的端口 |
ODOO_BASE_URL |
http://odoo:8069 |
Odoo服务器的基本URL |
ODOO_DB |
your_db_name |
Odoo数据库名称 |
ODOO_MCP_TOKEN |
your-secret |
共享MCP令牌(可选) |
ODOO_LOGIN |
your_odoo_login |
用于API访问的Odoo登录 |
ODOO_API_KEY |
your_odoo_api_key |
Odoo API密钥 |
文件
| 文件 | 描述 |
|---|---|
Dockerfile |
容器定义 |
mcp_server.py |
带HTTP API的浏览器MCP服务器 |
opencode.json |
开放代码配置(您提供) |
odoo_python_mcp_server |
Odoo MCP Python服务器 |
备注
- 剧作家将会议记录为
.webm文件(CDP限制)。录制内容按原样保存,无需转码。 - 浏览器阻止以下请求
localhost,127.x,192.168.x,10.x,以及file://URL作为沙盒策略。 - 如果在公共路径上找到,则使用真正的Chrome来减少机器人检测。否则,回到剧作家捆绑的Chromium。
- Odoo模块尊重正常的记录规则和访问权限。
- 如果
mcp.token设置后,请求必须包含令牌。 - Python MCP服务器自动转发令牌/登录/api_key。