多AI模型网关

支持多种AI模型提供商的MCP网关应用,提供AWS跨区域推理、实时流式传输和动态工具管理功能。

  • by nxtcloud-org
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 nxtcloud-org/Nxt-mcp-gateway

使用说明

NxtCloud MCP网关

支持多个AI模型提供者的模型上下文协议(MCP)网关应用程序。

主要功能

  • 🤖 支持多个AI模型:OpenAI GPT-4o Mini和AWS基岩Claude 3.5 Haiku
  • ☁️ AWS跨区域推断:提供可靠的Bedrock服务
  • 🔧 MCP服务器集成:添加/管理动态工具(基于JSON)
  • 💬 实时流媒体:可视化响应和工具调用
  • 🛠️ 内置MCP服务器:时间计算器、天气查询等
  • 🔄 顺利转换型号:可以在对话中更改模型

🏗️ 体系结构

┌─────────────────────────────────────────────────────────────┐
│                    Streamlit UI Layer                       │
├─────────────────────────────────────────────────────────────┤
│  Model Settings Tab  │  Chat Tab  │  MCP Tools Tab         │
├─────────────────────────────────────────────────────────────┤
│                  Model Management Layer                     │
│  ┌─────────────────┐    ┌─────────────────────────────────┐ │
│  │ OpenAI Provider │    │    AWS Bedrock Provider        │ │
│  │ - GPT-4o Mini   │    │ - Claude 3.5 Haiku            │ │
│  │ - API Key Auth  │    │ - Cross Region Inference       │ │
│  └─────────────────┘    └─────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│                    LangGraph Agent Layer                    │
│              create_react_agent + MCP Tools                 │
├─────────────────────────────────────────────────────────────┤
│                      MCP Client Layer                       │
│                MultiServerMCPClient                         │
└─────────────────────────────────────────────────────────────┘

🚀 快速入门

方法1:使用Docker(建议)🐳

# Docker Hub에서 이미지 다운로드 및 실행
docker run -p 8501:8501 glen15/nxt-mcp-gateway:latest

在浏览器中 http://localhost:8501 连接

方法2:使用Docker Compose

# 저장소 클론
git clone <repository-url>
cd nxt-mcp-gateway

# Docker Compose로 실행
docker-compose up -d

方法3:本地开发环境

# 저장소 클론
git clone <repository-url>
cd nxt-mcp-gateway

# 가상환경 생성 및 활성화
python3 -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# 의존성 설치
pip install -r requirements.txt

# 실행
streamlit run app.py

3.设置

  1. “模型设置”选项卡输入所需AI提供程序的API密钥:

    • ☁️ AWS基岩:使用Claude 3.5 Haiku型号
    • 🤖 开放人工智能:使用GPT-4o Mini型号
    • 💡 只需设置其中一个即可使用
  2. MCP工具选项卡在中单击“应用设置”

  3. 聊天机器人选项卡开始对话!

🔧 支持的型号

提供者 型号 说明
AWS Bedrock Claude 3.5 Haiku Anthropic的快速高效模型
OpenAI GPT-4o Mini OpenAI的轻量级高性能模型

📋 MCP服务器管理

按环境管理工具🐳💻

该应用程序 容器环境和 本地环境自动分隔,仅加载兼容的MCP工具。

环境感知

  • 容器环境 (🐳): IS_CONTAINER=true 检测为环境变量
  • 本地环境 (💻): 默认值,所有工具都可用

工具兼容性

“工具”“容器”“本地”“默认启用”“说明” | ------------------ | -------- | ---- | ----------- | --------------------------------------------------- | | get_current_time |宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传 | playwright-mcp 浏览器自动化(容器中浏览器配置文件冲突) | weather | | | OpenWeatherMap天气查询(需要手动添加)|

默认激活服务器

  • mcp_servers/time.py:与时间相关的计算(自动加载)

手动添加服务器

  • mcp_servers/weather.py:查看OpenWeatherMap天气(从MCP工具选项卡添加)

添加外部服务器

在MCP工具选项卡中,以JSON格式添加新服务器:

示例1:NPM软件包服务器

{
  "server-name": {
    "command": "npx",
    "args": ["-y", "package-name"],
    "transport": "stdio"
  }
}

示例2:Python天气服务器(OpenWeatherMap)

{
  "weather": {
    "command": "python",
    "args": ["./mcp_servers/weather.py"],
    "transport": "stdio"
  }
}

向新MCP工具添加元数据

app.py的 MCP_TOOLS_METADATA在中注册工具信息:

MCP_TOOLS_METADATA = {
    "your-tool-name": {
        "container_compatible": True,  # 컨테이너에서 사용 가능 여부
        "description": "도구 설명",
        "category": "카테고리",
        "note": "추가 정보 (선택)",
    },
}

元数据字段

  • container_compatible (bool):是否兼容容器环境
    • True:本地/容器都可用
    • False:仅限本地环境(自动从容器中排除)
  • description (str):工具提示(显示在UI中)
  • category (str):工具分类(显示在UI中)
  • note (str):其他信息/警告(可选)

🔒 安全

  • API密钥仅保存在会话状态(不保存文件)
  • UI中的API密钥掩蔽处理
  • 会话结束时自动清除

📦 依赖性

核心包(9个):

  • streamlit:Web界面
  • langchain-openai:OpenAI集成
  • langchain-aws:AWS Bedrock集成
  • langgraph:AI代理框架
  • langchain-mcp-adapters:MCP客户端
  • boto3:AWS SDK
  • mcp:MCP协议
  • nest-asyncio:异步处理
  • pytz:时区处理

🐳 docker使用方法

映像构建

# 로컬에서 이미지 빌드
docker build -t glen15/nxt-mcp-gateway:latest .

# 또는 Docker Hub 업로드 스크립트 사용
./push-to-dockerhub.sh glen15

运行选项

# 기본 실행 (설정은 컨테이너 내부에만 저장, 컨테이너 삭제 시 사라짐)
docker run -p 8501:8501 glen15/nxt-mcp-gateway:latest

# 백그라운드 실행
docker run -d -p 8501:8501 --name nxt-mcp-gateway glen15/nxt-mcp-gateway:latest

# MCP 설정 파일 마운트 (권장: 설정이 호스트에 영구 저장됨)
docker run -p 8501:8501 -v $(pwd)/mcp_config.json:/app/mcp_config.json glen15/nxt-mcp-gateway:latest

# 백그라운드에서 실행 (권장)
docker run -d -p 8501:8501 \
  --name nxt-mcp-gateway \
  -v $(pwd)/mcp_config.json:/app/mcp_config.json \
  glen15/nxt-mcp-gateway:latest

⚠️ 重要:如果在运行Docker时未将配置文件作为卷挂载:

  • UI中更改的MCP服务器设置仅存储在容器内部文件中
  • 删除容器时,设置将消失
  • 多个容器实例之间的设置不共享

✅ 建议:请像上面的卷装载示例一样装载和使用配置文件。

部署Docker Hub

# Docker Hub에 로그인
docker login

# 이미지 푸시
docker push glen15/nxt-mcp-gateway:latest

🛠️ 开发

项目结构

├── app.py                 # 메인 Streamlit 애플리케이션
├── model_providers.py     # 모델 제공자 추상화 계층
├── utils.py              # 유틸리티 함수
├── mcp_servers/          # 내장 MCP 서버들
├── requirements.txt      # Python 의존성
├── Dockerfile            # Docker 이미지 빌드 파일
├── docker-compose.yml    # Docker Compose 설정
├── build.sh             # Docker 빌드 스크립트
└── README.md            # 프로젝트 문서

添加新模型提供程序

  1. model_providers.py在中 ModelProvider 类继承
  2. MODEL_REGISTRY在中注册新提供者
  3. UI中自动可用

📄 许可证

该项目在MIT许可下分发。