Odoo.sh MCP服务器
🚀 基于SSH的Odoo模型上下文协议服务器-使用Git工作流工具在人工智能的帮助下构建自定义应用程序
 ](https://nodejs.org/)  ](https://github.com/DalahmasDev/odoo-sh-mcp-server/issues) ](https://github.com/DalahmasDev/odoo-sh-mcp-server) 
✨ 特性
核心操作(v1.0)
- 🔐 基于SSH的访问:通过SSH密钥进行安全连接(不需要API令牌)
- 🌿 转移操作:查看分支,获取当前分支,提交历史记录
- 🏗️ 构建管理:触发器构建、监控状态、查看日志
- 💾 数据库访问:列出PostgreSQL数据库和大小
- 💻 系统监控:主机名、正常运行时间、磁盘、内存、版本
- 🐍 奥多壳牌:在Odoo环境中执行Python代码
🆕 Git工作流和应用程序开发(v1.0中的新功能)
- 📁 文件管理:使用base64编码创建、读取和更新文件
- 📂 目录操作:为模块创建目录结构
- 📖 Git状态:检查已修改、暂存和未跟踪的文件
- ➕ 添加文件:提交阶段文件(单个或多个)
- ✅ 提交:使用自定义消息提交更改
- 🚀 Git推送:将提交推送到远程Odoo仓库
- 🌿 Git结账:切换分支或创建新的特征分支
- 🔄 Git拉取:从远程同步更改
- 🛠️ 人工智能辅助开发:让AI代理构建完整的Odoo模块
目录
快速开始
# 1. Install dependencies
npm install
# 2. Configure environment
cp .env.example .env
# Edit .env and add your ODOO_SH_API_TOKEN
# 3. Build
npm run build
# 4. Add to your MCP client config (e.g., Claude Desktop)
# See Configuration section below安装
先决条件
- Node.js >= 18.0.0
- npm (附带Node.js)
- Odoo账户 具有SSH访问权限
- OpenSSH 已安装客户端(包含在Windows 10+、macOS、Linux中)
- MCP客户端 (Warp、Claude Desktop、Cline、Continue等)
步骤
- 克隆或下载此存储库
- 安装依赖项:
npm install- 设置SSH访问:
- 将SSH公钥添加到Odoo中(设置→ 合作者→ SSH密钥) - 从Odoo获取您的构建ID和主机名(格式: BUILD_ID@project-name.dev.odoo.com) - 将私钥保存到安全位置
- 构建项目:
npm run build配置
环境变量
创建一个 .env 文件或设置环境变量:
ODOO_SH_SSH_HOST=project-name.dev.odoo.com
ODOO_SH_SSH_USER=BUILD_ID # e.g., 25357858
ODOO_SH_SSH_KEY_PATH=/path/to/ssh/key # Absolute path to private key
ODOO_SH_SSH_PORT=22 # Optional: default 22
ODOO_SH_SSH_PASSPHRASE= # Optional: if key has passphrase
SSH_TIMEOUT=30000 # Optional: milliseconds
LOG_LEVEL=info # Optional: debug, info, warn, error🔐 安全提示:永远不要提交您的私人SSH密钥。使用绝对路径和安全权限(chmod 600)。
MCP客户端配置
克劳德桌面
编辑 claude_desktop_config.json:
{
"mcpServers": {
"odoo-sh": {
"command": "node",
"args": [
"/absolute/path/to/Odoo.sh MCP/dist/index.js"
],
"env": {
"ODOO_SH_SSH_HOST": "project-name.dev.odoo.com",
"ODOO_SH_SSH_USER": "BUILD_ID",
"ODOO_SH_SSH_KEY_PATH": "/absolute/path/to/ssh/key"
}
}
}
}Cline(VSCode)
添加到VSCode设置:
{
"cline.mcpServers": {
"odoo-sh": {
"command": "node",
"args": ["/absolute/path/to/Odoo.sh MCP/dist/index.js"],
"env": {
"ODOO_SH_SSH_HOST": "${env:ODOO_SH_SSH_HOST}",
"ODOO_SH_SSH_USER": "${env:ODOO_SH_SSH_USER}",
"ODOO_SH_SSH_KEY_PATH": "${env:ODOO_SH_SSH_KEY_PATH}"
}
}
}
}备注:使用绝对路径 dist/index.js.
用法
配置后,您的AI助手可以直接使用Odoo工具:
交互示例
基本操作
检查项目信息:
"Show me my Odoo.sh project information"检查构建状态:
"What's the status of recent builds?"查看构建日志:
"Show me the recent Odoo logs"构建自定义应用程序(新)
创建新的Odoo模块:
"Create a new custom Odoo module called 'my_custom_app' with the basic structure"AI代理可以:
- 创建目录结构:
my_custom_app/,my_custom_app/models/等等。 - 创建
__init__.py,__manifest__.py文件 - 使用Python代码创建模型文件
- 创建XML视图文件
- 使用以下方式暂存所有文件
git add - 用描述性信息提交
- 按下以触发Odoo.sh构建
修改现有模块:
"Add a new field 'phone' to the Partner model in my_custom_app"完整的开发工作流程示例:
"I want to build a customer feedback module:
1. Create module structure for 'customer_feedback'
2. Add a Feedback model with fields: customer_id, rating, comment, date
3. Create list and form views
4. Add menu items
5. Commit and push to main branch"可用工具
该服务器通过SSH为Odoo操作提供了19个工具,包括构建自定义应用程序的完整Git工作流支持:
项目和分支机构
get_project_info:获取包括分支列表在内的项目信息
- 返回:项目名称、存储库、分支列表 - 💡 使用此功能列出分支 (建议 list_branches)
get_current_branch:获取当前已签出的分支
- 返回:当前分支名称
list_branches:列出具有提交信息的分支
- 返回:带有上次提交哈希和消息的分支名称 - ⚠️ 已知问题:可能无法在某些MCP客户端中工作(使用 get_project_info 相反)
建筑
get_build_history:获取分支的提交/构建历史记录
- 参数: branch (例如“main”), limit (默认值:10) - 返回:提交哈希、作者、日期、消息
trigger_build:通过创建空提交触发新构建
- 参数: branch - 返回:git推送输出
数据库
list_databases:列出所有PostgreSQL数据库
- 返回:数据库名称和大小
原木和贝壳
get_logs:从服务器获取Odoo日志
- 参数: log_type (“odoo”、“install”、“pip”), lines (默认值:100) - 返回:带有时间戳的日志条目
execute_odoo_shell:在Odoo shell中执行Python代码
- 参数: python_code - 返回:shell输出
系统
get_system_info:获取系统信息
- 返回:主机名、正常运行时间、磁盘使用率、内存、Python版本、Odoo版本
Git工作流和文件管理(新增-用于构建自定义应用程序)
git_status:获取显示已修改、暂存和未跟踪文件的git状态
- 返回:git状态输出
write_file:创建或更新具有给定内容的文件
- 参数: filePath (相对于 ~/src/user), content - 返回:成功消息 - 💡 使用base64编码 通过SSH安全传输文件内容
read_file:读取文件内容
- 参数: filePath (相对于 ~/src/user) - 返回:文件内容
list_files:列出路径中的文件和目录
- 参数: dirPath (可选,默认值: .,相对于 ~/src/user) - 退货: ls -la 输出
create_directory:创建目录(包括父目录)
- 参数: dirPath (相对于 ~/src/user) - 返回:成功消息
git_add:提交阶段文件
- 参数: files (文件路径数组或 . 为所有人) - 返回:git add输出
git_commit:提交分阶段更改
- 参数: message - 返回:git提交输出
git_push:将提交推送到远程存储库
- 参数: branch (可选,默认为当前分支) - 返回:git推送输出
git_checkout:切换到分支或创建新分支
- 参数: branch, createNew (可选,默认值:false) - 返回:git checkout输出
git_pull:从远程存储库中提取更改
- 返回:git pull输出
提示词
常见任务的指导工作流程:
check_build_status
项目的全面构建状态检查:
- 列出所有分支
- 显示最近的版本
- 突出显示故障
- 显示构建趋势
用法: check_build_status 随着 project_id
deploy_workflow
分步部署指南:
- 检查当前分支状态
- 验证待处理的构建
- 验证数据库备份
- 指导部署
- 提供验证步骤
用法: deploy_workflow 随着 project_id 和 environment
发展
脚本
# Build TypeScript
npm run build
# Development mode (auto-rebuild)
npm run dev
# Run tests
npm test
# Watch tests
npm test:watch
# Lint code
npm run lint
# Format code
npm run format项目结构
odoo-mcp-server/
├── src/
│ ├── index.ts # MCP server implementation
│ └── odoo-client.ts # Odoo.sh API client
├── tests/ # Test files (to be added)
├── docs/
│ ├── Runbook.md # Setup and usage guide
│ ├── DECISIONS.md # Architectural decisions
│ ├── Troubleshooting.md # Known issues
│ └── Docs-Index.md # External references
├── dist/ # Compiled JavaScript (generated)
├── package.json
├── tsconfig.json
└── .env.example测试
测试位于 tests/ 目录。运行方式:
npm test故障排除
常见问题
1.SSH连接失败
Error: SSH connection error解决方案:
- 验证SSH密钥路径是否正确且绝对
- 检查密钥权限:
chmod 600 /path/to/key(Unix)或icacls(Windows) - 验证主机名格式:
BUILD_ID@project-name.dev.odoo.com - 手动测试:
ssh -i /path/to/key BUILD_ID@host
2.list_branches工具在Warp中不工作
Empty response from list_branches解决方案:使用 get_project_info 相反,它返回分支列表,并在所有MCP客户端中可靠地工作。
3.防病毒阻止SSH命令(Windows)
Bitdefender: Malicious command line detected解决方案:在防病毒设置中将SSH命令或项目目录列入白名单。
4.服务器未出现
- 验证MCP客户端配置中的JSON语法
- 检查绝对路径
dist/index.js - 验证是否设置了环境变量
- 重新启动MCP客户端
5.未找到模块
Error: Cannot find module '@modelcontextprotocol/sdk/server/index.js'解决方案:运行 npm install 和 npm run build
看 docs/Troubleshooting.md 了解更多问题和解决方案。
建筑
技术栈
- 运行时:Node.js>=18.0.0
- 语言:TypeScript 5.3
- 协议:模型上下文协议(MCP)
- SSH客户端:OpenSSH(子进程)
- 验证:佐德
- 运输标准: stdio
设计决策
关键架构决策记录在 docs/DECISIONS.md 和 docs/SSH-MIGRATION.md:
- 十二月-20251107T160000Z-ssh-over-api:基于SSH的访问,而不是REST API
- 为什么选择OpenSSH子进程而不是Node.js ssh2库
- 如何解决Windows%逃逸问题
- Git命令性能优化
贡献
欢迎投稿!拜托:
- 遵循现有代码样式(使用
npm run format) - 为新功能添加测试
- 更新文档(README、Runbook、DECISIONS.md)
- 在故障诊断与排除.md中记录问题
许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
链接
- Odoo文件: https://www.odoo.com/documentation/17.0/administration/odoo_sh.html
- MCP规范: https://spec.modelcontextprotocol.io/
- MCP TypeScript SDK: https://github.com/modelcontextprotocol/typescript-sdk
______________________________________________________________________
由维护:Odoo MCP服务器贡献者\ 版本: 0.1.0
