MCP协议适配工具

MCPAdapt是一个开源工具,用于将650多个MCP服务器的工具无缝集成到任何代理框架中,扩展代理工作流的功能。

  • by grll
  • Python
  • 本地部署
  • 425 星标
  • 更新于
在 GitHub 查看 grll/mcpadapt

使用说明

MCPAdapt

有关更多上下文、指南和API参考资料,请访问我们的新 文档.

解锁您最喜欢的代理框架中的650多个MCP服务器工具。

模型上下文协议是Anthropic引入的一种开源协议,它允许任何人简单快速地将工具和资源作为“MCP服务器”提供。

自发布以来,已经创建了650多台MCP服务器,可以访问受支持的“MCP客户端”的许多数据和工具。

该项目使从任何代理框架调用任何MCP服务器工具都变得无缝。几乎为您的代理工作提供了对650多个MCP服务器工具的访问。

看 glama.ai 或 史密斯艾 让你知道你的代理人可以访问什么。

安装说明

斯莫尔特工

Smolfagents 1.4.1及以上版本直接附带了集成在其工具集合对象中的mcpadapt。 这意味着您可以直接从烟雾中使用它:

uv add smolagents[mcp]

其他框架

每个代理框架都有自己的一组可选依赖关系,以免被无用的依赖关系弄乱。 您可以通过在安装命令的括号中添加框架来选择所需的风格。

# with uv
uv add mcpadapt[langchain]

# or with pip
pip install mcpadapt[langchain]

目前支持的框架:smolagents、langchain、crewAI、谷歌genai。

如果需要,您还可以添加多个逗号分隔的框架。

用法

⚠️ 安全警告:使用MCP服务器时,特别是通过SSE(服务器发送事件)时,要格外小心,只连接到受信任和经过验证的服务器。在连接之前,始终验证任何MCP服务器的来源和安全性。

斯莫尔特工

由于mcpadapt是烟雾简单使用工具集合的一部分,例如:

from mcp import StdioServerParameters
from smolagents.tools import ToolCollection

serverparams = StdioServerParameters(command="uv", args=["run", "src/echo.py"])

with ToolCollection.from_mcp(serverparams) as tool_collection:
    ... # enjoy your tools!

其他框架

MCPAdapt将任何MCP服务器调整为您可以在代理工作流程中正确使用的工具:

from mcp import StdioServerParameters
from mcpadapt.core import MCPAdapt
from mcpadapt.smolagents_adapter import SmolAgentsAdapter

with MCPAdapt(
    # specify the command to run your favorite MCP server (support also smithery and co.)
    StdioServerParameters(command="uv", args=["run", "src/echo.py"]),
    # or a dict of sse server parameters e.g. {"url": http://localhost:8000, "headers": ...}

    # specify the adapter you want to use to adapt MCP into your tool in this case smolagents.
    SmolAgentsAdapter(),
) as tools:
    # enjoy your smolagents tools as if you wrote them yourself
    ...

MCP Adapt支持Smolfagents、Langchain、CrewAI、谷歌genai[pydantic.dev、Llamanidex等…]*。 *即将到来。

注意:您还可以指定多个mcp服务器,如下所示:

from mcp import StdioServerParameters
from mcpadapt.core import MCPAdapt
from mcpadapt.smolagents_adapter import SmolAgentsAdapter

with MCPAdapt(
    [
        StdioServerParameters(command="uv", args=["run", "src/echo1.py"]),
        StdioServerParameters(command="uv", args=["run", "src/echo2.py"]),
    ],
    SmolAgentsAdapter(),
) as tools:
    # tools is now a flattened list of tools from the 2 MCP servers.
    ...

如果底层代理框架支持异步,我们也支持异步。

查看我们的 示例 有关如何使用的更多详细信息。

贡献

如果你最喜欢的代理框架缺失了,那么你可以自己添加它,这很容易:

  1. 在中创建新模块 src/mcpadapt/{name_of_your_framework}_adapter.py:
class YourFrameworkAdapter(ToolAdapter):
    def adapt(
        self,
        func: Callable[[dict | None], mcp.types.CallToolResult],
        mcp_tool: mcp.types.Tool,
    ) -> YourFramework.Tool:
        # HERE implement how the adapter should convert a simple function and mcp_tool (JSON Schema)
        # into your framework tool. see smolagents_adapter.py for an example
    
    def async_adapt(
        self,
        afunc: Callable[[dict | None], Coroutine[Any, Any, mcp.types.CallToolResult]],
        mcp_tool: mcp.types.Tool,
    ) -> YourFramework.Tool:
        # if your framework supports async function even better use async_adapt.
  1. 就是这样,测试你的适配器是否正常工作,并向我们发送一份PR,与全世界分享。

路线图

  • [x] 任何人开始创建适配器的初始框架
  • [x] 支持烟雾
  • []支持皮丹蒂奇·艾
  • [x] 支持langchain
  • []支持llamaindex
  • []支持swarm
  • [x] 对乘员AI的支持
  • [x] 支持谷歌genai
  • [x] 通过SSE支持远程MCP服务器
  • [x] 支持jupyter笔记本
  • [x] 添加测试

贡献者

我们认可这项工作,并感谢每一位贡献者和维护者的贡献。

核心维护人员:

贡献者: