使用说明

项目简介

本项目是一个基于 模型上下文协议 (MCP) 的服务器实现,它利用 Gemini API 提供了多种功能服务。该项目包含一个核心 路由服务器 (Router) 和多个独立的 功能服务器 (Tools),如聊天服务、搜索服务、RAG服务和思考服务等。路由服务器作为中央枢纽,负责根据用户请求智能地选择并调用合适的功能服务器,从而实现强大的上下文处理能力。

主要功能点

  • 工具化服务: 提供多种预定义工具,包括:
    • 聊天 (Chat): 支持带有记忆和上下文的通用对话。
    • 搜索 (Search): 利用 DuckDuckGo 搜索引擎提供实时网络搜索功能。
    • RAG (Retrieval-Augmented Generation): 支持基于用户上传文档的问答,实现检索增强生成。
    • 思考 (Think): 用于处理复杂的逻辑推理任务。
    • 天气查询 (Weather): 获取指定地点的当前天气信息。
  • 智能路由: 使用 Gemini 模型作为路由决策器,根据用户query自动选择合适的工具。
  • 会话管理: 通过 'session_id' 管理用户对话会话。
  • 结果缓存: 对工具调用结果进行缓存,提高响应速度。
  • 易于部署: 使用 Docker Compose 简化后端服务的部署。

安装步骤

  1. 克隆仓库

    git clone https://github.com/AditHash/gemini-mcp-router.git
    cd gemini-mcp-router
  2. 配置后端

    • 进入 'backend' 目录: 'cd backend'
    • 创建 '.env' 文件,并填入 Gemini API 密钥和 OpenWeather API 密钥:
      GEMINI_API_KEY=<your_gemini_api_key>
      OPENWEATHER_API_KEY=<your_openweather_api_key>
      请替换 '<your_gemini_api_key>' 和 '<your_openweather_api_key>' 为你自己的 API 密钥。
  3. 启动后端服务

    • 确保已安装 Docker 和 Docker Compose。
    • 在 'backend' 目录下运行 Docker Compose 命令启动后端服务:
      docker-compose up --build
      这将会启动路由服务器以及聊天、搜索、RAG、思考和天气等功能服务器。
  4. 启动前端 (可选)

    • 进入 'frontend' 目录: 'cd ../frontend'
    • 安装前端依赖: 'npm install'
    • 启动前端开发服务器: 'npm run dev'
    • 前端项目为可选部分,主要用于演示,你可以根据需要自行构建 MCP 客户端。

服务器配置

以下 JSON 配置信息可用于 MCP 客户端连接 Gemini MCP Router 服务器:

{
  "serverName": "gemini-mcp-router",
  "command": "docker-compose",
  "args": ["up", "--build"],
  "description": "启动 Gemini MCP Router 服务器。依赖 Docker Compose 运行后端服务,包括路由、聊天、搜索、RAG、思考和天气等工具。"
}

配置参数说明:

  • 'serverName': 服务器名称,可以自定义,用于在客户端标识该服务器。
  • 'command': 启动服务器的命令,这里使用 'docker-compose'。
  • 'args': 启动命令的参数,'["up", "--build"]' 表示使用 Docker Compose 启动并构建服务。
  • 'description': 服务器的描述信息,方便用户理解服务器用途。

注意: MCP 客户端需要能够执行 'docker-compose up --build' 命令来启动后端服务。实际部署中,你可能需要将后端服务部署到云服务器或容器平台,并提供相应的访问地址给 MCP 客户端。

基本使用方法

启动服务器后,MCP 客户端可以通过 HTTP POST 请求与路由服务器的 '/ask' 接口进行交互。请求需要包含 'session_id' (会话ID) 和 'message' (用户消息) 两个字段。路由服务器会根据用户消息内容,智能选择合适的工具进行处理,并返回结果。

示例请求 (POST /ask):

{
  "session_id": "user123",
  "message": "今天北京天气怎么样?"
}

示例响应:

{
  "status": "success",
  "cached": false,
  "data": {
    "tool_used": "weather",
    "confidence": "high",
    "parameters": {
      "query": "北京"
    },
    "reply": "The weather in Beijing is currently clear sky with a temperature of 27°C. It feels like 26.8°C with a humidity level of 38%."
  }
}

具体的 API 请求和响应格式,请参考仓库中的代码和文档。

信息

分类

AI与计算