Что такое MCP (Model Context Protocol): объяснение простыми словами и первый MCP-сервер на Python
AI-ассистенты научились писать код, анализировать документы и отвечать на сложные вопросы, но долго имели одно ограничение: они не видели ваших данных. Чтобы модель прочитала задачи из таск-трекера, файл на диске или запись в CRM, каждую такую интеграцию приходилось писать отдельно — под конкретное приложение и конкретную модель. MCP (Model Context Protocol) решает эту проблему: это открытый стандарт, по которому любое AI-приложение подключается к любому источнику данных или сервису.
За два года MCP прошёл путь от экспериментального протокола Anthropic до отраслевого стандарта: его поддерживают Claude, ChatGPT, Gemini, Microsoft Copilot, Cursor и Visual Studio Code, а развивает протокол Agentic AI Foundation под эгидой Linux Foundation. Поэтому «умеет подключать MCP-серверы» постепенно появляется в требованиях к разработчикам, тестировщикам и специалистам по AI-автоматизации.
В этой статье мы объясним, что такое MCP простыми словами, как устроены MCP-клиент и MCP-сервер, чем протокол отличается от обычного API и RAG и что изменилось в актуальной спецификации 2026 года. А в практической части вы напишете собственный MCP-сервер на Python — около 70 строк кода — и подключите его к Claude Desktop и Claude Code. Весь код в статье запущен и проверен на актуальной версии официального SDK.
Коротко: что будет в статье
- Что такое MCP и какую проблему он решает — с аналогией и схемой.
- Архитектура: хост, клиент, сервер, инструменты, ресурсы, промпты и транспорты.
- MCP, API, function calling и RAG: сравнительная таблица.
- Рабочий MCP-сервер на Python, проверка без AI и подключение к Claude.
- Безопасность, типичные ошибки и навыки, нужные для собственных MCP-серверов.
Что такое MCP простыми словами?
MCP (Model Context Protocol) — это открытый протокол, который стандартизирует, как AI-приложения получают доступ к внешним данным и действиям. Сама языковая модель знает только то, что видела во время обучения, и то, что вы передали ей в разговоре. MCP даёт ей «руки и глаза»: возможность прочитать файл, найти запись в базе, создать задачу или отправить сообщение — через серверы, которые вы сами выбрали и подключили.
Аналогия: USB-C для искусственного интеллекта
Авторы протокола сравнивают MCP с USB-C. Когда-то у каждого устройства был свой разъём и свой кабель. USB-C заменил их одним стандартом: ноутбук не знает, что именно к нему подключили — монитор, диск или телефон, — но умеет с этим работать. Так же AI-приложению с поддержкой MCP не нужен отдельный код для GitHub, Google Drive или вашей CRM: достаточно подключить соответствующий MCP-сервер.
Какую проблему решает MCP
До появления MCP разработчики сталкивались с так называемой проблемой «N×M». Если есть N AI-приложений (чат-боты, IDE, агенты) и M сервисов (базы данных, таск-трекеры, мессенджеры), то для полного покрытия нужно N×M отдельных интеграций, каждая со своим форматом описания инструментов, своей авторизацией и своими ошибками. MCP превращает это в N+M: каждое приложение один раз реализует MCP-клиент, каждый сервис один раз получает MCP-сервер — и они работают вместе.
Краткая история MCP
- Ноябрь 2024 — Anthropic публикует MCP как открытый протокол вместе с SDK и первыми серверами.
- 2025 — поддержку добавляют ChatGPT, Gemini, Microsoft Copilot, Cursor, Visual Studio Code и другие продукты.
- Декабрь 2025 — Anthropic передаёт MCP в Agentic AI Foundation под эгидой Linux Foundation. Соучредители фонда — Anthropic, Block и OpenAI, поддержку оказывают Google, Microsoft, AWS, Cloudflare и Bloomberg. На тот момент Anthropic сообщала о более чем 10 000 активных публичных MCP-серверов и более чем 97 млн загрузок SDK для Python и TypeScript в месяц.
- Июль 2026 — выходит спецификация 2026-07-28, крупнейшее обновление протокола: MCP становится stateless, то есть не хранит сессию между запросами, — об этом ниже.
Краткое определение и связанные термины есть и в нашем глоссарии: MCP, MCP-сервер, function calling.
Как работает MCP: архитектура
↺ Результат возвращается тем же путём: сервер → клиент → модель, которая решает, что делать дальше.
Хост, клиент и сервер
В MCP три роли:
- Хост — AI-приложение, с которым работает человек: Claude Desktop, Claude Code, Cursor, VS Code или ваш собственный агент. Хост управляет моделью и решает, какие серверы подключены.
- MCP-клиент — компонент внутри хоста. На каждый подключённый сервер хост создаёт отдельного клиента, который узнаёт, что умеет сервер, и передаёт ему вызовы.
- MCP-сервер — отдельная программа, которая даёт доступ к конкретным данным или действиям. Сервер может работать локально на вашем компьютере или удалённо, как веб-сервис.
Важный момент: сервер не вызывает модель и не «думает». Он только описывает свои возможности и выполняет запросы. Решение, какой инструмент вызвать и с какими параметрами, принимает модель в хосте — так же, как в AI-агентах с function calling.
Три возможности сервера: инструменты, ресурсы, промпты
| Возможность | Что это | Кто инициирует | Пример |
|---|---|---|---|
| Инструменты (tools) | Функции, которые выполняют действие или вычисление | Модель | Создать задачу, найти заметки, выполнить SQL-запрос |
| Ресурсы (resources) | Данные для чтения с собственным адресом (URI) | Приложение или пользователь | Текст файла, схема базы данных, запись из CRM |
| Промпты (prompts) | Готовые шаблоны запросов с параметрами | Пользователь | «Итог по заметкам на тему», «Код-ревью изменений» |
На практике чаще всего используют инструменты: именно они позволяют модели действовать. Ресурсы удобны, когда нужно передать в разговор большой контекст, а промпты — чтобы сохранить проверенные сценарии работы и запускать их одной командой.
Транспорты: stdio и Streamable HTTP
Сообщения между клиентом и сервером передаются в формате JSON-RPC 2.0. Для доставки спецификация определяет два стандартных транспорта:
- stdio — хост запускает сервер как дочерний процесс на вашем компьютере и обменивается с ним сообщениями через стандартные потоки ввода и вывода. Так работают локальные серверы: доступ к файлам, локальной базе, инструментам разработчика.
- Streamable HTTP — сервер работает как веб-сервис по адресу вроде
https://example.com/mcp. Так подключаются облачные сервисы, часто с авторизацией через OAuth.
Старый транспорт HTTP+SSE имеет статус Deprecated — в новых проектах его не используют.
Что изменилось в спецификации 2026-07-28
Актуальная версия протокола заметно упростила его внутреннюю работу. Основные изменения:
- Протокол стал stateless. Исчезли рукопожатие
initializeи заголовок сессииMcp-Session-Id: каждый запрос сам несёт версию протокола и возможности клиента. Удалённые серверы стало проще масштабировать и ставить за балансировщиком нагрузки. - Новый метод
server/discover, через который сервер сообщает поддерживаемые версии протокола и свои возможности. - Запросы в несколько этапов (Multi Round-Trip Requests). Если серверу не хватает данных — например, подтверждения от пользователя, — он возвращает промежуточный результат с запросом, а клиент повторяет вызов с ответом.
- Устарели возможности Roots, Sampling и Logging. Они ещё работают, но новые реализации их не добавляют: пути передают параметрами инструментов, а логи пишут в stderr или OpenTelemetry.
Для новичка главное вот что: туториалы 2025 года могут показывать устаревший синтаксис. Официальный Python SDK версии 2 реализует новую спецификацию, и код в практической части написан именно для него.
MCP, API, function calling и RAG: в чём разница
Эти термины часто путают, хотя они описывают разные уровни одной системы:
| Подход | Что это | Когда нужен |
|---|---|---|
| API | Интерфейс конкретного сервиса для программистов; у каждого сервиса свой | Любая интеграция программ между собой |
| Function calling | Механизм модели: вместо текста она возвращает запрос «вызови функцию X с параметрами Y» | Когда вы сами пишете агента и описываете функции в коде |
| MCP | Стандарт, как описать и передать такие функции и данные любому AI-приложению | Когда инструменты должны работать в разных клиентах без переписывания |
| RAG | Поиск релевантных фрагментов документов и добавление их в промпт | Когда модель должна отвечать на основе большой базы знаний |
Эти подходы не конкурируют, а дополняют друг друга. MCP-сервер внутри обращается к обычному API сервиса. Модель вызывает инструменты MCP через тот же механизм function calling. А поиск по документам в стиле RAG можно оформить как MCP-инструмент search_docs и подключить к любому клиенту. Как работает function calling без MCP, показано в туториале «Как создать AI-агента на Python»: там инструменты описаны прямо в коде агента. MCP выносит их в отдельный сервер, который можно переиспользовать.
Где уже используют MCP
Клиенты. MCP поддерживают Claude (веб-версия, Claude Desktop и Claude Code), ChatGPT, Gemini, Microsoft Copilot, Cursor, Visual Studio Code и многие другие AI-приложения и фреймворки для агентов. Платформы автоматизации тоже его поддерживают: n8n умеет и подключаться к MCP-серверам, и сам выступать сервером — сравнение платформ есть в статье «n8n vs Make vs Zapier».
Серверы. Готовые MCP-серверы существуют для файловой системы, Git и GitHub, баз данных (PostgreSQL, SQLite), браузерной автоматизации, Slack, Google Drive, Notion, Jira, Sentry, платёжных и облачных сервисов. Многие компании публикуют официальные серверы для своих продуктов, а для поиска есть официальный реестр MCP-серверов.
Типичные сценарии:
- Разработка. AI-ассистент в IDE читает задачу из таск-трекера, смотрит логи ошибок в Sentry, проверяет схему базы и готовит изменения в коде.
- Тестирование. Агент через MCP-сервер браузерной автоматизации открывает приложение, проходит сценарий и описывает найденные баги.
- Аналитика данных. Модель выполняет SQL-запросы к базе в режиме только чтения и строит выводы на реальных данных, а не на примерах.
- Бизнес-процессы. Ассистент находит клиента в CRM, проверяет историю заказов и готовит ответ, который менеджер подтверждает перед отправкой.
Идеи MCP выходят и за пределы десктопных приложений. Google и Microsoft разрабатывают в сообществе W3C предложение WebMCP: веб-сайты смогут сами объявлять инструменты для браузерных AI-агентов, чтобы агентам не приходилось «кликать» по странице. Пока это ранний экспериментальный проект, но направление понятно: интерфейсы для AI-агентов становятся такой же частью продукта, как интерфейсы для людей.
Хотите подключать AI к своим сервисам и автоматизировать процессы?
На курсе AI Automation от Prog Academy вы работаете с Claude Code, строите автоматизации в n8n и Make, создаёте Telegram-ботов с AI и личного AI-ассистента с подключением сторонних API.
Посмотреть программу курсаПрактика: создаём первый MCP-сервер на Python
Теории достаточно — напишем собственный сервер. Он даст AI-ассистенту доступ к папке с учебными заметками и покажет все три возможности MCP:
- инструменты
list_notes,search_notesиadd_note— посмотреть, найти и создать заметку; - ресурс
notes://{name}— полный текст заметки по названию; - промпт
weekly_review— шаблон «подведи итог, что я изучил по теме».
Сервер работает только с одной папкой, не позволяет выйти за её пределы через ../ и не перезаписывает существующие заметки. API-ключ не нужен: сервер ничего не платит за модель, модель предоставляет приложение, к которому вы его подключите.
Шаг 1. Python и виртуальное окружение
Официальному SDK нужен Python 3.10 или новее. Проверьте версию командой python3 --version (в Windows — python --version). Затем создайте папку проекта и виртуальное окружение:
mkdir mcp-notes
cd mcp-notes
python3 -m venv .venv
source .venv/bin/activate
В Windows PowerShell:
mkdir mcp-notes
cd mcp-notes
python -m venv .venv
.venv\Scripts\Activate.ps1
Шаг 2. Установите MCP SDK
pip install "mcp[cli]"
Дополнение [cli] устанавливает ещё и консольную утилиту mcp для отладки. Код в статье проверен на версии SDK 2.3.0.
Во многих туториалах вы увидите from mcp.server.fastmcp import FastMCP. Это синтаксис первой версии SDK. В версии 2 класс переименован в MCPServer, и старый импорт завершается ошибкой ModuleNotFoundError. Если нужно запустить старый код без изменений, установите pip install "mcp<2".
Шаг 3. Напишите код сервера
Создайте файл notes_server.py:
"""MCP-сервер «Заметки»: даёт AI-ассистенту доступ к папке с заметками."""
import re
from datetime import date
from pathlib import Path
from mcp.server import MCPServer
from mcp.server.mcpserver.exceptions import ResourceNotFoundError, ToolError
# Сервер работает ТОЛЬКО с этой папкой — за её пределами он ничего не видит.
NOTES_DIR = Path(__file__).parent / "notes"
NOTES_DIR.mkdir(exist_ok=True)
mcp = MCPServer("notes")
def note_path(name: str) -> Path | None:
"""Безопасный путь к заметке внутри NOTES_DIR или None, если название недопустимо."""
# Только буквы, цифры, пробел, '-' и '_': никаких '/' или '..', чтобы не выйти за пределы папки.
if not re.fullmatch(r"[\w\- ]{1,60}", name):
return None
return NOTES_DIR / f"{name.strip()}.md"
# ---------- Инструменты (tools): действия, которые может выполнить модель ----------
@mcp.tool()
def list_notes() -> list[str]:
"""Возвращает названия всех заметок."""
return sorted(p.stem for p in NOTES_DIR.glob("*.md"))
@mcp.tool()
def search_notes(query: str) -> list[str]:
"""Ищет заметки, в тексте которых есть query (без учёта регистра)."""
query = query.strip().lower()
if not query:
raise ToolError("Пустой поисковый запрос")
return sorted(
p.stem for p in NOTES_DIR.glob("*.md")
if query in p.read_text(encoding="utf-8").lower()
)
@mcp.tool()
def add_note(name: str, text: str) -> str:
"""Создаёт новую заметку. Существующую заметку не перезаписывает."""
path = note_path(name)
if path is None:
raise ToolError("Название: только буквы, цифры, пробел, '-' и '_', до 60 символов")
if path.exists():
raise ToolError(f"Заметка «{name}» уже существует")
path.write_text(f"# {name}\n\n{text}\n\n_Создано: {date.today()}_\n", encoding="utf-8")
return f"Заметка «{name}» сохранена"
# ---------- Ресурс (resource): данные, которые может прочитать клиент ----------
@mcp.resource("notes://{name}")
def read_note(name: str) -> str:
"""Полный текст заметки по её названию."""
path = note_path(name)
if path is None or not path.exists():
raise ResourceNotFoundError(f"Заметка «{name}» не найдена")
return path.read_text(encoding="utf-8")
# ---------- Промпт (prompt): готовый шаблон запроса ----------
@mcp.prompt()
def weekly_review(topic: str) -> str:
"""Шаблон: итог по заметкам на тему."""
return (
f"Найди мои заметки на тему «{topic}» инструментом search_notes, "
"прочитай их и составь короткий итог: что я уже изучил, "
"какие вопросы остались открытыми и что повторить на следующей неделе."
)
if __name__ == "__main__":
mcp.run() # по умолчанию — транспорт stdio
Как работает этот код
MCPServer("notes")создаёт сервер с названием, которое увидит клиент.- Декоратор
@mcp.tool()превращает обычную функцию в MCP-инструмент. Описывать JSON Schema вручную не нужно: SDK берёт названия и типы параметров из аннотаций (query: str), а описание инструмента — из docstring. Именно это описание читает модель, когда решает, какой инструмент вызвать, поэтому пишите его понятно. @mcp.resource("notes://{name}")объявляет шаблон ресурса: часть адреса{name}попадает в параметр функции.@mcp.prompt()регистрирует шаблон промпта с параметромtopic.ToolError— ожидаемая ошибка. Её текст возвращается модели, и модель может исправить запрос: выбрать другое название или уточнить поиск. Любое другое исключение SDK считает сбоем и показывает модели только общее сообщение.- Функция
note_path— защита: название заметки проходит через регулярное выражение, поэтому путь вроде../../etc/passwdне пройдёт. mcp.run()запускает сервер на транспорте stdio. Поэтому сервер никогда не должен писать в стандартный вывод черезprint(): stdout занят сообщениями протокола. Для отладки используйтеlogging— он пишет в stderr.
Шаг 4. Проверьте сервер без AI
Прежде чем подключать сервер к Claude, убедитесь, что он работает. Проще всего написать маленький клиент, который запустит сервер и вызовет инструменты напрямую. Создайте рядом файл test_client.py:
"""Проверка MCP-сервера без AI: запускаем его и вызываем инструменты напрямую."""
import asyncio
import sys
from mcp import Client, StdioServerParameters
server = StdioServerParameters(command=sys.executable, args=["notes_server.py"])
async def main():
async with Client(server) as client:
tools = await client.list_tools()
print("Инструменты:", [t.name for t in tools.tools])
result = await client.call_tool("add_note", {"name": "python-dict", "text": "Словарь: dict, ключи уникальны."})
print(result.content[0].text)
result = await client.call_tool("search_notes", {"query": "словарь"})
print("Найдено:", [block.text for block in result.content])
note = await client.read_resource("notes://python-dict")
print(note.contents[0].text)
asyncio.run(main())
Запустите его:
python test_client.py
Ожидаемый результат (дата будет сегодняшней):
Инструменты: ['list_notes', 'search_notes', 'add_note']
Заметка «python-dict» сохранена
Найдено: ['python-dict']
# python-dict
Словарь: dict, ключи уникальны.
_Создано: 2026-10-16_
Рядом со скриптом появится папка notes с файлом python-dict.md. Второй запуск покажет ошибку «Заметка «python-dict» уже существует» — так и должно быть: сервер не перезаписывает заметки.
Альтернатива — визуальный отладчик MCP Inspector. Команда mcp dev notes_server.py откроет его в браузере: там можно посмотреть инструменты, ресурсы и промпты и вызвать их вручную. Inspector запускается через npx, поэтому для него нужен установленный Node.js.
Шаг 5. Подключите сервер к Claude Desktop
В Claude Desktop откройте Settings → Developer → Edit Config. Откроется файл claude_desktop_config.json:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Добавьте сервер в раздел mcpServers. Пути должны быть абсолютными, а Python — именно из вашего виртуального окружения, где установлен SDK. Для macOS (замените you на имя своего пользователя):
{
"mcpServers": {
"notes": {
"command": "/Users/you/mcp-notes/.venv/bin/python",
"args": ["/Users/you/mcp-notes/notes_server.py"]
}
}
}
Для Windows (обратные слеши в JSON удваиваются):
{
"mcpServers": {
"notes": {
"command": "C:\\Users\\you\\mcp-notes\\.venv\\Scripts\\python.exe",
"args": ["C:\\Users\\you\\mcp-notes\\notes_server.py"]
}
}
}
Сохраните файл и полностью перезапустите Claude Desktop. Сервер «notes» появится в списке коннекторов, а перед вызовом его инструментов Claude будет спрашивать ваше разрешение.
Шаг 6. Подключите сервер к Claude Code
В Claude Code сервер добавляется одной командой в терминале. Всё после -- — это команда запуска сервера:
claude mcp add notes -- /Users/you/mcp-notes/.venv/bin/python /Users/you/mcp-notes/notes_server.py
Команда claude mcp list покажет подключённые серверы, а команда /mcp внутри сессии Claude Code — их состояние и инструменты. По умолчанию сервер доступен только в текущем проекте; параметр --scope user делает его доступным во всех ваших проектах.
Проверьте результат
Попробуйте запросы обычным языком:
- «Создай заметку python-loops: цикл for проходит по элементам последовательности, while — пока условие истинно».
- «Какие у меня есть заметки про словари?» — модель вызовет
search_notes. - «Подведи итог по моим заметкам на тему Python» — или запустите промпт
weekly_reviewиз меню приложения.
Обратите внимание: вы не написали ни строчки кода для работы с моделью. Сервер только описал, что он умеет, а решение, когда и что вызывать, принимает Claude. Этот же сервер без изменений подключается к любому другому клиенту с поддержкой MCP.
Добавьте инструмент delete_note, перенесите заметки в SQLite, запустите сервер как веб-сервис командой mcp run notes_server.py --transport streamable-http (по умолчанию он станет доступен по адресу http://localhost:8000/mcp) или подключите к инструментам внешнее API — например, свой таск-трекер.
Безопасность MCP: что важно знать
MCP даёт модели реальный доступ к данным и действиям, поэтому вопрос безопасности здесь не формальность:
- Сервер выполняется с вашими правами. Локальный MCP-сервер может сделать всё, что может ваш пользователь в системе. Устанавливайте серверы только из надёжных источников — официальных репозиториев компаний или проверенных авторов — и читайте код незнакомых серверов перед запуском.
- Минимальные права. Давайте доступ только к нужным папкам, используйте для базы данных пользователя с правом только на чтение, а для API — токены с минимальным набором разрешений.
- Prompt injection. Вредоносные инструкции могут прийти вместе с данными: в тексте веб-страницы, письме, комментарии к задаче. Модель может воспринять их как команду. Поэтому действия, которые изменяют или удаляют данные либо отправляют сообщения, стоит подтверждать вручную.
- Секреты — не в Git. API-ключи передавайте через переменные окружения (параметр
envв конфигурации или-eвclaude mcp add), а не записывайте в файлы, которые попадают в репозиторий. - Проверяйте входные данные на сервере. Как в нашем примере: валидация названий, запрет перезаписи, понятные ошибки. У модели не должно быть возможности «обойти» ограничения, просто передав необычный аргумент.
Типичные ошибки новичков
Сервер не появляется в Claude Desktop
Самые частые причины: относительные пути в конфигурации, синтаксическая ошибка в JSON (лишняя запятая, одинарные обратные слеши в Windows) или приложение не перезапущено полностью. Логи MCP Claude Desktop пишет в ~/Library/Logs/Claude на macOS и в %APPDATA%\Claude\logs в Windows: файл mcp-server-notes.log содержит вывод вашего сервера.
ModuleNotFoundError: No module named 'mcp'
В конфигурации указан системный Python, а SDK установлен в виртуальное окружение. Указывайте полный путь к .venv/bin/python (или .venv\Scripts\python.exe в Windows).
No module named 'mcp.server.fastmcp'
Код написан для первой версии SDK. Замените импорт на from mcp.server import MCPServer или установите "mcp<2".
Ошибка установки на старом Python
Сообщение No matching distribution found for mcp обычно означает Python 3.9 или старше. Установите Python 3.10+ и создайте виртуальное окружение заново.
print() ломает сервер
На транспорте stdio стандартный вывод занят протоколом, поэтому лишний print() портит сообщения, и клиент отключается. Пишите отладочные сообщения через logging или в stderr.
Модель не вызывает нужный инструмент
Модель выбирает инструменты по названию и описанию. Размытые docstring вроде «делает поиск» или десятки похожих инструментов усложняют выбор. Пишите коротко и конкретно, что инструмент делает и что возвращает.
Какие навыки нужны, чтобы создавать MCP-серверы
Чтобы подключать готовые серверы, достаточно уверенно работать с терминалом и конфигурационными файлами. Чтобы писать собственные — нужны навыки обычного Python-разработчика:
- Основы Python: переменные, условия, циклы, функции, словари и списки.
- Аннотации типов и docstring — из них SDK строит описание инструментов для модели.
- Работа с файлами, JSON и регулярными выражениями — как в нашем примере.
- Обработка исключений — чтобы модель получала понятные ошибки, а не падение сервера.
- Работа с API и базами данных — большинство реальных MCP-серверов являются «обёрткой» над API сервиса или SQL-базой.
- Виртуальные окружения и Git — чтобы проект можно было воспроизвести на другом компьютере. Как начать работать с Git, рассказывает статья «Git для начинающих».
AI-ассистент сгенерирует подобный сервер за минуту, но проверить его безопасность, найти ошибку в обработке пути или понять, почему клиент отключается, может только тот, кто понимает код. Начать можно с бесплатного курса Python. Для системного пути с преподавателем есть курс Python Developer + AI: аккредитованная в ЕС программа на 4,5 месяца от основ языка до ООП, баз данных и Django, с модулем AI Start про AI-инструменты в работе разработчика. А если вас больше интересует автоматизация бизнес-процессов с помощью AI без глубокого программирования, посмотрите курс AI Automation.
Посмотреть программу курса Python →
Частые вопросы
Что такое MCP простыми словами?
MCP (Model Context Protocol) — это открытый стандарт, по которому AI-приложение подключается к внешним данным и сервисам: файлам, базам данных, таск-трекерам, CRM. Один раз написанный MCP-сервер работает с любым клиентом, который поддерживает протокол, — Claude, ChatGPT, Cursor, VS Code и другими. Его часто сравнивают с USB-C для AI: единый разъём вместо отдельного кабеля под каждое устройство.
Кто создал MCP и бесплатный ли он?
MCP представила компания Anthropic в конце 2024 года как открытый протокол. В декабре 2025 года Anthropic передала его в Agentic AI Foundation — фонд под эгидой Linux Foundation, соучредителями которого стали Anthropic, Block и OpenAI. Спецификация и официальные SDK открыты и бесплатны.
Чем MCP отличается от обычного API?
API — интерфейс конкретного сервиса, у каждого он свой, и программист заранее читает документацию. MCP — общий протокол поверх таких API: сервер описывает свои инструменты так, чтобы AI-модель сама поняла, что они делают и с какими параметрами их вызывать. Внутри MCP-сервер часто обращается к обычному API.
Нужно ли уметь программировать, чтобы пользоваться MCP?
Чтобы подключить готовый MCP-сервер к Claude Desktop или Claude Code, достаточно отредактировать конфигурационный файл или выполнить одну команду. Программирование нужно, чтобы написать собственный сервер — например, для внутренней системы компании, к которой нет готового коннектора. Для этого хватит базового Python: функции, типы, работа с файлами и JSON.
Какой язык программирования выбрать для MCP-сервера?
Официальные SDK есть для Python, TypeScript, Java, Kotlin, C#, Go и других языков. Для старта проще всего взять Python: сервер с несколькими инструментами занимает десятки строк, а описание параметров SDK строит автоматически из аннотаций типов и docstring.
Безопасно ли подключать MCP-серверы?
MCP-сервер выполняется с правами вашего пользователя, поэтому подключайте только серверы из надёжных источников, давайте минимально нужный доступ и не храните секреты в файлах, которые попадают в Git. Отдельный риск — prompt injection: вредоносные инструкции могут прийти вместе с данными, которые прочитал сервер. Поэтому действия, изменяющие данные, стоит подтверждать вручную.
Что такое MCP-сервер и MCP-клиент?
MCP-сервер — программа, которая предоставляет AI-приложению инструменты, ресурсы и шаблоны промптов: например, доступ к папке с заметками или к базе данных. MCP-клиент — компонент внутри AI-приложения (хоста), который подключается к серверу, получает список его возможностей и передаёт вызовы от модели. Один хост может одновременно работать со многими серверами.
Вывод
MCP сделал для AI-приложений то, что USB-C сделал для устройств: вместо отдельной интеграции под каждую пару «приложение — сервис» появился общий стандарт. Хост с моделью решает, что делать, MCP-сервер предоставляет инструменты, ресурсы и промпты, а протокол связывает их независимо от поставщика модели. Главное, что стоит вынести из статьи: MCP-сервер — это обычная программа с несколькими функциями, а ценность ей придают данные и действия, к которым она открывает доступ, и ограничения, которые вы в неё заложили.
У вас уже есть рабочий сервер на Python. Следующие шаги — подключить к нему собственные данные, добавить проверку прав и попробовать удалённый транспорт. Каждый из этих шагов опирается на основы языка: функции, типы, исключения, работу с файлами и API.
Хотите писать собственные AI-инструменты на Python?
Курс Python Developer + AI от Prog Academy — программа, аккредитованная в ЕС: от первой программы и основ языка к ООП, базам данных, Django и AI-инструментам для разработчика. Практические задания с проверкой преподавателя, проект для портфолио, онлайн в группе или индивидуально.
Узнать больше о курсе Python
