多供应商MCP服务器

一个干净、可扩展的模型上下文协议(MCP)服务器,通过模拟适配器架构为多个云供应商提供供应商无关的工具。

  • by mrunaliKale31
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 MRUK31/mcp-multi-provider-demo

使用说明

多提供商MCP服务器(Contabo&Hetzner)

干净、可扩展 模型上下文协议(MCP) 暴露的服务器 使用模拟适配器架构为多个云供应商提供与提供商无关的工具。

该项目旨在 面试中强烈的第一印象 通过展示 清晰的架构、协议理解和干净的代码组织——无需 真实的云证书。


为什么是这个项目?

面试官经常寻找:

  • 系统设计清晰
  • 了解协议(不仅仅是API)
  • 关注点分离
  • 可扩展性和可维护性

此存储库侧重于 如何设计多提供商MCP服务器,而不是 调用真正的供应商API。


架构概述

Claude Desktop
      │
      │  (Model Context Protocol)
      ▼
┌────────────────────────────┐
│  MCP Server (FastMCP)      │
│                            │
│  ├─ Contabo Adapter        │
│  │   ├─ 15 MCP tools       │
│  │   └─ Mock logic         │
│                            │
│  ├─ Hetzner Adapter        │
│  │   ├─ 15 MCP tools       │
│  │   └─ Mock logic         │
│                            │
│  └─ Provider-agnostic Core │
└────────────────────────────┘

每个云提供商都实现为 独立适配器模块. 模拟逻辑稍后可以用真正的SDK调用替换 无需更改MCP客户端或Claude配置.


特性

提供商

  • 会计 --15工具
  • 赫茨纳 --15工具

工具类别

  • 计算(VM/服务器生命周期)
  • 存储(卷)
  • 网络
  • 监控
  • 账单(模拟)
  • 安全
  • 健康和元数据

👉 总计:30个MCP工具


项目结构

mcp-multi-provider-demo/
├── server/
│   ├── main.py
│   └── providers/
│       ├── contabo.py
│       └── hetzner.py
├── .gitignore
└── README.md

运行服务器

python server/main.py

服务器在本地运行,并通过MCP协议公开所有注册的工具。


Claude桌面集成

克劳德连接 将MCP服务器作为子进程启动,而不是通过HTTP。

配置示例:

{
  "mcpServers": {
    "multi-provider-demo": {
      "command": "/path/to/.venv/bin/python",
      "args": ["/path/to/server/main.py"]
    }
  }
}

连接后,Claude可以直接调用以下工具:

  • contabo_list_vms
  • hetzner_get_server_metrics
  • contabo_health_check

为什么要模拟实现?

  • 无供应商锁定
  • 无需云凭据
  • 可预测和可测试的响应

重点在于 设计正确性和可扩展性,而不是API可用性。


扩展到真正的API

要集成真正的云提供商:

  1. 替换提供程序模块内的模拟逻辑
  2. 调用官方SDK或REST API
  3. 保持MCP工具签名不变

Claude或MCP客户端不需要任何更改。


关键要点

  • 清晰地分离关注点
  • 基于适配器的多提供商设计
  • 协议优先架构
  • 易于扩展

作者

卡莱夫人
作为以协议为中心的MCP架构演示而构建。