Token导航 LogoToken导航TokenDH.com
agents a2a MCP logo
数据服务stdio官方级别未说明来源级核验

agents a2a MCP

MCP Server

一个基于LangGraph ReAct代理的聊天服务,通过Agent-to-Agent(A2A)通信和Model Context Protocol(MCP)访问SQLite和Chroma数据库,支持结构化数据和语义搜索。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
聊天机器人数据分析Python搜索AI代理

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Jachu05

提供方

Jachu05

最后核验

2026/5/17 20:20

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python -m pip install --user uv

详细介绍

代理+MCP+A2A演示

在这个存储库中,您将找到一个代理聊天机器人,可以回答有关小型演示产品目录的问题。它使用代理到代理(A2A)调用和模型上下文协议(MCP)来访问两个本地数据源:关系SQLite数据库和Chroma向量存储。聊天代理选择何时查询结构化数据、语义搜索或两者兼而有之,以产生有用的答案。

该项目展示了:

  • 由LangGraph ReAct代理支持的FastAPI聊天服务。
  • 代理到代理(A2A)通信:主聊天代理通过HTTP调用辅助代理。
  • 辅助代理使用MCP工具服务器访问两个本地数据库:

- SQLite(关系型) - 色度(矢量)

建筑

flowchart TD
  subgraph "Chat Server (FastAPI 8000)"
    ChatAPI["POST /chat"]
    ChatAgent["LangGraph ReAct Agent (chat_agent)"]
    ChatAPI --> ChatAgent
  end

  subgraph "Data Server (FastAPI 8001)"
    A2A["POST /data-agent/call"]
    DataAgent["LangGraph ReAct Agent (data_agent)"]
    A2A --> DataAgent
  end

  ChatAgent -- HTTP --> A2A

  subgraph "MCP (FastMCP)"
    SQLiteMCP[SQLite MCP Server]
    ChromaMCP[Chroma MCP Server]
  end

  subgraph "Local Databases"
    SQLiteDB[(SQLite demo.sqlite)]
    ChromaStore[(Chroma vector store)]
  end

  DataAgent -- list_tools + call --> SQLiteMCP
  DataAgent -- list_tools + call --> ChromaMCP

  SQLiteMCP --> SQLiteDB
  ChromaMCP --> ChromaStore

背景:MCP和A2A

  • 模型上下文协议(MCP):代理通过干净、类型化的接口发现和调用外部工具的标准方法。当您希望将精确、可靠、可审计的工具调用(例如数据库查询、知识查找、文件I/O)作为代理可以列出和调用的工具公开时,MCP是最好的选择。请参阅:

- 人类公告:https://www.anthropic.com/news/model-context-protocol - MCP组织和规范:https://github.com/modelcontextprotocol - FastMCP文档(客户端和服务器操作指南):https://fastmcp.wiki/

  • 代理对代理(A2A):代理之间的直接通信,通常通过HTTP或消息传递。当一个代理应将工作委托给具有不同角色、技能或数据访问权限的另一个代理时,请使用A2A。它非常适合模块化架构、关注点分离以及从较小的代理服务中组合系统。了解更多:

- LangGraph多代理模式:https://langchain-ai.github.io/langgraph/ - Microsoft AutoGen(多代理框架):https://microsoft.github.io/autogen/ - 深度学习。人工智能短期课程(LangGraph,多代理):https://www.deeplearning.ai/short-courses/

何时使用哪个:

  • 当单个代理需要对具有明确输入/输出的工具/数据进行确定性访问时,使用MCP。
  • 当您希望代理跨服务协作、委派或隔离职责时,请使用A2A。

先决条件

  • Python 3.11+
  • uv 包管理器(推荐)

重要!

  • 将“env”文件重命名为“.env”
  • 更新.env文件中的密钥以使llm工作

安装uv

Windows(PowerShell):

# Install via pip (user-site)
python -m pip install --user uv
# You may need to restart your terminal so that the user Scripts folder is on PATH.
# Verify
uv --version

安装

uv venv
uv sync
uv pip install -r requirements.txt

初始化本地数据

应包含数据库,以便跳过此步骤。

uv run python -m db.init_sqlite
uv run python -m db.init_vectors

MCP服务器

运行自己的FastMCP HTTP服务器。数据服务器在运行时使用FastMCP客户端发现工具 list_tools() 并通过以下方式执行它们 call_tool().

数据服务器需要这些固定URL:

  • SQLite MCP: http://127.0.0.1:9001/mcp
  • 铬MCP: http://127.0.0.1:9002/mcp

运行FastMCP服务器,使其在9001和9002上提供HTTP服务:

# Terminal 3 - SQLite MCP (HTTP on 9001)
uv run fastmcp run servers/sqlite_mcp.py:mcp --transport http --host 127.0.0.1 --port 9001

# Terminal 4 - Chroma MCP (HTTP on 9002)
uv run fastmcp run servers/chroma_mcp.py:mcp --transport http --host 127.0.0.1 --port 9002

如果更改端口/主机,请更新中的固定URL app_data/main.py.

有关运行服务器和客户端工具的操作,请参阅FastMCP文档:https://fastmcp.wiki/en/clients/tools

运行服务器

在两个终端中启动数据代理服务器(端口8001)和聊天服务器(端口8000):

# Terminal 1 - Data server
uv run uvicorn app_data.main:app --reload --host 127.0.0.1 --port 8001

# Terminal 2 - Chat server
uv run uvicorn app.main:app --reload --host 127.0.0.1 --port 8000

健康检查:

curl http://127.0.0.1:8000/health  # chat server
curl http://127.0.0.1:8001/health  # data server

聊天:

curl -X POST http://127.0.0.1:8000/chat -H "content-type: application/json" -d "{\"message\":\"What headphones do we have? Use tools if needed.\"}"

聊天(在powershell中):

Invoke-WebRequest -Uri "http://127.0.0.1:8000/chat" -Method Post -Headers @{ "Content-Type" = "application/json" } -Body '{"message":"What headphones do we have? Use tools if needed."}' -UseBasicParsing | Select-Object -ExpandProperty Content   

聊天(在powershell中):

Invoke-RestMethod -Uri "http://127.0.0.1:8000/chat" -Method Post -Headers @{ "Content-Type" = "application/json" } -Body '{"message":"What do you think about sony products that you have and at what price?"}'            

演示功能的示例提示

  • 仅数据库(SQLite通过MCP):

- “列出你所有的耳机及其价格。” - “显示索尼的所有产品及其价格和库存。”

  • 仅矢量存储(Chroma通过MCP):

- “查找有关降噪耳机的文章。” - “关于耳挂式和入耳式,提到的利弊是什么?”

  • 将两者结合起来(使用数据库事实+向量上下文):

- “比较索尼和Bose耳机,包括价格并总结评论。” - “你的哪款预算耳机最常被描述为舒适?”

运作原理

  • app/main.py 暴露 /chat (聊天服务器)。
  • app_data/main.py 暴露 /data-agent/call (数据服务器)。
  • 聊天代理(agents/chat_agent.py)用途 create_react_agent 并且只有一个工具 ask_data_agent 执行对数据服务器的HTTP调用 /data-agent/call.
  • 数据代理(agents/data_agent.py)使用从FastMCP服务器中发现的工具为每个请求构建一个ReAct代理:

- 它召唤 list_tools() 并将返回的工具转换为LangChain工具,如下所述:https://fastmcp.wiki/en/clients/tools

  • MCP服务器在 servers/sqlite_mcp.pyservers/chroma_mcp.py;将它们作为单独的FastMCP HTTP服务器运行。

备注

  • 矢量存储使用非常小的确定性哈希嵌入来避免大型模型下载,仅适用于本地演示。
  • 更换中的模型 agents/* 根据需要,与您首选的供应商和型号联系。

目录标签

目录标签

聊天机器人数据分析Python搜索AI代理本地部署多代理系统数据库查询语义搜索FastAPI

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP