内容
<p align="center">
<a href="https://mcp-agent.com"><img src="https://github.com/user-attachments/assets/c8d059e5-bd56-4ea2-a72d-807fb4897bde" alt="Logo" width="300" /></a>
</p>
<p align="center">
<em>使用简单的可组合模式构建有效的代理。</em>
<p align="center">
<a href="https://github.com/lastmile-ai/mcp-agent/tree/main/examples" target="_blank"><strong>示例</strong></a>
|
<a href="https://www.anthropic.com/research/building-effective-agents" target="_blank"><strong>构建有效代理</strong></a>
|
<a href="https://modelcontextprotocol.io/introduction" target="_blank"><strong>MCP</strong></a>
</p>
<p align="center">
<a href="https://mcp-agent.com"><img src="https://img.shields.io/badge/docs-8F?style=flat&link=https%3A%2F%2Fmcp-agent.com%2F" /><a/>
<a href="https://pypi.org/project/mcp-agent/"><img src="https://img.shields.io/pypi/v/mcp-agent?color=%2334D058&label=pypi" /></a>
<a href="https://github.com/lastmile-ai/mcp-agent/issues"><img src="https://img.shields.io/github/issues-raw/lastmile-ai/mcp-agent" /></a>
<a href="https://lmai.link/discord/mcp-agent"><img src="https://shields.io/discord/1089284610329952357" alt="discord" /></a>
<img alt="Pepy Total Downloads" src="https://img.shields.io/pepy/dt/mcp-agent?label=pypi%20%7C%20downloads"/>
<a href="https://github.com/lastmile-ai/mcp-agent/blob/main/LICENSE"><img src="https://img.shields.io/pypi/l/mcp-agent" /></a>
</p>
<p align="center">
<a href="https://trendshift.io/repositories/13216" target="_blank"><img src="https://trendshift.io/api/badge/repositories/13216" alt="lastmile-ai%2Fmcp-agent | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
</p>
## 概述
**`mcp-agent`** 是一个简单、可组合的框架,用于使用[模型上下文协议](https://modelcontextprotocol.io/introduction)构建代理。
**灵感来源**:Anthropic 宣布了两项 AI 应用程序开发人员的基础更新:
1. [模型上下文协议](https://www.anthropic.com/news/model-context-protocol) - 一种标准化的接口,让任何软件都可以通过 MCP 服务器被 AI 助手访问。
2. [构建有效的代理](https://www.anthropic.com/research/building-effective-agents) - 关于构建适用于生产的 AI 代理的简单、可组合模式的开创性文章。
`mcp-agent` 将这两个基础部分放入 AI 应用程序框架中:
1. 它处理管理 MCP 服务器连接的生命周期,因此您不需要这样做。
2. 它实现了[构建有效的代理](https://www.anthropic.com/research/building-effective-agents)中描述的每个模式,并且以可组合的方式实现,允许您将这些模式链接在一起。
3. **奖励**: 它实现了[OpenAI 的 Swarm](https://github.com/openai/swarm)模式,用于多代理编排,但以与模型无关的方式。
总的来说,这是构建稳健的代理应用程序最简单、最容易的方法。与 MCP 一样,该项目处于早期开发阶段。
我们欢迎所有类型的[贡献](/CONTRIBUTING.md)、反馈和您帮助我们成长为新的标准。
## 入门指南
我们建议使用 [uv](https://docs.astral.sh/uv/) 来管理您的 Python 项目:
```bash
uv add "mcp-agent"
```
或者:
```bash
pip install mcp-agent
```
### 快速入门
> [!TIP]
> [`examples`](/examples) 目录中有几个示例应用程序来帮助您入门。
> 要运行示例,请克隆此仓库,然后:
>
> ```bash
> cd examples/basic/mcp_basic_agent # 或任何其他示例
> cp mcp_agent.secrets.yaml.example mcp_agent.secrets.yaml # 更新 API 密钥
> uv run main.py
> ```
这是一个基本的“查找”代理,它使用 fetch 和文件系统服务器来查找文件,读取博客并写入推文。 [示例链接](./examples/basic/mcp_basic_agent/):
<details open>
<summary>finder_agent.py</summary>
```python
import asyncio
import os
from mcp_agent.app import MCPApp
from mcp_agent.agents.agent import Agent
from mcp_agent.workflows.llm.augmented_llm_openai import OpenAIAugmentedLLM
app = MCPApp(name="hello_world_agent")
async def example_usage():
async with app.run() as mcp_agent_app:
logger = mcp_agent_app.logger
# 此代理可以读取文件系统或获取 URL
finder_agent = Agent(
name="finder",
instruction="""您可以读取本地文件或获取 URL。
请求时返回所需信息。""",
server_names=["fetch", "filesystem"], # 代理可以使用的 MCP 服务器
)
async with finder_agent:
# 自动初始化 MCP 服务器并添加其工具供 LLM 使用
tools = await finder_agent.list_tools()
logger.info(f"可用的工具:", data=tools)
# 将 OpenAI LLM 附加到代理(默认为 GPT-4o)
llm = await finder_agent.attach_llm(OpenAIAugmentedLLM)
# 这将使用文件系统服务器执行文件查找和读取
result = await llm.generate_str(
message="显示 README.md 中的内容原样"
)
logger.info(f"README.md 内容:{result}")
# 使用获取服务器从 URL 获取内容
result = await llm.generate_str(
message="打印 https://www.anthropic.com/research/building-effective-agents 的前两个段落"
)
logger.info(f"博客介绍:{result}")
# 默认情况下进行多轮交互
result = await llm.generate_str("将内容总结为 128 个字符的推文")
logger.info(f"推文:{result}")
if __name__ == "__main__":
asyncio.run(example_usage())
```
</details>
<details>
<summary>mcp_agent.config.yaml</summary>
```yaml
execution_engine: asyncio
logger:
transports: [console] # 您可以使用 [file, console] 进行两者
level: debug
path: "logs/mcp-agent.jsonl" # 用于文件传输
# 动态日志文件名:
# path_settings:
# path_pattern: "logs/mcp-agent-{unique_id}.jsonl"
# unique_id: "timestamp" # 或 "session_id"
# timestamp_format: "%Y%m%d_%H%M%S"
mcp:
servers:
fetch:
command: "uvx"
args: ["mcp-server-fetch"]
filesystem:
command: "npx"
args:
[
"-y",
"@modelcontextprotocol/server-filesystem",
"<add_your_directories>",
]
openai:
# 机密(API 密钥等)存储在 mcp_agent.secrets.yaml 文件中,可以被 gitignore
default_model: gpt-4o
```
</details>
<details>
<summary>代理输出</summary>
<img width="2398" alt="Image" src="https://github.com/user-attachments/assets/eaa60fdf-bcc6-460b-926e-6fa8534e9089" />
</details>
## 目录
- [为什么使用 mcp-agent?](#为什么使用mcp-agent)
- [示例应用程序](#示例应用程序)
- [Claude 桌面版](#claude-桌面版)
- [Streamlit](#streamlit)
- [Gmail 代理](#gmail-代理)
- [RAG](#简单-rag-聊天机器人)
- [Marimo](#marimo)
- [Python](#python)
- [Swarm(CLI)](#swarm)
- [核心概念](#核心组件)
- [工作流模式](#工作流)
- [增强型 LLM](#增强型llm)
- [并行](#并行)
- [路由器](#路由器)
- [意图分类器](#意图分类器)
- [编排器-工作线程](#编排器-工作线程)
- [评估器-优化器](#评估器-优化器)
- [OpenAI Swarm](#swarm-1)
- [高级](#高级)
- [组合多个工作流](#组合多个工作流)
- [信号和人类输入](#信号和人类输入)
- [应用程序配置](#应用程序配置)
- [MCP 服务器管理](#mcp-服务器管理)
- [贡献](#贡献)
- [路线图](#路线图)
- [常见问题](#常见问题)
## 为什么使用 `mcp-agent`?
已经有很多 AI 框架了。但是 `mcp-agent` 是唯一一个专门为共享协议 - [MCP](https://modelcontextprotocol.io/introduction) 而构建的。同时,它也是最轻量级的,更接近于代理模式库而非框架。
随着 [更多服务变得支持 MCP](https://github.com/punkpeye/awesome-mcp-servers),您可以使用 mcp-agent 构建稳健且可控的 AI 代理,从而开箱即用地利用这些服务。
## 示例
在深入了解 mcp-agent 的核心概念之前,让我们展示一下您可以使用它构建什么。
简而言之,您可以使用 mcp-agent 构建任何类型的 AI 应用程序:多代理协作工作流、人工介入的工作流、RAG 管道等。
### Claude 桌面版
您可以将 mcp-agent 应用程序集成到 MCP 客户端(如 Claude 桌面版)中。
#### mcp-agent 服务器
此应用程序将 mcp-agent 应用程序封装在 MCP 服务器内,并将该服务器暴露给 Claude 桌面版。
该应用程序公开了 Claude 桌面版可以调用的代理和工作流,以满足用户的请求。
https://github.com/user-attachments/assets/7807cffd-dba7-4f0c-9c70-9482fd7e0699
此演示展示了一个多代理评估任务,其中每个代理评估输入诗歌的各个方面,然后聚合器将它们的发现总结为最终响应。
**详情**:从文本开始,用户请求通过以下方式:
- 动态定义执行任务的代理
- 使用合适的工作流来编排这些代理(在本例中为并行工作流)
**代码链接**:[examples/basic/mcp_server_aggregator](./examples/basic/mcp_server_aggregator)
> [!NOTE]
> 感谢 [Jerron Lim (@StreetLamb)](https://github.com/StreetLamb) 开发和贡献此示例!
### Streamlit
您可以使用 Streamlit 部署 mcp-agent 应用程序。
#### Gmail 代理
此应用程序能够使用文本提示对 Gmail 执行读取和写入操作,即读取、删除、发送电子邮件、标记为已读/未读等。
它使用 Gmail 的 MCP 服务器。
https://github.com/user-attachments/assets/54899cac-de24-4102-bd7e-4b2022c956e3
**代码链接**:[gmail-mcp-server](https://github.com/jasonsum/gmail-mcp-server/blob/add-mcp-agent-streamlit/streamlit_app.py)
> [!NOTE]
> 感谢 [Jason Summer (@jasonsum)](https://github.com/jasonsum) 开发和贡献此示例!
#### 简单 RAG 聊天机器人
此应用程序使用 Qdrant 向量数据库(通过 MCP 服务器)对文本 corpus 进行问答。
https://github.com/user-attachments/assets/f4dcd227-cae9-4a59-aa9e-0eceeb4acaf4
**代码链接**:[examples/usecases/streamlit_mcp_rag_agent](./examples/usecases/streamlit_mcp_rag_agent/)
> [!NOTE]
> 感谢 [Jerron Lim (@StreetLamb)](https://github.com/StreetLamb) 开发和贡献此示例!
### Marimo
[Marimo](https://github.com/marimo-team/marimo) 是一个反应式 Python 笔记本,取代了 Jupyter 和 Streamlit。以下是来自 [快速入门](#快速入门) 的“文件查找器”代理在 Marimo 中的实现:
<img src="https://github.com/user-attachments/assets/139a95a5-e3ac-4ea7-9c8f-bad6577e8597" width="400"/>
**代码链接**:[examples/usecases/marimo_mcp_basic_agent](./examples/usecases/marimo_mcp_basic_agent/)
> [!NOTE]
> 感谢 [Akshay Agrawal (@akshayka)](https://github.com/akshayka) 开发和贡献此示例!
### Python
您可以将 mcp-agent 应用程序编写为 Python 脚本或 Jupyter 笔记本。
#### Swarm
此示例演示了使用 Swarm 工作流模式的多代理设置,用于在航空公司上下文中处理不同的客户服务请求。代理可以对请求进行分类、处理航班修改、取消和丢失行李箱等。
https://github.com/user-attachments/assets/b314d75d-7945-4de6-965b-7f21eb14a8bd
**代码链接**:[examples/workflows/workflow_swarm](./examples/workflows/workflow_swarm/)
## 核心组件
以下是 mcp-agent 框架的构建块:
- **[MCPApp](./src/mcp_agent/app.py)**:全局状态和应用程序配置
- **MCP 服务器管理**:[`gen_client](./src/mcp_agent/mcp/gen_client.py) 和 [`MCPConnectionManager`](./src/mcp_agent/mcp/mcp_connection_manager.py) 轻松连接到 MCP 服务器。
- **[代理](./src/mcp_agent/agents/agent.py)**:代理是具有一组 MCP 服务器访问权限的实体,并将它们公开给 LLM 作为工具调用。它有名称和用途(指令)。
- **[增强型 LLM](./src/mcp_agent/workflows/llm/augmented_llm.py)**:增强的 LLM 具有来自一组 MCP 服务器的工具。下面的每个工作流模式都是增强型 LLM 本身,允许您组合和链接它们。
框架中的所有内容都源自这些核心功能。
## 工作流
mcp-agent 提供了 Anthropic 的[构建有效的代理](https://www.anthropic.com/research/building-effective-agents) 中描述的每个模式的实现,以及 OpenAI 的 [Swarm](https://github.com/openai/swarm) 模式。
每个模式都是与模型无关的,并作为增强型 LLM 公开,使所有内容都非常可组合。
### 增强型 LLM
[增强型 LLM](./src/mcp_agent/workflows/llm/augmented_llm.py) 是具有访问 MCP 服务器和功能的 LLM。
LLM 提供商实现增强型 LLM 接口以公开 3 个函数:
- `generate`:根据提示生成消息,可能需要多次迭代并根据需要调用工具。
- `generate_str`:调用 `generate` 并返回结果为字符串输出。
- `generate_structured`:使用 [Instructor](https://github.com/instructor-ai/instructor) 将生成的输出作为 Pydantic 模型返回。
此外,`增强型 LLM` 有内存,以跟踪长期或短期历史。
<details>
<summary>示例</summary>
```python
from mcp_agent.agents.agent import Agent
from mcp_agent.workflows.llm.augmented_llm_anthropic import AnthropicAugmentedLLM
finder_agent = Agent(
name="finder",
instruction="您是具有文件系统 + 获取访问权限的代理。返回请求的文件或 URL 内容。",
server_names=["fetch", "filesystem"],
)
async with finder_agent:
llm = await finder_agent.attach_llm(AnthropicAugmentedLLM)
result = await llm.generate_str(
message="打印 https://www.anthropic.com/research/building-effective-agents 的前 2 个段落",
# 可以覆盖模型、令牌和其他默认值
)
logger.info(f"结果:{result}")
# 多轮对话
result = await llm.generate_str(
message="将这些段落总结为 128 个字符的推文",
)
logger.info(f"结果:{result}")
```
</details)
### [并行](./src/mcp_agent/workflows/parallel/parallel_llm.py)

将任务扇出到多个子代理并聚合结果。每个子任务都是增强型 LLM,整体并行工作流也是增强型 LLM,意味着每个子任务都可以选择更复杂的工作流。
> [!NOTE]
>
> **[完整示例链接](examples/workflows/workflow_parallel/main.py)**
<details>
<summary>示例</summary>
```python
proofreader = Agent(name="proofreader", instruction="Review grammar...")
fact_checker = Agent(name="fact_checker", instruction="Check factual consistency...")
style_enforcer = Agent(name="style_enforcer", instruction="Enforce style guidelines...")
grader = Agent(name="grader", instruction="Combine feedback into a structured report.")
parallel = ParallelLLM(
fan_in_agent=grader,
fan_out_agents=[proofreader, fact_checker, style_enforcer],
llm_factory=OpenAIAugmentedLLM,
)
result = await parallel.generate_str("Student short story submission: ...", RequestParams(model="gpt4-o"))
```
</details>
### [路由器](./src/mcp_agent/workflows/router/)

给定输入,将其路由到 `top_k` 个最相关的类别。类别可以是代理、MCP 服务器或普通函数。
mcp-agent 提供了几种路由器实现,包括:
- [`EmbeddingRouter`](src/mcp_agent/workflows/router/router_embedding.py):使用嵌入模型进行分类
- [`LLMRouter`](src/mcp_agent/workflows/router/router_llm.py):使用 LLM 进行分类
> [!NOTE]
>
> **[完整示例链接](examples/workflows/workflow_router/main.py)**
<details>
<summary>示例</summary>
```python
def print_hello_world:
print("Hello, world!")
finder_agent = Agent(name="finder", server_names=["fetch", "filesystem"])
writer_agent = Agent(name="writer", server_names=["filesystem"])
llm = OpenAIAugmentedLLM()
router = LLMRouter(
llm=llm,
agents=[finder_agent, writer_agent],
functions=[print_hello_world],
)
results = await router.route( # Also available: route_to_agent, route_to_server
request="Find and print the contents of README.md verbatim",
top_k=1
)
chosen_agent = results[0].result
async with chosen_agent:
...
```
</details>
### [意图分类器](./src/mcp_agent/workflows/intent_classifier/)
与路由器类似,意图分类器模式识别与给定输入最匹配的 `top_k` 个意图。
就像路由器一样,mcp-agent 提供了基于嵌入的[分类器](src/mcp_agent/workflows/intent_classifier/intent_classifier_embedding.py)和基于 LLM 的[分类器](src/mcp_agent/workflows/intent_classifier/intent_classifier_llm.py)。
### [编排器-工作线程](./src/mcp_agent/workflows/orchestrator_workers/)
### [评估器-优化器](./src/mcp_agent/workflows/evaluator_optimizer/)
### [OpenAI Swarm](./src/mcp_agent/workflows/swarm/)
## 高级
### 组合多个工作流
### 信号和人类输入
### 应用程序配置
### MCP 服务器管理
评估优化器/mcp_agent/workflows/evaluator_optimizer/evaluator_optimizer.py)
优化器工作流程(:Anthropic)](www.anthropic.com/image?url=https%%2F%2-cdn.anthropic2Fimages%2Fovbb%website%2F14f51e6406ccb29e695da48b17017e899a6119c7-2401x1000.png&w=3840&q=75)
一个大型语言模型(“优化器”)优化响应,另一个(“评估器”)评估它,直到响应超过质量标准。
> [!NOTE]
>
> **[完整示例链接](examples/workflows/workflow_evaluator_optimizer/main.py)**
<summary>示例</```python
optimizer =cover_letter_writer", server_names=["fetch"], instruction="生成一封求职信...")
evaluator = Agent(name="critiquer", instruction="评估清晰度、具体性、相关性...")
llm = EvaluatorOptimizerLLM(
optimizer=optimizer,
evaluator=evaluator,
llm_factory=OpenAIAugmentedLLM,
min_rating=QualityRating.EXCELLENT, # 直到达到最低质量标准
)
result = await eo_llm("为 LastMile AI 的 AI 框架开发人员职位封求职信。")
print("最终优化的求职信:", result)
```
</details>
### [协调器-工作流](src/mcp_agent/workflows/orchestrator.py)

更高级别的大型语言模型生成计划,然后将其分配给子代理,并综合结果。
协调器工作流程自动并行化可以并行执行的步骤,并阻塞依赖项。
> [!NOTE]
>
> **[完整示例链接](examples/workflows/workflow_orchestrator_worker/main.py)**
<details>
<summary>示例</summary>
```python
finder_agent = Agent(name="finder", server_names=["fetch", "filesystem"])
writer_agent = Agent(name="writer", server_names=["filesystem"])
proofreader = Agent(name="proofreader", ...)
fact_checker = Agent(name="fact ...)
style_enforcer = Agent(name="style_enforcer", instructions="使用 APA 样式指南...", server_names=["fetch"])
orchestrator = Orchestrator(
llm_factory=AnthropicAugmentedLLM,
available_agents=[finder_agent, writer_agent, proofreader, fact_checker, style_enforcer],
)
task = "加载 short_story.md,评估它,生成一份带有多个反馈方面的 graded_report.md。"
result = await orchestrator.generate_str(task, RequestParams(model="gpt-4o"))
print(result)
```
</details>
### [群体](src/mcp_agent/workflows/swarm/swarm.py)
OpenAI 有一种实验性的多智能,称为 [群体](https://github.com/openai/sw我们在 mcp-agent 中提供了一种与模型无关的参考实现。
<img src="https://github.com/openai/swarm/blob/main/assets/swarm_diagram.png?raw=true" width=500 />
mcp-agent 群体模式与 MCP 服务器无缝协作,并作为 `AugmentedLLM` 公开,允许与其他上述模式组合。
> [!NOTE]
>
> **[完整示例链接](examples/workflows/workflow_swarm/main.py)**
<details>
<summary>示例</summary>
```python
triage_agent = SwarmAgent(...)
flight_mod_agent = SwarmAgent(...)
lost_baggage_agent = SwarmAgent(...)
# 三级代理决定是将任务路由到 flight_mod_agent 还是 lost_baggage_agent
swarm = AnthropicSwarm(agent=triage_agent, context_variables={...})
test_input = "我的行李没有被送达!"
result = await swarm.generate_str(test_input)
print("结果:", result)
```
</details>
## 高级
### 组合性
组合性的一个示例是在 [协调器-工作流](#协调器-工作流) 中使用 [评估优化器](#评估优化器) 工作流作为计划 LLM。
生成高质量的计划以执行对于稳健的行为非常重要,而评估优化器可以帮助确保这一点。
在 mcp-agent 中非常简单,因为每个工作流都实现为 `AugmentedLLM`。
<details>
<summarysummary>
```python = Agent(name="plan_names=[...], instruction="根据目标生成计划 = Agent(name="valuator", instruction="评估计划的逻辑、顺序和精度...")
planner_llm = EvaluatorOptimizerLLM(
optimizer=optimizer,
evaluator=evaluator,
llm_factory=OpenAIAugmentedLLM,
min_rating=QualityRating.EXCELLENT,
)
= Orchestrator(
llm_factory=ropicAugmentedLLM available_agents=[finder_agent, proofreader_checker, style_enforcer planner=planner_llm # 就是这样简单
)
...
```
</details>
### 信号和人类输入
**信号**:框架可以暂停/恢复任务。代理或大型语言模型可能会“信号”它需要用户输入,因此工作流会等待。
开发人员可能需要在工作流中发出信号以寻求批准或在继续工作流之前进行审查。
**人类输入如果代理具有 `human_input_callback`,大型语言模型可以调用 `__human_input__` 工具在工作流中请求用户输入。
<details>
<summary>示例</summary>
[群体示例](examples/workflows/workflow_swarm/main.py) 展示了这一点。
```python
cp_agent.human_input.handler import console_input_callback
lost_baggage = SwarmAgent(
name="Lost baggage traversal",
instruction=lambda context_variables: f"""
{
FLY_AIR_AGENT_PROMPT.format(
customer_context=context_variables.get("customer_context", "None"),
flight_context=context_variables.get("flight_context", "None"),
)
}\n Lost baggage policy: policies/lost_baggage_policy.md""",
functions=[
escalate_to_agent,
initiate_baggage_search,
transfer_to_triage,
case_resolved,
],
server_names=["fetch", "filesystem"],
human_input_callback=console_input_callback, # 从控制台请求输入
)
```
</details>
### 应用配置
创建 [`mcp_agent.config.yaml`](/schema/mcp-agent.config.schema.json) 和一个 gitignored [`mcp_agent.secrets.yaml`](./examples/basic/mcp_basic_agent/mcp_agent.secrets.yaml.example) 以定义 MCP 应用配置。
这控制日志记录、执行、LLM 提供商 API 和 MCP 服务器配置。
### MCP 服务器管理
mcp使得连接到 MCP 服务器变得非常简单。
创建 [`m.config.yaml`](/schema/mcp-agent.config.schema.json `mcp定义服务器配置:
mcp:
fetch:
"uvx"
["mcp-server-fetch"]
description: "从网获取内容"
[`gen_client`](src_agent/mcp/gen)
在异步上下文管理器中管理 MCP 服务器的生命周期:python
from m.mcp.gen_client importasync with gen_client("fetch") as fetch_client:
# Fetch 服务器已初始化并准备好使用
result = await fetch_client.list_tools()
# Fetch 服务器自动断开/关闭
```
`gen_client` 函数使得启动到 MCP 服务器的连接变得容易。
#### 持久服务器连接
在许多情况下,您希望 MCP 服务器保持在线以供持久使用(例如,在多步骤工具使用工作流中)。
对于持久连接,请使用:
- [`connect`](<(src/mcp_agent/mcp/gen_client.py)>) 和 [`disconnect`](src/mcp_agent/mcp/gen_client.py)
```python
from mcp_agent.mcp.gen_client import connect, disconnect
fetch_client = None
try:
fetch_client = connect("fetch")
result = await fetch_client.list_tools()
finally:
disconnect("```
- [`MCPConnectionManager`](src/m/mcp/mcp_connection_manager.py)
对于服务器连接的更精细控制,可以使用 MCPConnectionManager。
<details>
<summary>示例</summary>
```python
from mcp_agent.context import get_current_context
from mcp_agent.mcp.mcp_connection_manager import MCPConnectionManager
context = get_current_context()
connection_manager = MCPConnectionManager(context.server_registry)
async with connection_manager:
fetch_client = await connection_manager.get_server("fetch") # 初始化 fetch 服务器
result =.list_tool()
fetch_client2 = await connection_manager.getfetch") # 重用相同的服务器连接
# 连接管理器管理的所有服务器都自动断开/关闭
```
</details>
#### MCP 服务器聚合[`MCPAggregator`](src/mcp_agentcp_aggreg 充当中的服务器”。
它为 MCP 服务器交互提供的 MCP 服务器接口。
您将多个服务器公开给 LLM <details>
<summary>summary>
```python
from mcp_agent.mcp_aggregator import MCPAggregator
= await MCPAgg(server_names=["fetch", "filesystem"])
asyncator:
# 'fetch' 和 'filesystem'工具的综合列表
tools = await aggreg_tools()
# 命名空间 -- 调用 'fetch调用 'fetch' 工具
fetch_result = await aggregator.call_toolfetch-fetch", arguments={"https://www.anthropic.com/research/buildingents"})
# 无命名空间 -- 中第一个公开该工具的服务器优先
_result = await aggreg_tool(name="read arguments={})
```
</details>
## 贡献
我们形式的贡献。
阅 [贡献指南](./CONTRIBUTING.md) 以开始。
### 特别感谢
已经有许多令人难以置信的社区贡献者推动了这个项目的进展:
- [Shaun Smith (@)](https://github.comstate) -- 他对 `mcp 和整个 MCP 生态项复杂改进。
Jerron LimLamb)](https://github.com/StreetLamb) -- 他为项目贡献了无数小时和优秀的伟大的想法。
- [Jason Summer (@jasonsum)](https://github.com/jasonsum) -- 他发现了几个问题,并将他的 Gmail MCP 服务器适配到与 mcp-agent 配合使用
## 路线图
我们将添加一个详细的路线图(理想情况下由您的反馈驱动)。
当前的优先级包括:
- **持久执行** -- 允许工作流暂停/恢复和序列化状态,以便它们可以重放或无限期暂停。
我们正在使用 [Temporal](./src/mcp_agent/executor/temporal.py此目的的集成 **内存** --长期内存的支持
- **流媒体** -- 支持迭代流媒体监听器
- **附加 MCP -- 扩展超出以支持:
- 提示
- 通知
常见问题
###cp-agent 的核心?
mcp-agent使用由 **M (模型上下文协议公开的功能构建 AI的简化方法。
相当底层,而该框架处理连接服务器、使用大型语言模型、处理外部信号(例如人类输入)以及通过持久执行支持持久状态等机制。
这让开发者可以专注于 AI 应用程序的核心业务逻辑。
核心好处:
- 🤝 **互操作性**:确保任何 MCP 服务器公开的工具都可以无缝地插入到您的代理中。
- ⛓️ **组合性和可定制性**:实施定义明确的工作流程,但以可组合的方式实现复合工作流程,并允许在模型提供商、日志记录、协调器等方面进行完全自定义。
- 💻 **程序控制流**:保持简单,因为开发者只需编写代码,而不必思考图形、节点和边。
对于分支逻辑,您编写 `if` 语句。对于循环,使用 `while` 循环。
- 🖐️ **人类输入和信号**:支持暂停工作流以获取外部信号,例如人类输入,这些信号作为工具调用公开,代理可以进行调用。
### 使用 mcp-agent 需要 MCP 客户端吗?
不需要,您可以在任何地方使用 mcp-agent,因为它为您处理 MCPClient 的创建。
这允许您在不使用 MCP 客户端的情况下利用 MCP 服务器。
以下是设置 m 应用程序的方法:
#### MCP-Agent 服务器
您可以将 mcp-agent 应用程序公开为 MCP 服务器本身(请参见 [示例](./examples/basic/mcp_agent_server)),允许 MCP 客户端使用标准的 MCP 服务器工具 API 与复杂 AI 工作流交互。
这实际上是一个服务器中的服务器。
#### MCP 客户端或主机
您可以直接在 MCP 客户端中嵌入 mcp-agent 以管理多个 MCP 服务器之间的协调。
#### 独立
您可以在独立模式下使用 mcp-agent 应用程序(即它们不是 MCP 客户端的一部分)。
`[示例](/examples/)` 都是独立应用程序。
### 有趣的事实
我曾经考虑将这个项目命名为 _silsila_ ( سلسلہ ),这在乌尔都语中意味着事件链。
mcp-agent 更为直截了当,但项目中仍有一个复活节彩蛋,向 silsila 致敬。
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器