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的模型。
更多提供商可以通过扩展框架轻松添加。
扫码联系在线客服