Token导航 LogoToken导航TokenDH.com
lc2MCP (Xiaotonng) logo
运维云端stdio官方级别未说明来源级核验

lc2MCP (Xiaotonng)

MCP Server

lc2mcp是一个轻量级适配器,可将LangChain工具转换为FastMCP工具,使您能够快速构建可供Claude、Cursor和任何MCP兼容客户端访问的MCP服务器。

工具数

0

提示词数

0

GitHub Stars

69

资源数

0
PythonClaudeAI工具集成ClaudeCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

xiaotonng

提供方

xiaotonng

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install lc2mcp

详细介绍

lc2mcp

](https://pypi.org/project/lc2mcp/) ](https://pypi.org/project/lc2mcp/) ![License: MIT](https://opensource.org/licenses/MIT)

将LangChain工具转换为FastMCP工具——只需一行代码。

停止重写你的工具。只是适应他们。

lc2mcp 是一个轻量级的适配器,可以转换现有的 LangChain工具 进入 FastMCP工具,使您能够快速构建可供Claude、Cursor和任何MCP兼容客户端访问的MCP服务器。

______________________________________________________________________

✨ 特性

特性描述
🔄 即时转换一个函数调用,将任何LangChain工具转换为FastMCP工具
📦 生态系统接入解锁1000多个LangChain社区工具(搜索、维基百科、SQL、API……)
🎯 零沸点板自动媒染剂→ JSON模式转换
🔐 上下文注入将身份验证、用户信息和请求上下文传递给工具
📊 进度和记录完全支持MCP进度通知和日志记录
🏷️ 命名空间支持为工具名称添加前缀并自动处理冲突

______________________________________________________________________

🚀 快速开始

安装

pip install lc2mcp

通往MCP的3条线路

from langchain_core.tools import tool
from fastmcp import FastMCP
from lc2mcp import register_tools

@tool
def get_weather(city: str) -> str:
    """Get current weather for a city."""
    return f"Sunny, 25°C in {city}"

mcp = FastMCP("weather-server")
register_tools(mcp, [get_weather])  # ← That's it!

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

您的工具现在可供Claude、Cursor和任何MCP客户端使用。

刀具参数说明

要在MCP工具模式中包含参数描述,您有两个选项:

选项1:使用 parse_docstring=True (为简单起见,建议使用)

@tool(parse_docstring=True)
def get_weather(city: str, unit: str = "celsius") -> str:
    """Get current weather for a city.

    Args:
        city: The name of the city to query
        unit: Temperature unit (celsius or fahrenheit)
    """
    return f"Sunny, 25°C in {city}"

选项2:使用 args_schema (建议用于复杂类型)

from pydantic import BaseModel, Field

class WeatherInput(BaseModel):
    city: str = Field(description="The name of the city to query")
    unit: str = Field(default="celsius", description="Temperature unit")

@tool(args_schema=WeatherInput)
def get_weather(city: str, unit: str = "celsius") -> str:
    """Get current weather for a city."""
    return f"Sunny, 25°C in {city}"
注: 没有 parse_docstring=Trueargs_schema,将不会提取文档字符串中的参数描述。

______________________________________________________________________

🔌 运作原理

┌─────────────────┐      ┌─────────────┐      ┌─────────────────┐
│  LangChain Tool │ ───▶ │   lc2mcp    │ ───▶ │  FastMCP Tool   │
│  (@tool, etc.)  │      │  (adapter)  │      │                 │
└─────────────────┘      └─────────────┘      └────────┬────────┘
                                                       │
                                                       ▼
                                              ┌─────────────────┐
                                              │  FastMCP Server │
                                              └────────┬────────┘
                                                       │
                                                       ▼
                                          ┌───────────────────────┐
                                          │      MCP Clients      │
                                          │ (Claude, Cursor, ...) │
                                          └───────────────────────┘

______________________________________________________________________

🔄 lc2mcp与langchain mcp适配器

LangChain和MCP生态系统可以连接 双向:

方向工具描述
LangChain→ MCPlc2mcp将LangChain工具转换为MCP工具(本项目)
MCP → LangChainlangchain-mcp-adapters将MCP工具转换为LangChain工具(官方)

何时使用 lc2mcp:

  • 您有现有的LangChain工具,并希望通过MCP公开它们
  • 您想使用LangChain丰富的工具生态系统构建MCP服务器
  • 您需要为Claude、Cursor或其他MCP客户端提供工具

何时使用 langchain-mcp-adapters:

  • 您有MCP服务器,并希望在LangChain代理中使用它们
  • 您想从LangGraph工作流调用MCP工具

两者结合使用:

┌─────────────────────────────────────────────────────────────────┐
│                        Your Application                         │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│   LangChain Tools ──── lc2mcp ────▶ MCP Server ──▶ MCP Clients │
│         │                              │          (Claude, etc) │
│         │                              │                        │
│         ▼                              ▼                        │
│   LangChain Agent ◀── langchain-mcp-adapters ─── MCP Tools     │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

这两个库是互补的,可以一起用来构建连接LangChain和MCP生态系统的强大AI应用程序。

______________________________________________________________________

📚 例子

使用社区工具

立即将DuckDuckGo搜索和维基百科暴露给MCP客户端:

pip install lc2mcp langchain-community duckduckgo-search wikipedia
from fastmcp import FastMCP
from langchain_community.tools import DuckDuckGoSearchRun, WikipediaQueryRun
from langchain_community.utilities import WikipediaAPIWrapper
from lc2mcp import register_tools

mcp = FastMCP("knowledge-server")

register_tools(mcp, [
    DuckDuckGoSearchRun(),
    WikipediaQueryRun(api_wrapper=WikipediaAPIWrapper()),
])

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

使用身份验证上下文

将用户身份验证和应用程序上下文注入到您的工具中:

from dataclasses import dataclass
from fastmcp import Context, FastMCP
from langchain_core.tools import tool
from langgraph.prebuilt import ToolRuntime
from lc2mcp import register_tools

@dataclass(frozen=True)
class UserContext:
    user_id: str
    tenant_id: str

@tool
def whoami(runtime: ToolRuntime[UserContext]) -> str:
    """Return the current user."""
    return f"Hello, user {runtime.context.user_id} from {runtime.context.tenant_id}"

def runtime_adapter(mcp_ctx: Context) -> ToolRuntime[UserContext]:
    return ToolRuntime(
        context=UserContext(
            user_id=mcp_ctx.get_state("user_id") or "anonymous",
            tenant_id=mcp_ctx.get_state("tenant_id") or "default",
        ),
        state={}, config={}, stream_writer=lambda x: None,
        tool_call_id=None, store=None,
    )

mcp = FastMCP("auth-server")
register_tools(mcp, [whoami], runtime_adapter=runtime_adapter)

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

带有进度报告和记录功能

使用MCP上下文进行实时进度更新和记录:

from fastmcp import Context, FastMCP
from langchain_core.tools import tool
from lc2mcp import register_tools

@tool
async def process_data(data: str, mcp_ctx: Context) -> str:
    """Process data with progress reporting."""
    await mcp_ctx.info(f"Starting: {data}")
    await mcp_ctx.report_progress(0, 100, "Starting")
    
    # ... processing steps ...
    await mcp_ctx.report_progress(50, 100, "Processing")
    
    await mcp_ctx.info("Complete!")
    await mcp_ctx.report_progress(100, 100, "Done")
    return f"Processed: {data}"

mcp = FastMCP("processor")
register_tools(mcp, [process_data], inject_mcp_ctx=True)

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

命名空间和冲突处理

使用前缀组织工具并处理名称冲突:

from fastmcp import FastMCP
from lc2mcp import register_tools

mcp = FastMCP("multi-domain")

# Prefix all finance tools
register_tools(mcp, finance_tools, name_prefix="finance.")

# Auto-suffix on collision: tool → tool_2 → tool_3
register_tools(mcp, ops_tools, name_prefix="ops.", on_name_conflict="suffix")

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

______________________________________________________________________

📖 api参考

register_tools()

在服务器上将LangChain工具转换并注册为FastMCP工具。

register_tools(
    mcp: FastMCP,
    tools: list[BaseTool | Callable],
    *,
    name_prefix: str | None = None,           # e.g. "finance." → "finance.get_stock"
    on_name_conflict: str = "error",          # "error" | "overwrite" | "suffix"
    inject_mcp_ctx: bool = False,             # inject mcp_ctx: Context
    runtime_adapter: Callable | None = None,  # Context → ToolRuntime[...]
)

to_mcp_tool()

将单个LangChain工具转换为FastMCP工具进行手动注册。

to_mcp_tool(
    tool: BaseTool | Callable,
    *,
    name: str | None = None,
    description: str | None = None,
    args_schema: Type[BaseModel] | None = None,
    inject_mcp_ctx: bool = False,
    runtime_adapter: Callable | None = None,
) -> Callable

______________________________________________________________________

🔧 兼容性

组件支持的版本
Python3.10、3.11、3.12+
郎链>=1.0.0
FastMCP>=2.0.0

工具支持

工具类型状态
@tool 装饰功能✅ 全力支持
@tool(parse_docstring=True)✅ 完全支持(带参数说明)
@tool(args_schema=...)✅ 完全支持(带参数说明)
StructuredTool✅ 全力支持
BaseTool 子类✅ 支持(需要 args_schema)

______________________________________________________________________

🤝 贡献

欢迎投稿!请随时提交拉取请求。

______________________________________________________________________

📄 许可证

MIT许可证-请参阅 许可证 了解详情。

______________________________________________________________________

Made with ❤️ for the LangChain and MCP communities

目录标签

目录标签

PythonClaudeAI工具集成工具转换本地部署LangChain适配器MCP服务器

支持客户端

ClaudeCursor

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP