Skip to main content
Glama

MCP + LangChain Демо

Проект для начинающих, демонстрирующий, как создавать MCP (Model Context Protocol) серверы и подключать их к LLM агенту с помощью LangChain и LangGraph.


Что такое MCP?

MCP (Model Context Protocol) — это открытый протокол, который позволяет предоставлять LLM пользовательские инструменты (функции) стандартизированным способом. Представьте его как универсальную систему плагинов для ИИ-моделей.

Ключевые понятия:

Термин

Определение

MCP Сервер

Процесс, который предоставляет инструменты (функции) через транспорт (stdio или HTTP). LLM может вызывать эти инструменты.

MCP Клиент

Процесс, который подключается к одному или нескольким MCP серверам, обнаруживает их инструменты и передает их LLM.

Инструмент

Функция Python, декорированная с помощью @mcp.tool(), которую может вызывать LLM.

Транспорт

Метод связи между клиентом и сервером. stdio = одна машина через stdin/stdout. streamable-http = через HTTP.

FastMCP

Высокоуровневый класс Python из библиотеки mcp, упрощающий создание MCP серверов.


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

Это мозг проекта. Он:

  1. Подключается к обоим MCP серверам с помощью MultiServerMCPClient.

  2. Обнаруживает все инструменты с обоих серверов (add, multiply, get_weather).

  3. Создает Groq LLM (хостированная модель с открытым исходным кодом) и привязывает к ней инструменты.

  4. Строит LangGraph агента — конечный автомат, в котором:

    • LLM решает, вызвать инструмент или ответить напрямую.

    • Если инструмент вызван, результат передается обратно LLM для окончательного ответа.

  5. Тестирует два запроса:

    • "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 MCPLEARNING

2. Создайте и активируйте виртуальное окружение

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

3. Настройте ключ 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 сервер

  1. Установите библиотеку MCP:

pip install mcp
  1. Создайте новый файл 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
  1. Подключите его в клиенте, добавив в конфигурацию MultiServerMCPClient:

client = MultiServerMCPClient({
    "myserver": {
        "command": "python",
        "args": ["myserver.py"],
        "transport": "stdio",
    },
})

Сравнение транспортов

Транспорт

Как работает

Когда использовать

stdio

Клиент запускает сервер как подпроцесс. Общение через stdin/stdout.

Локальные инструменты, простая настройка, сеть не требуется.

streamable-http

Сервер работает как веб-сервер. Клиент подключается через HTTP.

Удаленные инструменты, несколько клиентов, межмашинный доступ.


Используемые ключевые библиотеки

Библиотека

Назначение

mcp

Создание MCP серверов с помощью FastMCP.

langchain-mcp-adapters

Мост между MCP серверами и инструментами LangChain.

langchain-groq

Интеграция LangChain для LLM, хостированных на Groq.

langgraph

Создание рабочих процессов агента в виде графа (цикл агент ↔ инструменты).

python-dotenv

Загрузка ключей API из файла .env.


Важные моменты, о которых стоит позаботиться

  1. Сервер погоды должен быть запущен до клиента — Поскольку он использует HTTP транспорт, процесс сервера должен быть запущен первым. Математический сервер (stdio) автоматически запускается клиентом.

  2. Требуется ключ API Groq — Без него вызовы LLM завершатся ошибкой. Получите бесплатный ключ на console.groq.com.

  3. Никогда не коммитьте .env — Всегда добавляйте .env в .gitignore перед отправкой кода.

  4. Конфликты портов — Сервер погоды по умолчанию работает на порту 8000. Если другой процесс использует этот порт, сервер не запустится.

  5. Проблема с кодировкой в Windows — В Windows консоль может не поддерживать символы UTF-8, возвращаемые LLM. client.py обрабатывает это с помощью sys.stdout.reconfigure(encoding="utf-8").

  6. Доступность модели — Имя модели Groq (openai/gpt-oss-120b) должно быть действительным и доступным на платформе Groq. Проверьте список моделей Groq для получения актуальных вариантов.

F
license - not found
-
quality - not tested
C
maintenance

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

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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