Prog Academy
RU UA
Что такое MCP (Model Context Protocol): объяснение простыми словами и первый MCP-сервер на Python
AI

Что такое 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: архитектура

1. ХостAI-приложение: Claude Desktop, Claude Code, IDE, ваш агент
2. MCP-клиентПолучает список инструментов и передаёт вызовы от модели
3. ПротоколСообщения JSON-RPC через stdio или Streamable HTTP
4. MCP-серверПрограмма с инструментами, ресурсами и промптами
5. Данные и сервисыФайлы, база данных, GitHub, CRM, любое API

↺ Результат возвращается тем же путём: сервер → клиент → модель, которая решает, что делать дальше.

Хост, клиент и сервер

В 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 к своим сервисам и автоматизировать процессы?

На курсе 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.

FastMCP теперь называется MCPServer

Во многих туториалах вы увидите 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 вроде «делает поиск» или десятки похожих инструментов усложняют выбор. Пишите коротко и конкретно, что инструмент делает и что возвращает.

Чтобы подключать готовые серверы, достаточно уверенно работать с терминалом и конфигурационными файлами. Чтобы писать собственные — нужны навыки обычного 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.

Py

Хотите писать собственные AI-инструменты на Python?

Курс Python Developer + AI от Prog Academy — программа, аккредитованная в ЕС: от первой программы и основ языка к ООП, базам данных, Django и AI-инструментам для разработчика. Практические задания с проверкой преподавателя, проект для портфолио, онлайн в группе или индивидуально.

Узнать больше о курсе Python
Фото автора: Всеволод Евгиенко

Об авторе

CEO и основатель Prog Academy

Разработчик программного обеспечения, специалист по информационной безопасности и преподаватель Java. Руководит Prog Academy и пишет о программировании, данных и AI-инструментах.

Контакт

Записаться на консультацию

Укажите актуальный номер, мы позвоним в любую страну :)