article
README
🚀 00_master_mcp 容器技术文档
本项目的00_master_mcp容器作为多代理系统的中央编排器,能够协调和管理多个专业化服务器,实现系统资源和服务的高效调用与整合。通过单一入口点复用所有下游服务器功能,并提供层次化命名空间组织工具,极大提升了系统的管理效率和扩展性。
🚀 快速开始
构建镜像
docker build -t mcp_master .
运行容器
docker run --network host -d mcp_master
访问接口
通过http://<宿主机>:8000访问MCP服务
✨ 主要特性
- 集中控制:通过
FastMCPHost暴露单个API端点,统一管理多个专业化服务器。 - 命名空间隔离:采用层次化命名空间(如
os.linux,cloud.azure)避免工具名称冲突,提升系统扩展性。 - 上下文聚合:协调各个专业化服务器的交互,实现跨服务功能调用。
- 安全策略:通过命名空间层级权限控制,确保资源访问安全性。
📦 安装指南
构建镜像
docker build -t mcp_master .
运行容器
docker run --network host -d mcp_master
💻 使用示例
基础用法
通过以下命令构建并运行容器,然后通过http://<宿主机>:8000访问MCP服务。
# 构建镜像
docker build -t mcp_master .
# 运行容器
docker run --network host -d mcp_master
📚 详细文档
容器结构
- Dockerfile:定义了容器构建基础镜像、安装运行时依赖及启动脚本配置。
- entrypoint.sh:配置了容器启动时的网络接口绑定和用户权限限制,保障运行安全。
- mcp_host.py:实现了MCP协议的具体逻辑,包括服务器注册、请求分发和响应处理。
命名空间策略
- 顶级域名:按功能类别划分(如
os,cloud,infra,web等)。 - 服务 specificity:在每个顶级域名下使用子命名空间指定具体技术(如
os.linux,cloud.azure)。 - 子系统粒度:通过进一步的子命名空间组织特定功能,避免过多容器化工具。
层次化 MCP 示例
master (:8000)
├─ os
│ ├─ linux (01_linux_cli_mcp:8001)
│ │ ├─ cli.* # 基本命令和文件操作
│ │ ├─ ceph.* # Ceph集群管理
│ │ ├─ nginx.* # Nginx服务配置
│ │ ├─ mta.* # 邮件传输代理操作
│ │ └─ sftp.* # SFTP服务器管理
│ ├─ windows.* (02_windows_mcp:8002)
│ └─ macos.* (10_macos_mcp:8010)
├─ cloud
│ ├─ azure.* (03_azure_mcp:8003)
│ └─ gcloud.* (04_google_cloud_mcp:8004)
├─ infra
│ ├─ vmware.* (05_vmware_mcp:8005)
│ └─ k8s.* (08_k8s_mcp:8008)
├─ web
│ ├─ search.* (06_web_search_mcp:8006)
│ └─ browse.* (07_web_browsing_mcp:8007)
├─ workflows
│ └─ n8n.* (09_n8n_mcp:8009)
├─ trading
│ └─ freq.* (11_freqtrade_mcp:8011)
├─ cmdb (12_cmdb_mcp:8012)
│ ├─ local.* # 本地CSV/SQLite数据库工具
│ └─ servicenow.* # ServiceNow集成工具
└─ secrets (13_secrets_mcp:8013)
├─ keepass.* # KeePass后端工具
├─ azurekv.* # Azure Key Vault后端工具
└─ gcloudsa.* # Google Cloud Secret Manager后端工具
代码实现
Dockerfile
# 基础镜像
FROM python:3.9-slim
# 安装运行时依赖
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# 设置工作目录
WORKDIR /app
# 复制文件
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
# 配置启动脚本
ENTRYPOINT ["./entrypoint.sh"]
entrypoint.sh
#!/bin/sh
set -e
# 绑定8000端口到宿主机
sed -i "s/127.0.0.1/0.0.0.0/g" /app/mcp_host.py
# 以非root用户运行
useradd -m mcp_user
chown -R mcp_user /app
su -c "python3 /app/mcp_host.py" mcp_user
mcp_host.py
import sys
from fast_mcp import FastMCPHost
def main():
host = FastMCPHost()
try:
host.start("0.0.0.0", 8000)
except KeyboardInterrupt:
print("\nStopping MCP Host...")
except Exception as e:
print(f"Error: {e}")
sys.exit(1)
if __name__ == "__main__":
main()
微信扫一扫