MCPLEARNING
MCP + LangChain Демо
Проект для начинающих, демонстрирующий, как создавать MCP (Model Context Protocol) серверы и подключать их к LLM агенту с помощью LangChain и LangGraph.
Что такое MCP?
MCP (Model Context Protocol) — это открытый протокол, который позволяет предоставлять LLM пользовательские инструменты (функции) стандартизированным способом. Представьте его как универсальную систему плагинов для ИИ-моделей.
Ключевые понятия:
Термин | Определение |
MCP Сервер | Процесс, который предоставляет инструменты (функции) через транспорт (stdio или HTTP). LLM может вызывать эти инструменты. |
MCP Клиент | Процесс, который подключается к одному или нескольким MCP серверам, обнаруживает их инструменты и передает их LLM. |
Инструмент | Функция Python, декорированная с помощью |
Транспорт | Метод связи между клиентом и сервером. |
FastMCP | Высокоуровневый класс Python из библиотеки |
Related MCP server: Model Context Protocol Multi-Agent Server
Структура проекта
MCPLEARNING/
├── mathserver.py # MCP Server 1 - Math tools (stdio transport)
├── weather.py # MCP Server 2 - Weather tool (HTTP transport)
├── client.py # LangChain agent that connects to both servers
├── .env # API keys (NOT pushed to GitHub)
├── .gitignore
├── requirements.txt
└── pyproject.tomlКак это работает (Пошагово)
Шаг 1: MCP Сервер — mathserver.py
Этот файл создает MCP сервер с именем "Math", который предоставляет два инструмента:
add(a, b)— Возвращает сумму двух целых чисел.multiply(a, b)— Возвращает произведение двух целых чисел.
Он работает на stdio транспорте, что означает, что клиент запускает его как подпроцесс и общается через stdin/stdout. Порт не требуется.
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Math")
@mcp.tool()
def add(a: int, b: int) -> int:
"""Addition of two numbers"""
return a + b
@mcp.tool()
def multiply(a: int, b: int) -> int:
"""Multiplication of two numbers"""
return a * b
if __name__ == "__main__":
mcp.run(transport="stdio")Шаг 2: MCP Сервер — weather.py
Этот файл создает MCP сервер с именем "Weather", который предоставляет один инструмент:
get_weather(location)— Возвращает информацию о погоде для указанного местоположения.
Он работает на streamable-http транспорте, что означает, что он запускает веб-сервер на http://127.0.0.1:8000/mcp. Клиент подключается к нему через HTTP.
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Weather")
@mcp.tool()
async def get_weather(location: str) -> str:
"""Get the weather"""
return "It's always raining in California"
if __name__ == "__main__":
mcp.run(transport="streamable-http")Шаг 3: Клиент-агент — client.py
Это мозг проекта. Он:
Подключается к обоим MCP серверам с помощью
MultiServerMCPClient.Обнаруживает все инструменты с обоих серверов (
add,multiply,get_weather).Создает Groq LLM (хостированная модель с открытым исходным кодом) и привязывает к ней инструменты.
Строит LangGraph агента — конечный автомат, в котором:
LLM решает, вызвать инструмент или ответить напрямую.
Если инструмент вызван, результат передается обратно LLM для окончательного ответа.
Тестирует два запроса:
"What is 3 + 5?" → Использует инструмент
add."What is the weather in California?" → Использует инструмент
get_weather.
Предварительные требования
Python 3.13+
Менеджер пакетов uv (рекомендуется) или pip
Ключ API Groq — Получите бесплатно на console.groq.com
Настройка
1. Клонируйте репозиторий
git clone https://github.com/<YOUR_USERNAME>/MCPLEARNING.git
cd MCPLEARNING2. Создайте и активируйте виртуальное окружение
# Using uv (recommended)
uv venv
uv pip install -r requirements.txt
# Or using pip
python -m venv .venv
.venv\Scripts\activate # Windows
source .venv/bin/activate # Mac/Linux
pip install -r requirements.txt3. Настройте ключ API
Создайте файл .env в корне проекта:
GROQ_API_KEY=your_groq_api_key_hereВАЖНО: Никогда не коммитьте файл
.env. Он исключен через.gitignore.
Запуск проекта
Вам понадобится два терминала:
Терминал 1 — Запустите MCP сервер погоды
python weather.pyВы должны увидеть:
INFO: Uvicorn running on http://127.0.0.1:8000Примечание: Только
weather.pyнужно запускать вручную.mathserver.pyзапускается автоматически клиентом (stdio транспорт).
Терминал 2 — Запустите клиент
python client.pyОжидаемый вывод
Available MCP tools:
- add
- multiply
- get_weather
==============================
Testing Math MCP
==============================
Math Response: 3 + 5 = 8.
==============================
Testing Weather MCP
==============================
Weather Response: It's always raining in California.Как создать свой собственный MCP сервер
Установите библиотеку MCP:
pip install mcpСоздайте новый файл Python (например,
myserver.py):
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("MyServer")
@mcp.tool()
def my_tool(param: str) -> str:
"""Description of what this tool does."""
return f"Result: {param}"
if __name__ == "__main__":
mcp.run(transport="stdio") # For stdio transport
# mcp.run(transport="streamable-http") # For HTTP transportПодключите его в клиенте, добавив в конфигурацию
MultiServerMCPClient:
client = MultiServerMCPClient({
"myserver": {
"command": "python",
"args": ["myserver.py"],
"transport": "stdio",
},
})Сравнение транспортов
Транспорт | Как работает | Когда использовать |
stdio | Клиент запускает сервер как подпроцесс. Общение через stdin/stdout. | Локальные инструменты, простая настройка, сеть не требуется. |
streamable-http | Сервер работает как веб-сервер. Клиент подключается через HTTP. | Удаленные инструменты, несколько клиентов, межмашинный доступ. |
Используемые ключевые библиотеки
Библиотека | Назначение |
| Создание MCP серверов с помощью |
| Мост между MCP серверами и инструментами LangChain. |
| Интеграция LangChain для LLM, хостированных на Groq. |
| Создание рабочих процессов агента в виде графа (цикл агент ↔ инструменты). |
| Загрузка ключей API из файла |
Важные моменты, о которых стоит позаботиться
Сервер погоды должен быть запущен до клиента — Поскольку он использует HTTP транспорт, процесс сервера должен быть запущен первым. Математический сервер (stdio) автоматически запускается клиентом.
Требуется ключ API Groq — Без него вызовы LLM завершатся ошибкой. Получите бесплатный ключ на console.groq.com.
Никогда не коммитьте
.env— Всегда добавляйте.envв.gitignoreперед отправкой кода.Конфликты портов — Сервер погоды по умолчанию работает на порту 8000. Если другой процесс использует этот порт, сервер не запустится.
Проблема с кодировкой в Windows — В Windows консоль может не поддерживать символы UTF-8, возвращаемые LLM.
client.pyобрабатывает это с помощьюsys.stdout.reconfigure(encoding="utf-8").Доступность модели — Имя модели Groq (
openai/gpt-oss-120b) должно быть действительным и доступным на платформе Groq. Проверьте список моделей Groq для получения актуальных вариантов.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityDmaintenanceA Model Context Protocol (MCP) server that demonstrates mathematical capabilities through a LangChain integration, allowing clients to perform math operations via the MCP protocol.
- Flicense-qualityDmaintenanceDemonstrates custom MCP servers for math and weather operations, enabling multi-agent orchestration using LangChain, Groq, and MCP adapters for both local and remote tool integration.1
- Flicense-qualityCmaintenanceA demonstration MCP server that provides math (add/multiply) and weather tools, connecting via stdio and streamable HTTP, and integrates with LangChain and LangGraph for agentic workflows.
- Flicense-qualityDmaintenanceA collection of MCP servers demonstrating math operations, weather data, and LangGraph workflows.1
Related MCP Connectors
MCP server for AI dialogue using various LLM models via AceDataCloud
MCP server exposing the Backtest360 engine API as tools for AI agents.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Reyansh1996/MCPLEARNING'
If you have feedback or need assistance with the MCP directory API, please join our Discord server