LangChain MCP注册表集成工具

LangChain MCP注册表集成工具是一个用于将MCP注册表服务器无缝集成到LangChain工作流中的工具,支持自动发现、零配置和多种传输协议。

  • by ChangjunZhao
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 ChangjunZhao/langchain-mcp-registry

使用说明

🔗 LangChain MCP 注册表

将MCP注册表服务器无缝集成到您的LangChain工作流中

🌟 特点

  • 🔍(放大镜,表示搜索、查看细节等动作) 自动发现从官方注册表中搜索并发现MCP服务器
  • 🔄 旋转(或循环) 无缝集成将注册表服务器转换为兼容LangChain的工具
  • 🚀 表示火箭、快速前进或突破,也可以象征着速度和能量。在没有具体上下文的情况下,这个表情通常被用来表达一种积极向上、充满活力或期待进步的情绪。 零配置开箱即用,具备合理的默认设置
  • 🛡️ 翻译为中文是“护盾”。 类型安全完整的类型提示和 Pydantic 模型
  • 🎯(目标、瞄准) 命令行界面(CLI)与Python API通过命令行或编程方式使用
  • 📦 箱子/包裹 多种运输方式支持stdio、HTTP、SSE

🚀 快速入门

安装

pip install langchain-mcp-registry

Python API

from langchain_mcp_registry import MCPRegistryClient
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent

# 1. Discover servers from registry
async with MCPRegistryClient() as client:
    servers = await client.search_servers(query="weather")

    # 2. Auto-convert to LangChain tools
    tools = await client.load_tools(servers[0])

    # 3. Use in LangChain agent
    llm = ChatOpenAI(model="gpt-4")
    agent = create_react_agent(llm, tools)

    result = await agent.ainvoke({
        "messages": [{"role": "user", "content": "What's the weather in SF?"}]
    })

CLI 使用方法

# Search for servers
mcp-registry search weather

# List server details
mcp-registry info @modelcontextprotocol/server-brave-search

# Install and test a server
mcp-registry install @modelcontextprotocol/server-brave-search
mcp-registry test brave-search "search for AI news"

📚 文档

注册表客户端

from langchain_mcp_registry import MCPRegistryClient

client = MCPRegistryClient(
    registry_url="https://registry.modelcontextprotocol.io",
    timeout=30.0,
    cache_ttl=3600
)

# Search with filters
servers = await client.search_servers(
    query="github",
    limit=10,
    version="latest"
)

# Get server details
server_details = await client.get_server_details(
    name="@modelcontextprotocol/server-github",
    version="latest"
)

配置转换器

from langchain_mcp_registry import RegistryToMCPConverter

converter = RegistryToMCPConverter()

# Convert registry server to MCP config
mcp_config = converter.convert(registry_server)
# Output: {"command": "npx", "args": [...], "env": {...}}

# Validate configuration
is_valid = converter.validate_config(mcp_config)

工具加载器

from langchain_mcp_registry import MCPToolLoader

loader = MCPToolLoader()

# Load tools from registry server
tools = await loader.load_from_registry(
    server_name="@modelcontextprotocol/server-everything",
    version="latest"
)

# Load multiple servers
all_tools = await loader.load_multiple([
    "server-brave-search",
    "server-github",
    "server-filesystem"
])

🏗️ 建筑学

┌─────────────────────────────────────────────────────────┐
│                    LangChain Agent                      │
└────────────────────┬────────────────────────────────────┘
                     │
                     ▼
┌─────────────────────────────────────────────────────────┐
│              LangChain MCP Registry                     │
│  ┌──────────────┐  ┌────────────┐  ┌─────────────┐    │
│  │   Registry   │  │ Converter  │  │    Tool     │    │
│  │   Client     │─▶│  (R → M)   │─▶│   Loader    │    │
│  └──────────────┘  └────────────┘  └─────────────┘    │
└────────────────────┬────────────────────────────────────┘
                     │
                     ▼
┌─────────────────────────────────────────────────────────┐
│          MCP Registry (modelcontextprotocol.io)         │
└─────────────────────────────────────────────────────────┘

🔧 高级用法

自定义注册表

client = MCPRegistryClient(
    registry_url="https://your-private-registry.com",
    headers={"Authorization": "Bearer YOUR_TOKEN"}
)

错误处理

from langchain_mcp_registry.exceptions import (
    ServerNotFoundError,
    InvalidConfigError,
    RegistryConnectionError
)

try:
    tools = await client.load_tools("non-existent-server")
except ServerNotFoundError:
    print("Server not found in registry")
except InvalidConfigError as e:
    print(f"Invalid configuration: {e}")

缓存

# Enable local caching for faster repeated access
client = MCPRegistryClient(
    cache_enabled=True,
    cache_ttl=7200,  # 2 hours
    cache_dir="~/.mcp-registry-cache"
)

🤝 贡献(或:参与贡献)

欢迎投稿!请参阅 CONTRIBUTING.md 翻译为中文是:“贡献指南.md” 或 “如何贡献.md”(具体翻译可能根据上下文有所调整,但基本意思是关于如何参与贡献的指南文件) 详情如下。

📄 许可证

MIT 许可证 - 详见 许可证 文件中详述。

🙏 致谢

🔗 链接

  • PyPIhttps://pypi.org/project/langchain-mcp-registry/ 翻译为中文是:“https://pypi.org 上的 langchain-mcp-registry 项目”
  • GitHubhttps://github.com/ChangjunZhao/langchain-mcp-registry(中文翻译:https://github.com/张长军/langchain-MCP注册表)
  • 问题https://github.com/ChangjunZhao/langchain-mcp-registry/issues 的中文翻译是:“GitHub上的ChangjunZhao的langchain-mcp-registry项目的问题页面”

为LangChain和MCP社区用心打造