SSH协议Odoo.sh开发服务器

基于SSH协议的Odoo.sh开发服务器,提供Git工作流工具和AI辅助开发功能,适用于Odoo自定义应用开发。

  • by DalahmasDev
  • JavaScript
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 DalahmasDev/odoo-sh-mcp-server

使用说明

Odoo.sh MCP服务器

🚀 基于SSH的Odoo模型上下文协议服务器-使用Git工作流工具在人工智能的帮助下构建自定义应用程序

✨ 特性

核心操作(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等)

步骤

  1. 克隆或下载此存储库

  2. 安装依赖项:

    npm install
    
  3. 设置SSH访问:

    • 将SSH公钥添加到Odoo中(设置→ 合作者→ SSH密钥)
    • 从Odoo获取您的构建ID和主机名(格式: BUILD_ID@project-name.dev.odoo.com)
    • 将私钥保存到安全位置
  4. 构建项目:

    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代理可以:

  1. 创建目录结构: my_custom_app/, my_custom_app/models/等等。
  2. 创建 __init__.py, __manifest__.py 文件
  3. 使用Python代码创建模型文件
  4. 创建XML视图文件
  5. 使用以下方式暂存所有文件 git add
  6. 用描述性信息提交
  7. 按下以触发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命令性能优化

贡献

欢迎投稿!拜托:

  1. 遵循现有代码样式(使用 npm run format)
  2. 为新功能添加测试
  3. 更新文档(README、Runbook、DECISIONS.md)
  4. 在故障诊断与排除.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