ovh-api mcp
    
本地人 模型上下文协议(MCP) 允许LLM完全访问的服务器 OVH API(v1和v2)内置Rust,占用空间最小(~19 MB Docker镜像,~1.2 MiB RAM)。
提前释放 --专为 地方开发利用已应用安全强化(沙盒执行、规范验证、秘密保护),但服务器尚未进行大规模的战斗测试。不要把它暴露在公共互联网上。欢迎反馈和错误报告。
运作原理
服务器公开了两个MCP工具:
| 工具 | 说明 |
|---|---|
search | 使用JavaScript探索OVH OpenAPI规范——查找端点、检查模式、读取参数 |
execute | 使用JavaScript调用任何OVH API端点-身份验证是透明处理的 |
LLM编写在内部运行的JavaScript 沙盒QuickJS引擎 具有资源限制(内存、CPU超时、堆栈大小)。每个API调用在执行之前都会根据加载的OpenAPI规范进行验证。
服务器支持两种传输模式:
- 超文本传输协议 (流式HTTP)-用于基于web的客户端和Docker部署
- 标准 --用于与Claude Desktop、Cursor和MCP检查器直接集成
OVH凭据在启动时是可选的:即使没有API密钥,服务器也会启动并公开其工具。在没有凭据的情况下调用工具时,会返回一个明确的错误。
快速启动
带stdio(克劳德桌面/光标)
添加到MCP客户端配置中:
{
"mcpServers": {
"ovh-api": {
"command": "ovh-api-mcp",
"args": ["--transport", "stdio"],
"env": {
"OVH_APPLICATION_KEY": "your_app_key",
"OVH_APPLICATION_SECRET": "your_app_secret",
"OVH_CONSUMER_KEY": "your_consumer_key"
}
}
}
}使用Docker
docker run -d --name ovh-api \
-e OVH_APPLICATION_KEY=your_app_key \
-e OVH_APPLICATION_SECRET=your_app_secret \
-e OVH_CONSUMER_KEY=your_consumer_key \
-p 3104:3104 \
ghcr.io/davidlandais/ovh-api-mcp:latest来源
cargo install --git https://github.com/davidlandais/ovh-api-mcp
export OVH_APPLICATION_KEY=your_app_key
export OVH_APPLICATION_SECRET=your_app_secret
export OVH_CONSUMER_KEY=your_consumer_key
ovh-api-mcp --port 3104预构建二进制文件
下载自 --适用于macOS(x86_64,aarch64)和Linux(x86_14 musl)。
Claude代码配置(HTTP模式)
{
"mcpServers": {
"ovh-api": {
"type": "http",
"url": "http://localhost:3104/mcp",
"headers": {
"Authorization": "Bearer local"
}
}
}
}这 Authorization 需要使用header来绕过Claude Code的OAuth发现。看 克劳德代码#2831.OVH证书
你需要三个值:a 应用键一 应用程序机密和a 消费者密钥.
转到您所在地区的令牌创建页面,使用您的OVH帐户登录,设置权限和有效性,您将一次获得所有三个密钥:
| 区域 | URL |
|---|---|
| 欧洲 | https://auth.eu.ovhcloud.com/api/createToken |
| 加拿大 | https://auth.ca.ovhcloud.com/api/createToken |
| 我们 | https://auth.us.ovhcloud.com/api/createToken |
对于API的完全访问,请设置所有四种方法(GET, POST, PUT, DELETE)与路径 /*.
OAuth2身份验证(服务帐户)
作为API密钥的替代方案,您可以使用具有OAuth2客户端凭据的OVH服务帐户:
| 变量 | 描述 |
|---|---|
OVH_CLIENT_ID | 服务帐户ID |
OVH_CLIENT_SECRET | 服务帐户机密 |
通过OVH API创建服务帐户(POST /me/api/oauth2/client 随着 flow: CLIENT_CREDENTIALS).然后,您必须创建IAM策略(POST /v2/iam/policy)向服务帐户授予API权限。请参阅 OVHcloud文档 了解详情。
服务器从环境变量中自动检测身份验证模式。不要同时设置API密钥和OAuth2凭据。
CLI选项
Options:
--transport Transport mode: http, stdio [env: OVH_TRANSPORT] [default: http]
--port
Port to listen on [env: PORT] [default: 3104]
--host Host to bind to [default: 127.0.0.1]
--endpoint OVH API endpoint: eu, ca, us [env: OVH_ENDPOINT] [default: eu]
--app-key OVH application key [env: OVH_APPLICATION_KEY]
--app-secret OVH application secret [env: OVH_APPLICATION_SECRET]
--consumer-key OVH consumer key [env: OVH_CONSUMER_KEY]
--client-id OVH OAuth2 client ID [env: OVH_CLIENT_ID]
--client-secret OVH OAuth2 client secret [env: OVH_CLIENT_SECRET]
--services Services to load, comma-separated or "*" [env: OVH_SERVICES] [default: *]
--cache-dir
Directory to cache the merged spec [env: OVH_CACHE_DIR]
--cache-ttl Cache TTL in seconds, 0 to disable [env: OVH_CACHE_TTL] [default: 86400]
--no-cache Disable spec caching entirely
--max-code-size Maximum code input size [env: OVH_MAX_CODE_SIZE] [default: 1048576]使用示例
连接后,LLM可以使用以下工具:
搜索DNS终结点:
// search tool
(spec) => {
const results = [];
for (const [path, methods] of Object.entries(spec.paths)) {
if (path.includes("/domain/zone")) {
for (const [method, op] of Object.entries(methods)) {
results.push({ method: method.toUpperCase(), path, summary: op.summary });
}
}
}
return results;
}列出您的域区域:
// execute tool
async () => await ovh.request({ method: "GET", path: "/v1/domain/zone" })获取域的DNS记录:
// execute tool
async () => {
const records = await ovh.request({
method: "GET",
path: "/v1/domain/zone/example.com/record"
});
const details = [];
for (const id of records.slice(0, 10)) {
details.push(await ovh.request({
method: "GET",
path: `/v1/domain/zone/example.com/record/${id}`
}));
}
return details;
}安全
- 沙盒执行 --JavaScript在QuickJS中运行,具有内存限制(64 MiB)、堆栈限制(1 MiB)和执行超时(搜索10秒,执行30秒)
- 规范验证的API调用 --每一个
ovh.request()调用与加载的OpenAPI规范相匹配;拒绝未知端点或错误的HTTP方法 - 路径注射预防 -API路径包含
?,#,或..被拒绝 - 秘密保护 —
app_secret和consumer_key使用以下方式存储secrecy(跌落时归零) - 无HTTP重定向 --防止凭据泄漏到第三方域
- 非根容器 --Docker镜像以无特权用户身份运行
建筑
src/
main.rs CLI, logging, transport selection (HTTP/stdio), graceful shutdown
tools.rs MCP tool definitions (search, execute) via rmcp macros
sandbox.rs QuickJS sandboxed JS execution with resource limits
auth.rs OVH API client with signature, clock sync, request handling
spec.rs OpenAPI spec fetching, caching, merging, and path validation
types.rs Input types for MCP tool parameters许可证
麻省理工学院 -大卫·兰代斯
