Back to MCP directory
publicPublicdnsLocal runtime

mcp-agent

mcp-agent是一个基于Model Context Protocol(MCP)的轻量级AI代理框架,支持通过简单可组合的模式构建高效代理应用。它集成了MCP服务器的生命周期管理,并实现了多种工作流模式,如并行处理、路由、评估优化等,适用于多代理协作、人机交互等多种AI应用场景。

article

README

🚀 MCP代理

MCP-Proxy 是一个用于简化构建AI代理的框架,借助MCP(模型上下文协议)服务器的能力。MCP属于低层次协议,而该框架负责处理与服务器的连接、与大语言模型(LLMs)的交互、处理外部信号(如人类输入),以及支持持久状态等功能,让你能够专注于业务逻辑。

✨ 主要特性

  • 互操作性:确保MCP服务器提供的任何工具都能无缝集成到你的代理中。
  • 可组合性和定制性:可实现定义良好的工作流,并以可组合的方式进行扩展,允许在模型提供商、日志记录、编排器等方面进行完全定制。
  • 编程控制流:保持简单,开发者只需编写代码,无需考虑图形节点和边。对于分支逻辑,可使用if语句;对于循环,使用while循环。
  • 人类输入与信号:支持暂停工作流以获取外部信号,如人类输入,这些信号可作为代理调用的工具。

🚀 快速开始

📦 安装指南

要使用MCP-Proxy,首先需要安装必要的依赖:

pip install mcp-proxy[mpl,asyncio]

💻 使用示例

基础用法

以下是一个简单的示例,展示了如何创建一个基本的AI代理:

from mcp_proxy.agent import Agent
from mcp_proxy.llm import LLMOptions
import asyncio

# 创建一个配置对象
config = {
    "llm": {
        "provider": "anthropic",  # 支持:anthropic, openai, huggingface, etc.
        "model": "claude-2"
    },
    "logging": {
        "enabled": True,
        "level": "INFO",
        "output_file": "agent.log"
    }
}

# 创建一个LLM选项对象
llm_options = LLMOptions()

# 定义代理类
class MyAgent(Agent):
    async def main(self):
        # 这里可以编写任何异步逻辑
        await self.call_tool("fetch_url", arguments={"url": "https://example.com"})

# 创建并运行代理
async def run():
    agent = MyAgent(config=config, llm_options=llm_options)
    await agent.start()

if __name__ == "__main__":
    asyncio.run(run())

📚 详细文档

更多详细信息请参考MCP-Proxy文档

🔧 技术细节

贡献

我们欢迎任何形式的贡献。请查看CONTRIBUTING指南以了解如何开始。

特别鸣谢

已经有社区成员为这个项目做出了巨大贡献:

  • Shaun Smith (@evalstate) —— 在无数复杂的改进上带领团队,无论是mcp-proxy还是更广泛地在MCP生态系统中。
  • Jerron Lim (@StreetLamb) —— 贡献了无数小时和优秀的示例,并为项目提出了很好的想法。
  • Jason Summer (@jasonsum) —— 识别了许多问题,并将其Gmail MCP服务器改编为与mcp-proxy一起使用。

路线图

我们计划根据你的反馈制定一个详细的路线图。当前的主要优先事项包括:

  • 持久执行 —— 允许工作流暂停/恢复并序列化状态,以便可以重放或无限期暂停。我们正在集成Temporal来实现这一点。
  • 记忆 —— 添加对长期记忆的支持
  • 流式处理 —— 支持流式监听器以进行迭代进度更新
  • MCP扩展功能 —— 除了工具调用之外,还支持以下内容:
    • 资源
    • 提示
    • 通知

常见问题

使用MCP-Proxy的核心优势是什么?

MCP-Proxy提供了一种简化的构建AI代理的方法,利用MCP服务器提供的能力。

MCP是一个低层次协议,而这个框架处理了连接到服务器、与大语言模型(LLMs)交互、处理外部信号(如人类输入)以及支持持久状态的功能,使你可以专注于业务逻辑的核心。

核心优势:

  • 互操作性:确保任何由MCP服务器提供的工具都能无缝集成。
  • 可组合性和定制性:实现定义良好的工作流,并且在一种可组合的方式下扩展,允许在模型提供商、日志记录、编排器等方面进行完全定制。
  • 编程控制流:保持简单,因为开发者只需编写代码,而不是考虑图形节点和边。对于分支逻辑,你可以使用if语句;对于循环,使用while循环。
  • 人类输入与信号:支持工作流的暂停以获取外部信号,如人类输入,这些信号可以作为代理可以调用的工具。

需要MCP服务器才能使用MCP-Proxy吗?

是的,MCP-Proxy需要一个MCP服务器来提供工具和服务。你可以使用现有的MCP服务器或创建你自己的。

如何扩展MCP-Proxy的功能?

可以通过创建自定义工具和命令来扩展MCP-Proxy的功能。这些可以在Agent类中定义,并通过call_tool方法调用。

MCP-Proxy支持哪些LLM提供商?

目前支持的主要提供商包括:

  • Anthropic:支持模型如Claude 2、Claude 3等。
  • OpenAI:支持模型如GPT-4、GPT-3.5等。
  • Hugging Face:支持各种基于Transformers的模型。

更多提供商可以通过扩展框架轻松添加。

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client