MCP Server Unified Deployment

MCP Server Unified Deployment

MCP 服务器统一部署开源项目

BigUncle

开发者工具
访问服务器

README

MCP服务器统一部署工具

English | 中文

这是一个用于统一部署和管理MCP(Model Context Protocol)服务器的工具。该项目将以不同形式(uvx、npx等)部署的MCP服务器统一转换为标准化的SSE(Server-Sent Events)部署方式,方便不同工具的统一调用。

特性

  • 统一管理:通过单一界面管理多个MCP服务器
  • SSE标准化:将各种MCP服务器实现转换为SSE协议
  • 跨平台:支持Windows、macOS和Linux
  • 灵活配置:轻松配置不同类型和环境的服务器
  • 进程管理:启动、停止、重启和检查MCP服务器状态

前提条件

  • Python 3.12+
  • Git(用于源代码类型服务器)
  • Node.js和npm(用于基于Node.js的服务器)
  • uv(用于依赖管理)
  • pipx(用于安装mcp-proxy)
  • uvx(用于基于uvx的服务器)

安装

  1. 克隆此仓库:
git clone https://github.com/BigUncle/MCP-Server-Unified-Deployment.git
cd MCP-Server-Unified-Deployment
  1. 使用uv设置虚拟环境并安装所需的Python依赖:
# 如果没有安装uv,先安装uv
pip install uv

# 创建虚拟环境
uv venv

# 使用uv安装依赖
uv pip install -r requirements.txt

# 激活虚拟环境(Windows)
.venv\Scripts\activate
# 或激活虚拟环境(Linux/MacOS)
# source .venv/bin/activate

或者,您可以使用我们的设置脚本:

python scripts/setup_env.py
  1. 使用pipx安装mcp-proxy(推荐):
# 如果没有安装pipx,先安装pipx
pip install pipx
pipx ensurepath

# 安装mcp-proxy
pipx install mcp-proxy
  1. 创建配置文件:
cp config/mcp_servers.example.json config/mcp_servers.json
  1. 编辑配置文件以满足您的需求。

配置

配置文件(config/mcp_servers.json)包含您想要管理的所有MCP服务器的设置。每个服务器条目包括:

{
  "name": "server-name",         // 服务器的唯一名称
  "enabled": true,              // 服务器是否启用
  "type": "uvx",                // 服务器类型(uvx、node、source_code等)
  "sse_host": "localhost",      // SSE端点的主机
  "sse_port": 23001,            // SSE端点的端口
  "allow_origin": "*",          // SSE端点的CORS设置
  "install_commands": [          // 安装服务器的命令
    "uvx -v mcp-server-fetch"
  ],
  "sse_start_command": "mcp-proxy {start_command} --sse-host={sse_host} --sse-port={sse_port} --allow-origin='{allow_origin}' ",  // SSE模式的命令模板
  "start_command": "uvx mcp-server-fetch",  // 原始启动命令
  "env": {}                     // 服务器的环境变量
}

服务器类型

  • uvx:使用uvx部署的服务器
  • node:基于Node.js的服务器
  • source_code:需要从源代码构建的服务器

使用方法

基本命令

# 启动所有已启用的服务器
python scripts/manage_mcp.py start

# 启动特定服务器
python scripts/manage_mcp.py start <server-name>

# 停止所有服务器
python scripts/manage_mcp.py stop

# 停止特定服务器
python scripts/manage_mcp.py stop <server-name>

# 重启特定服务器
python scripts/manage_mcp.py restart <server-name>

# 检查所有服务器的状态
python scripts/manage_mcp.py status

示例

启动fetch服务器:

python scripts/manage_mcp.py start fetch

目录结构

.
├── config/                  # 配置文件
│   └── mcp_servers.json     # 服务器配置
├── logs/                    # 服务器日志
├── pids/                    # 进程ID文件
|—— docker-dev/              # docker开发环境
│   ├── docker-compose.yml   # docker-compose.yml
│   └── .devcontainer        # .devcontainer 目录
│       └─ devcontainer.json # devcontainer.json
├── dockerfile/              # dockerfile
├── scripts/                 # 管理脚本
│   ├── manage_mcp.py        # 主管理脚本
│   └── mcp_manager/         # 管理模块
└── mcp-servers/             # 源代码服务器(如果有)

Docker开发环境

概述

本项目支持基于Docker的开发环境,使在不同平台上设置和运行MCP服务器变得简单且一致。

前提条件

  • 系统上已安装Docker和Docker Compose
  • VS Code及Remote - Containers扩展(可选,用于DevContainer支持)

Docker环境入门

  1. 导航到项目目录:
cd MCP-Server-Unified-Deployment
  1. 启动Docker开发环境:
# 一定要在`docker-dev`父目录(`MCP-Server-Unified-Deployment`)目录下执行,否则会报错
docker compose -f docker-dev/docker-compose.yml up -d
  1. 连接到运行中的容器:
docker exec -it  docker-dev-mcpdev-1 zsh

Docker配置关键概念

构建上下文和路径引用

在本项目中使用Docker时,理解以下几个关键概念非常重要:

  1. Docker构建上下文:构建上下文决定了Dockerfile中的COPY指令可以访问哪些文件。

    • 在我们的配置中,构建上下文设置为项目根目录(docker-compose.yml中的context: ..)。
    • 这允许Dockerfile直接访问requirements.txt等文件。
  2. Dockerfile路径引用:Dockerfile中的所有路径都是相对于构建上下文的。

    • 示例:COPY requirements.txt requirements.txt从项目根目录复制文件。
  3. Docker Compose卷挂载:卷挂载中的路径是相对于docker-compose.yml文件位置的。

    • 我们的配置使用- ../:/workspace:cached将整个项目挂载到容器中。
  4. DevContainer配置:对于VS Code用户,DevContainer配置中的路径引用是相对于devcontainer.json文件的。

    • 配置使用"dockerComposeFile": "../docker-compose.yml"来引用compose文件。

Docker路径问题排查

如果在使用Docker时遇到路径相关问题:

  1. 验证docker-compose.yml中的构建上下文设置是否正确
  2. 确保Dockerfile中的文件路径是相对于构建上下文的
  3. 检查docker-compose.yml中的卷挂载是否使用了正确的相对路径
  4. 对于DevContainer用户,确认devcontainer.json中的路径引用是否正确

贡献

欢迎贡献!详情请参阅CONTRIBUTING.md

许可证

本项目采用MIT许可证 - 详情请参阅LICENSE文件。

推荐服务器

Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
MCP Package Docs Server

MCP Package Docs Server

促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。

精选
本地
TypeScript
Claude Code MCP

Claude Code MCP

一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。

精选
本地
JavaScript
@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。

精选
本地
JavaScript
mermaid-mcp-server

mermaid-mcp-server

一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。

精选
JavaScript
Jira-Context-MCP

Jira-Context-MCP

MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

精选
TypeScript
Linear MCP Server

Linear MCP Server

一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

精选
JavaScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Curri MCP Server

Curri MCP Server

通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。

官方
本地
JavaScript