OVHcloud Web Hosting API控制服务

通过MCP协议控制OVHcloud Web Hosting服务的API接口工具,提供读写操作、多模式认证和错误管理功能,适用于云主机自动化管理场景。

  • by GuiF008
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 GuiF008/mcp-ovh-webhosting

使用说明

MCP OVHcloud虚拟主机

MCP(模型上下文协议)服务器,用于通过OVH API驱动OVHcloud Web托管服务。

功能

  • 8个工具只读 查看您的Web托管服务
  • 6工具写 (默认禁用)管理您的服务
  • 2种运输方式 :stdio(光标、克劳德桌面)或HTTP(SHAI)
  • 3种身份验证模式 :承载传递,OAuth2服务帐户,AK/AS/CK
  • 错误管理 映射到标准MCP代码
  • 速率限制 客户端(Token Bucket)
  • 自动重试 与指数Backoff
  • 结构化日志 (皮诺)隐藏秘密
  • 审核日志记录 工具调用

先决条件

  • Node.js>=18.0.0
  • 具有至少一个web托管服务的OVHcloud帐户
  • 凭证API OVH(取决于所选的身份验证模式)

安装

# Cloner le repo
git clone <repository-url>
cd mcp-ovh-webhosting

# Installer les dépendances
npm install

# Copier la configuration exemple
cp env.example .env

# Compiler le TypeScript
npm run build

运输方式

STDIO模式(默认)

适用于本地MCP客户端,如Cursor或Claude Desktop。

# Démarrer en mode stdio
npm start
# ou
npm run dev

HTTP模式(pour SHAI)

对于HTTP客户端,如SHAI。暴露端点 /mcp 与SSE。

# Démarrer en mode HTTP
npm run start:http
# ou
MCP_TRANSPORT=http npm start
# ou
MCP_TRANSPORT=http MCP_HTTP_PORT=8080 npm run dev

服务器显示:

MCP Server is running on http://0.0.0.0:8080/mcp

Shai配置

1.在SDEV上启动MCP服务器

cd mcp-ovh-webhosting
MCP_TRANSPORT=http MCP_HTTP_PORT=<VOTRE_PORT_SDEV> npm run start:http

替换 <VOTRE_PORT_SDEV> 通过SDEV授权范围内的端口:

cat /etc/ovh.conf.d/sdev.conf | grep "SDEV_PORT_"

2.配置代理SHAI

创建文件 ~/.config/shai/agents/ovh_webhosting.config :

{
  "name": "ovh_webhosting",
  "description": "Agent pour piloter OVHcloud Web Hosting",
  "llm_provider": {
    "provider": "ovhcloud",
    "env_vars": {
      "OVH_API_KEY": "votre_AI_endpoints_token"
    },
    "model": "Qwen3-Coder-30B-A3B-Instruct",
    "tool_method": "FunctionCall"
  },
  "tools": {
    "builtin": ["*"],
    "builtin_excluded": [],
    "mcp": {
      "ovh": {
        "config": {
          "type": "http",
          "url": "http://gw2sdev-docker.ovh.net:<VOTRE_PORT_SDEV>/mcp",
          "bearer_token": "votre_token_api_ovh"
        },
        "enabled_tools": ["*"],
        "excluded_tools": []
      }
    }
  },
  "system_prompt": "{{CODER_BASE}}",
  "max_tokens": 1000000,
  "temperature": 0.0
}

3.沙兰瑟

shai agent ovh_webhosting

您将看到可用的MCP工具:

░ MCP 'ovh' connected (authenticated)
░ mcp(ovh): ovh.webhosting.listServices, ovh.webhosting.getService, ...

OVH认证模式

承载模式(通过)-推荐用于Shai

令牌通过MCP客户端(SHAI)传递,并按原样传输到OVH API。

# Configuration minimale pour mode HTTP + Bearer
MCP_TRANSPORT=http
OVH_AUTH_MODE=bearer  # Défaut en mode HTTP
OVH_API_REGION=eu

乐 bearer_token 在SHAI中配置,自动用于验证对OVH API的调用。

模式OAuth2服务帐户

用于无SHAI的内部自动化。

OVH_AUTH_MODE=oauth2
OVH_API_REGION=eu
OVH_OAUTH_CLIENT_ID=votre-client-id
OVH_OAUTH_CLIENT_SECRET=votre-client-secret
OVH_OAUTH_SCOPE=all

创建服务帐户

  1. 登录 控制台OVHcloud
  2. 我的账户 → 账户管理 → 服务账户
  3. 创建服务帐户
  4. 注意 Client ID 和 Client Secret

创建IAM策略

{
  "name": "webhosting-full-access",
  "description": "Accès complet aux services Web Hosting",
  "permissions": {
    "allow": [
      { "action": "webHosting:apiovh:get" },
      { "action": "webHosting:apiovh:create" },
      { "action": "webHosting:apiovh:update" },
      { "action": "webHosting:apiovh:delete" }
    ]
  },
  "resources": [
    { "urn": "urn:v1:eu:resource:webHosting:*" }
  ]
}

AK/AS/CK模式

用于授权或与现有应用程序一起使用。

OVH_AUTH_MODE=akasck
OVH_API_REGION=eu
OVH_APP_KEY=votre-application-key
OVH_APP_SECRET=votre-application-secret
OVH_CONSUMER_KEY=votre-consumer-key

Cursor/Claude桌面中的配置

对于本地MCP客户端,使用stdio模式:

光标(~/.cursor/mcp.json)

{
  "mcpServers": {
    "ovh-webhosting": {
      "command": "node",
      "args": ["/chemin/vers/mcp-ovh-webhosting/dist/server.js"],
      "env": {
        "OVH_AUTH_MODE": "oauth2",
        "OVH_API_REGION": "eu",
        "OVH_OAUTH_CLIENT_ID": "votre-client-id",
        "OVH_OAUTH_CLIENT_SECRET": "votre-client-secret"
      }
    }
  }
}

克劳德桌面(~/Library/Application Support/Claude/claude_desktop_config.json)

{
  "mcpServers": {
    "ovh-webhosting": {
      "command": "node",
      "args": ["/chemin/vers/mcp-ovh-webhosting/dist/server.js"],
      "env": {
        "OVH_AUTH_MODE": "oauth2",
        "OVH_API_REGION": "eu",
        "OVH_OAUTH_CLIENT_ID": "votre-client-id",
        "OVH_OAUTH_CLIENT_SECRET": "votre-client-secret"
      }
    }
  }
}

可用工具

只读(MVP)

工具 描述 端点OVH
ovh.webhosting.listServices 列出所有网络托管服务 GET /hosting/web/
ovh.webhosting.getService 服务的详细信息 GET /hosting/web/{serviceName}
ovh.webhosting.getActiveConfiguration 配置已激活 GET /hosting/web/{serviceName}/configuration
ovh.webhosting.listDatabases 数据库列表 GET /hosting/web/{serviceName}/database
ovh.webhosting.listFtpUsers FTP/SSH用户列表 GET /hosting/web/{serviceName}/user
ovh.webhosting.listModuleCatalog 模块目录 GET /hosting/web/moduleList
ovh.webhosting.getModuleCatalogItem 模块的详细信息 GET /hosting/web/moduleList/{id}
ovh.webhosting.listDatabaseDumps 列出BDD的转储 GET /hosting/web/{serviceName}/database/{name}/dump

写入(必要时启用_Write_TOOLS=true)

工具 描述 端点OVH
ovh.webhosting.attachDomain 附上域名 POST /hosting/web/{serviceName}/attachedDomain
ovh.webhosting.installSsl 安装SSL证书 POST /hosting/web/{serviceName}/ssl
ovh.webhosting.createDatabase 创建数据库 POST /hosting/web/{serviceName}/database
ovh.webhosting.createDatabaseDump 创建BDD转储 POST /hosting/web/{serviceName}/database/{name}/dump
ovh.webhosting.restoreDatabaseDump [破坏性] 重新启动卸载 POST /hosting/web/{serviceName}/database/{name}/dump/{id}/restore
ovh.webhosting.installModule 安装模块(WordPress等) POST /hosting/web/{serviceName}/module

环境变量

运输MCP

变量 描述 缺陷
MCP_TRANSPORT 运输方式: stdio 或 http stdio
MCP_HTTP_PORT 端口HTTP(模式HTTP) 8080
MCP_HTTP_PATH MCP终点化学 /mcp
MCP_HTTP_HOST 主机HTTP 0.0.0.0

OVH认证

变量 描述 缺陷
OVH_AUTH_MODE 身份验证模式: bearer, oauth2, akasck bearer (http)/ oauth2 (stdio)
OVH_API_REGION API区域: eu 或 ca eu
OVH_OAUTH_CLIENT_ID 客户端ID OAuth2(模式OAuth2) -
OVH_OAUTH_CLIENT_SECRET 客户端密码OAuth2(模式OAuth2) -
OVH_OAUTH_SCOPE 范围OAuth2 all
OVH_APP_KEY 应用程序密钥(模式akasck) -
OVH_APP_SECRET 应用程序密钥(模式akasck) -
OVH_CONSUMER_KEY 消费者密钥(akasck模式) -

配置HTTP OVH

变量 描述 缺陷
OVH_HTTP_TIMEOUT_MS HTTP超时(毫秒) 30000
OVH_MAX_RETRIES 最大重试次数 3

特性

变量 描述 缺陷
ENABLE_WRITE_TOOLS 启用书写工具 false
LOG_LEVEL 日志级别 info

端点HTTP

在HTTP模式下,服务器公开:

端点 方法 描述
/mcp GET SSE端点用于MCP连接
/mcp POST 消息MCP
/health GET 健康检查
/info 获取 有关服务器和工具的信息

发展

# Lancer les tests
npm test

# Tests en mode watch
npm run test:watch

# Linting
npm run lint

# Formatage
npm run format

# Build
npm run build

要验证的点

某些端点或设置需要在OVH控制台中进行验证:

  1. 端点创建FTP/SSH用户 :文档提到了一个不一致的端点。
  2. 参数 domain 在 attachDomain :标记为可选,但可能是必需的。
  3. IAM采取的行动 :写入的IAM操作的完整列表有待确定。
  4. OVH费率限制 :未记录,根据经验确定。

许可证

麻省理工学院

资源