使用说明
代理中MCP服务器的使用情况
该项目利用FastAgent通过模型上下文协议(MCP)服务器与各种服务进行交互。MCP服务器提供了一种标准化的协议,使AI代理能够与外部系统通信,提供对各种功能的访问,如捕获屏幕截图、查询天气信息、发送电子邮件、与Slack工作区交互以及管理SQLite数据库。这种集成允许用户体验具有全面服务连接的丰富交互式环境,同时保持基于代理的系统架构的最佳实践。
运行项目
要启动并运行此项目,请在导航到项目的根目录后执行以下步骤:
- 使用初始化虚拟环境
uv:uv init - 激活虚拟环境:
- 在Windows上:
.venv\Scripts\activate - 在macOS/Linux上:
source .venv/bin/activate
- 在Windows上:
- 添加
ruff对于棉绒(可选但推荐):uv add ruff - 检查代码
ruff(可选):uv run ruff check - 安装库:
uv pip install -r requirements.txt - 锁定依赖关系:
uv lock - 同步依赖项(根据锁文件安装它们):
uv sync - 运行代理:
uv run agent.py
FastAgent
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:备注:此服务器与外部天气API交互。确保任何必要的API密钥或配置weather_api: command: "python" args: ["./created_mcp_servers/weather_api.py"]./created_mcp_servers/weather_api.py在您的环境或脚本中正确设置。
Serper搜索MCP服务器
- 描述:使代理能够使用Serper API执行internet搜索并检索结果。
- 实现细节:此服务器作为本地Python脚本实现。参见
./created_mcp_servers/serper_search.py了解详情。 - 配置在
fastagent.config.yaml:备注:此服务器与Serper API交互。确保任何必要的API密钥或配置serper_search: command: "python" args: ["./created_mcp_servers/serper_search.py"]./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.)
- “你能给我画画吗?”
- “你能预测明天的市场吗?”
