本项目的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
os, cloud, infra, web等)。os.linux, cloud.azure)。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后端工具
# 基础镜像
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"]
#!/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
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()