X
xiaotonng/lc2mcp
Convert LangChain tools to FastMCP tools
View on GitHub ↗Link checked 2026-11-12 · HTTP 200 · opens the vendor's own site
Install & config
Install command from the repository
pip install lc2mcp
Parsed from the README we fetched on 2026-11-05; we have not executed it.
This is the install method the repository states, not an MCP client config, so no JSON is generated.
Key names differ by client: Clients & CLI
- Source
- collected from the abordage/awesome-mcp list · type: MCP server
- Harvest history
- first seen 2026-11-05 · last seen 2026-11-14 · seen 10× · listed by 10 sources
- Score
- score 1,003 · 10 sources · mcp
- Install
pip install lc2mcp
FAQ (answers come from our records)
How do I install it?
The repository provides this install command:
pip install lc2mcp. It comes from the repository itself; we cannot guarantee it runs as-is in your client.Who is it for?
We filed it under these tags: MCP 服务. The tags come from the entry itself, not a taxonomy we imposed.
Who maintains it?
first catalogued 2026-11-05;last seen 2026-11-14。There is no official certification or quality rating here — we record sources and dates only.
# lc2mcp
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
Convert LangChain tools to FastMCP tools — in one line of code.
> Stop rewriting your tools. Just adapt them.
lc2mcp is a lightweight adapter that converts existing LangChain tools into FastMCP tools, enabling you to quickly build MCP servers accessible to Claude, Cursor, and any MCP-compatible client.
## ✨ Features
| Feature | Description |
| 🔄 Instant Conversion | One function call to convert any LangChain tool to FastMCP tool |
| 📦 Ecosystem Access | Unlock 1000+ LangChain community tools (Search, Wikipedia, SQL, APIs...) |
| 🎯 Zero Boilerplate | Automatic Pydantic → JSON Schema conversion |
| 🔐 Context Injection | Pass auth, user info, and request context to tools |
| 📊 Progress & Logging | Full support for MCP progress notifications and logging |
| 🏷️ Namespace Support | Prefix tool names and handle conflicts automatically |
## 🚀 Quick Start
### Installation
bash
pip install lc2mcp
### 3 Lines to MCP
python
from langchaincore.tools import tool
from fastmcp import FastMCP
from lc2mcp import registertools
@tool
def getweather(city: str) -> str:
"""Get current weather for a city."""
return f"Sunny, 25°C in {city}"
mcp = FastMCP("weather-server")
registertools(mcp, [getweather]) # ← That's it!
if name == "main":
mcp.run()
Your tool is now available to Claude, Cursor, and any MCP client.
### Tool Parameter Descriptions
To include parameter descriptions in the MCP tool schema, you have two options:
Option 1: Use parsedocstring=True (Recommended for simplicity)
python
@tool(parsedocstring=True)
def getweather(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}"
Option 2: Use argsschema (Recommended for complex types)
python
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(argsschema=WeatherInput)
def getweather(city: str, unit: str = "celsius") -> str:
"""Get current weather for a city."""
return f"Sunny, 25°C in {city}"
> Note: Without parsedocstring=True or argsschema, parameter descriptions from docstrings will not be extracted.
## 🔌 How It Works
┌─────────────────┐ ┌─────────────┐ ┌─────────────────┐
│ LangChain Tool │ ───▶ │ lc2mcp │ ───▶ │ FastMCP Tool │
│ (@tool, etc.) │ │ (adapter) │ │ │
└─────────────────┘ └─────────────┘ └────────┬────────┘
┌─────────────────┐
│ FastMCP Server │
└────────┬────────┘
┌───────────────────────┐
│ MCP Clients │
│ (Claude, Cursor, ...) │
└───────────────────────┘
## 🔄 lc2mcp vs langchain-mcp-adapters
LangChain and MCP ecosystems can be connected in both directions:
| Direction | Tool | Description |
| LangChain → MCP | lc2mcp ✅ | Convert LangChain tools to MCP tools (this project) |
| MCP → LangChain | langchain-mcp-adapters | Convert MCP tools to LangChain tools (official) |
When to use lc2mcp:
You have existing LangChain tools and want to expose them via MCP
You want to build an MCP server using LangChain's rich tool ecosystem
You need to serve tools to Claude, Cursor, or other MCP clients
When to use langchain-mcp-adapters:
> Stop rewriting your tools. Just adapt them.
lc2mcp is a lightweight adapter that converts existing LangChain tools into FastMCP tools, enabling you to quickly build MCP servers accessible to Claude, Cursor, and any MCP-compatible client.
## ✨ Features
| Feature | Description |
| 🔄 Instant Conversion | One function call to convert any LangChain tool to FastMCP tool |
| 📦 Ecosystem Access | Unlock 1000+ LangChain community tools (Search, Wikipedia, SQL, APIs...) |
| 🎯 Zero Boilerplate | Automatic Pydantic → JSON Schema conversion |
| 🔐 Context Injection | Pass auth, user info, and request context to tools |
| 📊 Progress & Logging | Full support for MCP progress notifications and logging |
| 🏷️ Namespace Support | Prefix tool names and handle conflicts automatically |
## 🚀 Quick Start
### Installation
bash
pip install lc2mcp
### 3 Lines to MCP
python
from langchaincore.tools import tool
from fastmcp import FastMCP
from lc2mcp import registertools
@tool
def getweather(city: str) -> str:
"""Get current weather for a city."""
return f"Sunny, 25°C in {city}"
mcp = FastMCP("weather-server")
registertools(mcp, [getweather]) # ← That's it!
if name == "main":
mcp.run()
Your tool is now available to Claude, Cursor, and any MCP client.
### Tool Parameter Descriptions
To include parameter descriptions in the MCP tool schema, you have two options:
Option 1: Use parsedocstring=True (Recommended for simplicity)
python
@tool(parsedocstring=True)
def getweather(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}"
Option 2: Use argsschema (Recommended for complex types)
python
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(argsschema=WeatherInput)
def getweather(city: str, unit: str = "celsius") -> str:
"""Get current weather for a city."""
return f"Sunny, 25°C in {city}"
> Note: Without parsedocstring=True or argsschema, parameter descriptions from docstrings will not be extracted.
## 🔌 How It Works
┌─────────────────┐ ┌─────────────┐ ┌─────────────────┐
│ LangChain Tool │ ───▶ │ lc2mcp │ ───▶ │ FastMCP Tool │
│ (@tool, etc.) │ │ (adapter) │ │ │
└─────────────────┘ └─────────────┘ └────────┬────────┘
┌─────────────────┐
│ FastMCP Server │
└────────┬────────┘
┌───────────────────────┐
│ MCP Clients │
│ (Claude, Cursor, ...) │
└───────────────────────┘
## 🔄 lc2mcp vs langchain-mcp-adapters
LangChain and MCP ecosystems can be connected in both directions:
| Direction | Tool | Description |
| LangChain → MCP | lc2mcp ✅ | Convert LangChain tools to MCP tools (this project) |
| MCP → LangChain | langchain-mcp-adapters | Convert MCP tools to LangChain tools (official) |
When to use lc2mcp:
You have existing LangChain tools and want to expose them via MCP
You want to build an MCP server using LangChain's rich tool ecosystem
You need to serve tools to Claude, Cursor, or other MCP clients
When to use langchain-mcp-adapters:
Listed badge (optional)
Copy this line into the README if you want the listing mark. Optional, and it does not affect being listed.
[](https://anclum.com/en/s/xiaotonng-lc2mcp/)
- Source
- awesome · https://github.com/xiaotonng/lc2mcp
- Browse by field
- MCP servers
- Listed by
- 10 independent sources
- added
- today
More like this
Filed under
Every tag opens the full list for that filter. Counts are the live catalogue figures.