代理中MCP服务器的使用情况
该项目利用FastAgent通过模型上下文协议(MCP)服务器与各种服务进行交互。MCP服务器提供了一种标准化的协议,使AI代理能够与外部系统通信,提供对各种功能的访问,如捕获屏幕截图、查询天气信息、发送电子邮件、与Slack工作区交互以及管理SQLite数据库。这种集成允许用户体验具有全面服务连接的丰富交互式环境,同时保持基于代理的系统架构的最佳实践。
运行项目
要启动并运行此项目,请在导航到项目的根目录后执行以下步骤:
- 使用初始化虚拟环境
uv:
uv init- 激活虚拟环境:
- 在Windows上:
.venv\Scripts\activate- 在macOS/Linux上:
source .venv/bin/activate- 添加
ruff对于棉绒(可选但推荐):
uv add ruff- 检查代码
ruff(可选):
uv run ruff check- 安装库:
uv pip install -r requirements.txt- 锁定依赖关系:
uv lock- 同步依赖项(根据锁文件安装它们):
uv sync- 运行代理:
uv run agent.pyFastAgent
FastAgent是此项目中用于编排和管理与不同MCP服务器交互的主要客户端。它允许代理和服务之间进行无缝通信和数据交换。
配置的MCP服务器
下面是为此项目配置的MCP服务器列表。有关详细的实现和设置说明,请参阅各自的存储库。
文件系统MCP服务器
- 描述:提供与本地文件系统交互的功能。
- 实现细节: MCP服务器文件系统
- 配置在
fastagent.config.yaml:
filesystem:
command: "npx"
args: ["-y", "@modelcontextprotocol/server-filesystem", "."]谷歌地图MCP服务器
- 描述:允许与谷歌地图服务进行交互。
- 实现细节: MCP服务器谷歌地图
- 配置在
fastagent.config.yaml:
google-maps:
command: "npx"
args: ["-y", "@modelcontextprotocol/server-google-maps"]
env:
GOOGLE_MAPS_API_KEY: "AIza----------------------------------------------------"获取Google Maps API密钥:请参阅 文档 获取有关获取Google Maps API密钥的说明。
备注:为了获得完整的功能,请确保为GCP项目启用几乎所有地图API(Places API(New)、Directions API、Geocoding API等)。
Slack MCP服务器
- 描述:允许代理与Slack通信和交互。
- 实现细节: MCP服务器闲置
- 配置在
fastagent.config.yaml:
slack:
command: "npx"
args: [
"-y",
"@modelcontextprotocol/server-slack"
]
env:
SLACK_BOT_TOKEN: "xoxb----------------------------------------------------"
SLACK_TEAM_ID: "T-----------"
SLACK_CHANNEL_IDS: "C------------, C------------, C------------"SQLite MCP服务器
- 描述:提供与SQLite数据库交互的接口。
- 实现细节: MCP服务器sqlite
- 配置在
fastagent.config.yaml:
sqlite:
command: "uv"
args: [
"--directory",
"./src/sqlite",
"run",
"mcp-server-sqlite",
"--db-path",
"test.db"
]- 备注:test.db文件位于。/src/sqlite/目录。
MCP服务器截图
- 描述:提供捕获用户屏幕截图的功能。
- 实现细节:此服务器作为本地Python脚本实现。参见
./created_mcp_servers/screenshot_capture.py了解详情。 - 配置在
fastagent.config.yaml:
screenshot_capture:
command: "python"
args: ["./created_mcp_servers/screenshot_capture.py"]Weather API MCP服务器
- 描述:提供任何城市的天气信息。
- 实现细节:此服务器作为本地Python脚本实现。参见
./created_mcp_servers/weather_api.py了解详情。 - 配置在
fastagent.config.yaml:
weather_api:
command: "python"
args: ["./created_mcp_servers/weather_api.py"]备注:此服务器与外部天气API交互。确保任何必要的API密钥或配置 ./created_mcp_servers/weather_api.py 在您的环境或脚本中正确设置。
Serper搜索MCP服务器
- 描述:使代理能够使用Serper API执行internet搜索并检索结果。
- 实现细节:此服务器作为本地Python脚本实现。参见
./created_mcp_servers/serper_search.py了解详情。 - 配置在
fastagent.config.yaml:
serper_search:
command: "python"
args: ["./created_mcp_servers/serper_search.py"]备注:此服务器与Serper API交互。确保任何必要的API密钥或配置 ./created_mcp_servers/serper_search.py 在您的环境或脚本中正确设置。
Gmail MCP服务器
- 描述:允许代理与Gmail交互以发送和接收电子邮件。
- 实现细节:利用
@gongrzhe/server-gmail-autoauth-mcp包裹。更多信息请访问 MCP服务器gmail自动认证. - 配置在
fastagent.config.yaml:
gmail:
command: "npx"
args: ["@gongrzhe/server-gmail-autoauth-mcp"]备注:此服务器使用 @gongrzhe/server-gmail-autoauth-mcp 其旨在简化Gmail身份验证。但是,可能需要初始设置或用户同意。有关具体的身份验证过程和要求,请参阅服务器的文档。
代理
该项目定义了几个代理,每个代理都有一个特定的角色,由FastAgent协调:
route:此代理充当路由器,根据请求的性质将传入请求定向到适当的专用代理。它使用以下代理:chat_agent,screenshot_agent,weather_agent,search_agent,gmail_agent,maps_agent,slack_agent,sqlite_agent,以及fallback_agent.orchestrate:此代理管理代理之间的整体流程和协调,从route代理人。chat_agent:用土耳其语处理与用户的直接对话,回复问候和一般聊天。screenshot_agent:根据请求捕获用户屏幕的屏幕截图。weather_agent:提供用户要求的任何城市的天气信息。search_agent:根据用户查询执行互联网搜索并显示结果。gmail_agent:管理Gmail交互,如发送和接收电子邮件。maps_agent:执行各种与地图相关的操作,包括地理编码、反向地理编码、地点搜索、获取地点详细信息、计算距离、检索高程数据和生成方向。slack_agent:与Slack交互,启用列出频道、发送消息、回复消息、使用表情符号做出反应、获取频道历史记录、检索线程回复、列出用户和获取用户配置文件等操作。所有回复均为土耳其语。sqlite_agent:与SQLite数据库交互,允许它执行SQL查询、列出表、获取表模式和执行其他数据库操作。对用户的回复是土耳其语。fallback_agent:处理任何其他专业代理都无法处理的请求。它礼貌地用土耳其语通知用户,该请求超出了其当前能力范围,并建议用户采取其他行动(例如聊天、截图、天气、搜索、电子邮件、地图、Slack或数据库操作)。
使用示例
以下是一些可以与代理一起使用的示例问题或命令。这些通常由 orchestrate 和 route 代理商将他们引导到适当的专业代理商。
chat_agent
- “你好吗?”
- “你能给我讲个笑话吗?”
screenshot_agent
- “你能拍我的屏幕吗?”
- “捕捉屏幕截图”
weather_agent
- “伊斯坦布尔的天气如何?”
- “安卡拉现在的天气怎么样?”
search_agent
- “土耳其最高的山是什么?”
- “人工智能领域的最新发展是什么?”
gmail_agent
- “我的收件箱里有新邮件吗?”
- "
arkadas@example.com发送电子邮件至“你好”,内容为“你好,你好吗?”好吧 ”
maps_agent
- “你能给我埃菲尔铁塔的坐标吗?”
- “创建从安卡拉城堡到纪念碑的路线。”
- 从伊兹密尔钟楼开车到Konak Pier需要多长时间?
slack_agent
- "
#genel大家好,早上好! ”发送你的消息。 ” - “你能列出Slack上的活跃用户吗?”
sqlite_agent
- "
urunler显示表中的所有数据。 ” - “你能告诉我数据库里有哪些表格吗?”
- “在test.db数据库中创建一个名为'notes'的新表。该表包含三列名为'id' (INTEGER PRIMARY KEY AUTOINCREMENT)、'press' (TEXT NOT NULL)和'icerik' (TEXT)。”
fallback_agent
*(此代理处理其他代理无法处理的请求。以下是将触发 fallback_agent.)*
- “你能给我画画吗?”
- “你能预测明天的市场吗?”
