mcp客户端后端
Gemini API + MCP (Model Context Protocol) 集成工具调用AI 代理后端服务器。
📖 概要
此项目包括:Google Gemini API 和MCP 使服务器协同工作,以满足用户的自然语言请求MCP 自动选择和运行工具并返回结果FastAPI 是基本的后端。
主要特征
- 🤖 智能工具选择: Gemini API 分析用户的要求MCP 自动选择工具
- 🔄 重复执行:如果搜索结果为0,则尝试使用其他关键字自动重新搜索
- 🔍 多关键字搜索:从一个请求中提取多个相关关键字,分别搜索
- 📊 自动获取详细信息:自动获取补贴详细信息(如果有搜索结果)
- 🌐 通用设计:支持不同领域的补贴搜索
主要用途
- 搜索补贴MCP 服务器协作)
- 其他MCP 利用工具的信息取得·处理
🏗️ 系统体系结构
┌─────────────┐
│ Client │ (Flutter / curl / フロントエンド)
└──────┬──────┘
│ HTTP POST /chat
▼
┌─────────────────────────────────────┐
│ FastAPI Server │
│ (server.py) │
│ - /healthz: ヘルスチェック │
│ - /tools: ツール一覧取得 │
│ - /chat: メインエンドポイント │
└──────┬──────────────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ Agent │
│ (mcp_agent/agent.py) │
│ 統括・統合処理 │
│ ┌─────────────────────────────┐ │
│ │ 反復的な実行ループ │ │
│ │ 1. 計画生成 │ │
│ │ 2. ツール実行 │ │
│ │ 3. 結果評価 │ │
│ │ 4. 必要に応じて再実行 │ │
│ └─────────────────────────────┘ │
└───┬─────────────────────────────────┘
│
├─► ConnectionManager ──► MCP Server (Jグランツ等)
│ (ツール一覧取得・ツール実行)
│
├─► TaskManager ──► Gemini API
│ (実行計画生成・前回結果を考慮)
│
├─► TaskExecutor ──► MCP Server
│ (ツール実行・結果収集)
│
└─► Gemini API
(最終回答生成)🔄 处理流程(详细信息)
1.请求接收
用户以自然语言发送问题
POST /chat
{
"message": "東京都のITツール導入補助金を探してください"
}2.重复执行循环
代理最多重复5次以下循环:
while iteration
cd mcp-client-backend- 安装依赖关系
uv sync- 设置环境变量
.env 创建文件并设置:
GOOGLE_API_KEY=your_google_api_key_here
GEMINI_MODEL=gemini-2.5-flash
JGRANTS_MCP_URL=https://your-jgrants-mcp-server-url- 启动服务器
uv run fastapi dev server.py服务器是 http://127.0.0.1:8000 中所述修改相应参数的值。
📝 API 使用例
健康检查
curl http://127.0.0.1:8000/healthz工具列表检索
curl http://127.0.0.1:8000/tools聊天(基本补贴搜索)
curl -X POST http://127.0.0.1:8000/chat \
-H "Content-Type: application/json" \
-d '{"message":"東京都でテレワーク関連の補助金を探してください"}'聊天(包括多个请求)
curl -X POST http://127.0.0.1:8000/chat \
-H "Content-Type: application/json" \
-d '{"message":"まず、このjGrants MCPサーバーが正常に動作しているかどうかを確認し、その結果を簡潔に教えてください。そのうえで、東京都に所在する中小企業を対象とした、ITツール導入やDX推進を支援する補助金を検索してください。検索に成功した場合は、見つかった補助金の名称、最大補助額、申請期限、対象業種や従業員数などを整理して説明してください"}'聊天(期望获取更多信息)
curl -X POST http://127.0.0.1:8000/chat \
-H "Content-Type: application/json" \
-d '{"message":"東京都の中小企業向けITツール導入補助金を検索し、見つかった補助金の詳細(対象業種、申請要件、補助率など)を詳しく教えてください"}'💡 系统特点及改进
重复执行循环
在以前的系统中,通过一次计划生成决定了全部的工具调用,但是在本系统中查看结果后再决定下一步中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。
优点:
- 如果搜索结果为0,则自动用其他关键字重新搜索
- 如果有搜索结果,则自动获取详细信息
- 更加灵活、适应性的动作
多关键字搜索
从用户的请求中提取多个相关关键字,分别单独搜索来修改标记元素的显示属性。
例:
- 要求:“DX推进”
- 搜索关键字:
- 「IT工具部署” - 「DX推进」 - 「IT导入」 - 「DX」 - 数字化
通用提示设计
特定用例(例如:IT/DX相关),采用通用的提示设计。
特徴:
- 支持不同领域的补贴搜索
- 自动化关键字提取和搜索策略
- 正确判断参数的必要/任意
考虑上次结果的计划生成
在执行迭代时,考虑上次执行的结果,生成以下计划:。
例:
- 第1次:通过“IT工具导入”检索→0件
- 第2次:看上次的结果,用“系统”重新检索→3件
- 第3次:获取找到的补贴的详细信息
🔧 技术栈
- Web 框架结构:FastAPI
- LLM:谷歌Gemini API(Gemini-2.5闪存)
- 协议:MCP(模型上下文协议)
- HTTP 客户机:httpx
- 设定管理:python dotenv
- 数据验证:Pydantic
- 包管理器:紫外线
🧪 测试
test_queries_individual.sh 准备了各种各样的测试用例。
# 個別のテストケースを実行
curl -X POST http://127.0.0.1:8000/chat \
-H "Content-Type: application/json" \
-d '{"message":"東京都で農業や農林水産に関連する補助金を探してください"}'🛠️ 开発
代码格式
Black 使用:
uv run black .模具检查
Pylance(VS Code 扩张机能)を使用。.vscode/settings.json 中所述修改相应参数的值。
📚 相关资源
📄 许可证
(追加许可证信息)
