MCP Guide
MCP (Model Context Protocol) Guide
Что такое MCP?
Model Context Protocol (MCP) — это открытый протокол для подключения AI-моделей к внешним данным и инструментам. MCP позволяет создавать серверы, которые предоставляют инструменты (tools) для AI-моделей, расширяя их возможности.
Основные концепции:
MCP Server — сервер, который предоставляет инструменты и данные
MCP Client — клиент, который подключается к серверам и использует их инструменты
Tools — функции, которые может вызывать AI-модель (например, поиск в интернете, работа с файлами, API вызовы)
Как работает MCP?
Сервер регистрирует инструменты и запускается
Клиент подключается к серверу и получает список доступных инструментов
AI-модель использует инструменты через клиента для выполнения задач
Результаты возвращаются модели для дальнейшей обработки
Архитектура проекта
MCP_guide/
├── mcp_server.py # MCP сервер с инструментами
├── main.py # Клиент и агент
├── model.py # Модель Groq
├── settings.py # Настройки
├── requirements.txt # Зависимости
└── README.md # Этот файлУстановка и запуск
1. Установка зависимостей
pip install -r requirements.txt2. Настройка переменных окружения
Создайте файл .env в корне проекта:
GROQ_API=your_groq_api_key_here
MODEL_NAME=llama3-8b-8192
MCP_SERVER_URL=http://127.0.0.1:8000
TAVILY_API=your_tavily_api_key_here3. Получение API ключей
Groq API: Зарегистрируйтесь на groq.com
Tavily API: Зарегистрируйтесь на tavily.com
4. Запуск проекта
Для начала запускаем сервер mcp_server.py
python mcp_server.py Либо
fastmcp run mcp_server.pyЗатем сам код
python main.pyДоступные инструменты
В данном проекте реализованы следующие инструменты:
1. tavily_search
Описание: Поиск информации в интернете
Параметры:
query(строка)Пример: Поиск новостей, информации о технологиях
2. add
Описание: Сложение двух чисел
Параметры:
a(int),b(int)Пример:
add(5, 3)→8
3. reverse
Описание: Переворачивание текста
Параметры:
text(строка)Пример:
reverse("hello")→"olleh"
4. greet
Описание: Создание приветствия
Параметры:
name(строка)Пример:
greet("Анна")→"Привет, Анна!"
Транспорты MCP
stdio (рекомендуется)
Простой и надежный
Работает через стандартный ввод/вывод
Подходит для локальной разработки
streamable-http
Работает через HTTP с Server-Sent Events
Требует правильных заголовков
Подходит для веб-приложений
Примеры использования
Базовый пример
import asyncio
from langchain_mcp_adapters.client import MultiServerMCPClient
async def main():
# Подключение к MCP серверу
client = MultiServerMCPClient({
"demo": {
"command": "python",
"args": ["mcp_server.py"],
"transport": "stdio",
}
})
# Получение инструментов
tools = await client.get_tools()
print(f"Доступно инструментов: {len(tools)}")
asyncio.run(main())Использование с LangGraph
from langgraph.prebuilt import create_react_agent
# Создание агента с MCP инструментами
agent = create_react_agent(
tools=tools,
model=llm
)
# Вызов агента
result = agent.invoke({
"messages": [{"role": "user", "content": "Сложи 5 и 3"}]
})Устранение неполадок
Ошибка "Not Acceptable: Client must accept text/event-stream"
Причина: Неправильная конфигурация HTTP транспорта
Решение: Используйте stdio транспорт или добавьте правильные заголовки
Ошибка "Expected dict, got string"
Причина: Неправильный формат входных данных для агента
Решение: Передавайте данные в формате
{"messages": [...]}
Ошибка подключения к серверу
Причина: Сервер не запущен или неправильный URL
Решение: Убедитесь, что сервер запущен и URL корректный
Расширение функциональности
Добавление нового инструмента
Добавьте функцию в
mcp_server.py:
@mcp.tool()
def multiply(a: int, b: int) -> int:
"""Умножить два числа."""
return a * bПерезапустите сервер
Подключение к внешним API
@mcp.tool()
def weather(city: str) -> str:
"""Получить погоду для города."""
# Ваш код для API вызова
return f"Погода в {city}: солнечно"Полезные ссылки
Лицензия
MIT License
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/switchblxdee/MCP_guide'
If you have feedback or need assistance with the MCP directory API, please join our Discord server