使用说明
项目简介
本项目是一个基于 模型上下文协议 (MCP) 的服务器实现,它利用 Gemini API 提供了多种功能服务。该项目包含一个核心 路由服务器 (Router) 和多个独立的 功能服务器 (Tools),如聊天服务、搜索服务、RAG服务和思考服务等。路由服务器作为中央枢纽,负责根据用户请求智能地选择并调用合适的功能服务器,从而实现强大的上下文处理能力。
主要功能点
- 工具化服务: 提供多种预定义工具,包括:
- 聊天 (Chat): 支持带有记忆和上下文的通用对话。
- 搜索 (Search): 利用 DuckDuckGo 搜索引擎提供实时网络搜索功能。
- RAG (Retrieval-Augmented Generation): 支持基于用户上传文档的问答,实现检索增强生成。
- 思考 (Think): 用于处理复杂的逻辑推理任务。
- 天气查询 (Weather): 获取指定地点的当前天气信息。
- 智能路由: 使用 Gemini 模型作为路由决策器,根据用户query自动选择合适的工具。
- 会话管理: 通过 'session_id' 管理用户对话会话。
- 结果缓存: 对工具调用结果进行缓存,提高响应速度。
- 易于部署: 使用 Docker Compose 简化后端服务的部署。
安装步骤
-
克隆仓库
git clone https://github.com/AditHash/gemini-mcp-router.git cd gemini-mcp-router -
配置后端
- 进入 'backend' 目录: 'cd backend'
- 创建 '.env' 文件,并填入 Gemini API 密钥和 OpenWeather API 密钥:
请替换 '<your_gemini_api_key>' 和 '<your_openweather_api_key>' 为你自己的 API 密钥。GEMINI_API_KEY=<your_gemini_api_key> OPENWEATHER_API_KEY=<your_openweather_api_key>
-
启动后端服务
- 确保已安装 Docker 和 Docker Compose。
- 在 'backend' 目录下运行 Docker Compose 命令启动后端服务:
这将会启动路由服务器以及聊天、搜索、RAG、思考和天气等功能服务器。docker-compose up --build
-
启动前端 (可选)
- 进入 '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与计算