Skip to main content

Adapt MCP servers to many agentic framework.

Project description

MCPAdapt

MCPAdapt Logo

PyPI version Python versions Tests License PyPI downloads GitHub Repo stars

For more context, guides and API references visit our new documentation.

Unlock 650+ MCP servers tools in your favorite agentic framework.

Model Context Protocol is an open-source protocol introduced by Anthropic which allows anyone to simply and quickly make tools and resources available as "MCP Servers".

Since its release more than 650 MCP servers have been created giving access to many data & tools to supported "MCP Client".

This project makes calling any MCP servers tools seemless from any agentic framework. Virtually providing your agentic worfklow access to 650+ MCP servers tools.

Look at glama.ai or smithery.ai to give you an idea of what your agent could access.

Installation Instructions

Smolagents

Smolagents 1.4.1 and above directly ships with mcpadapt integrated in their tool collections object. It means you can directly use it from smolagents:

uv add smolagents[mcp]

Other Frameworks

Each agent framework has its own set of optional dependencies to not clutter with useless dependencies. You choose the flavor you want by adding your framework in brackets in the installation command.

# with uv
uv add mcpadapt[langchain]

# or with pip
pip install mcpadapt[langchain]

Framework supported at the moment: smolagents, langchain, crewAI, google-genai.

You can also add multiple framework comma separated if needed.

Usage

⚠️ Security Warning: When using MCP servers, especially over SSE (Server-Sent Events), be extremely cautious and only connect to trusted and verified servers. Always verify the source and security of any MCP server before connecting.

Smolagents

Since mcpadapt is part of smolagents simple use tool collection from smolagents like:

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!

Other Frameworks

MCPAdapt adapt any MCP servers into tools that you can use right in your agentic workflow:

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 supports Smolagents, Langchain, CrewAI, google-genai [pydantic.dev, Llammaindex and more...]*. *coming soon.

Note: you can also specify multiple mcp servers as in:

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.
    ...

We also support async if the underlying agentic framework supports it.

See our examples for more details on how to use.

Contribute

If your favorite agentic framework is missing no problem add it yourself it's quite easy:

  1. create a new module in 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. and that's it, test that your adapter is working and send us a PR to share it with the world.

Roadmap

  • initial framework for anyone to start creating adapters
  • support for smolagents
  • support for pydantic-ai
  • support for langchain
  • support for llamaindex
  • support for swarm
  • support for crewAI
  • support for google genai
  • support for remote MCP Servers via SSE
  • support for jupyter notebook
  • add tests

Contributors

We acknowledge the work and thanks every contributors and maintainers for their contributions.

Core Maintainers:

Contributors:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcpadapt-0.1.7.tar.gz (3.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcpadapt-0.1.7-py3-none-any.whl (17.0 kB view details)

Uploaded Python 3

File details

Details for the file mcpadapt-0.1.7.tar.gz.

File metadata

  • Download URL: mcpadapt-0.1.7.tar.gz
  • Upload date:
  • Size: 3.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for mcpadapt-0.1.7.tar.gz
Algorithm Hash digest
SHA256 450a1e1e681088aef6129351d6666c9ecf71e5dc49a3ce46c44230111f987697
MD5 c83b1ec0ba6aa443a28c05fefe2ab2af
BLAKE2b-256 fc150e6b412dc81e30577adde9f69c0c075d9f0a47a735cdd20cfec33875279e

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcpadapt-0.1.7.tar.gz:

Publisher: release.yml on grll/mcpadapt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mcpadapt-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: mcpadapt-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 17.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for mcpadapt-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 8fd686d36ca06464ec76b651d46e5c13c212e2c88c33b08d30b8f953e8421705
MD5 cecf0aef64ced4d7a0ebb330d1c5c31f
BLAKE2b-256 b29ad68d0f0235fda5c7b4aac141519f02f5af62f642374b51cbf5a3e5b7d4bf

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcpadapt-0.1.7-py3-none-any.whl:

Publisher: release.yml on grll/mcpadapt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page