Что такое MCP и зачем создавать сервер
Перейти к разделу
Проблема: AI-инструменты слепы
Вы используете Claude Code или Cursor для написания кода. Отлично генерировать функции, объяснять алгоритмы и рефакторить. Но он не видит ваши Jira-задачи. Не знает, что задеплоено в production. Не может запросить базу данных, чтобы проверить, применилась ли миграция. Ваш AI-ассистент мощный, но слеп ко всему, что важно в вашем конкретном рабочем процессе.
До MCP каждый AI-инструмент строил собственную систему интеграций. У Cursor были плагины. У ChatGPT — GPT Actions. У Claude — tool use. Ничто из этого не взаимодействовало друг с другом. Если вы создавали интеграцию для одного инструмента, её приходилось пересоздавать для каждого другого. Это была эпоха до USB — у каждого устройства был свой кабель.
MCP = USB-C для AI
Model Context Protocol (MCP) — открытый стандарт, созданный Anthropic, который определяет, как AI-инструменты подключаются к внешним системам. Представьте его как USB-C — один универсальный разъём, работающий везде. Вы создаёте один MCP-сервер, и он работает с Claude Code, Cursor, Windsurf, Copilot и любым другим инструментом, поддерживающим протокол.
Архитектура проста: MCP-клиент (AI-инструмент) подключается к MCP-серверу (вашему коду) по стандартному протоколу. Сервер открывает доступ к вашим данным и действиям через три примитива. Клиент обнаруживает, что доступно, и использует это для помощи пользователю.
┌─────────────────┐ ┌─────────────────┐
│ AI Tool │ │ Your MCP Server │
│ (Claude Code, │◄───────►│ (your code) │
│ Cursor, etc.) │ MCP │ │
│ │ Protocol│ ┌─────────────┐ │
│ MCP Client │ │ │ Resources │ │
│ │ │ │ Tools │ │
│ │ │ │ Prompts │ │
└─────────────────┘ │ └─────────────┘ │
│ │
│ ┌─────────────┐ │
│ │ Your DB │ │
│ │ Your API │ │
│ │ Your Infra │ │
│ └─────────────┘ │
└─────────────────┘Три примитива: Resources, Tools, Prompts
MCP-серверы открывают функциональность ровно через три примитива. Понимание этих примитивов — ключ к проектированию хорошего сервера.
Resources — данные только для чтения
Resources позволяют AI читать данные из ваших систем. Они похожи на GET-эндпоинты в REST API — AI может смотреть на них, но не может ничего изменить. Resource может быть записью в базе данных, конфигурационным файлом, статусом деплоя или документацией API. Каждый resource имеет URI вида myapp://users/123 или myapp://deployments/production.
Tools — действия с побочными эффектами
Tools позволяют AI выполнять действия. Создать Jira-задачу. Задеплоить на staging. Выполнить запрос к базе данных. Отправить сообщение в Slack. Каждый вызов tool требует одобрения пользователя — AI предлагает действие, пользователь подтверждает его. Это механизм безопасности, который делает MCP пригодным для использования в production.
Prompts — переиспользуемые шаблоны
Prompts — заранее написанные шаблоны, которые помогают AI взаимодействовать с вашей системой. Думайте о них как о slash-командах — /deploy, /debug, /summarize-tickets. Они объединяют инструкции с аргументами для создания контекстно-насыщенных взаимодействий. Они опциональны, но невероятно полезны для стандартизации типичных рабочих процессов.
// Resources: AI reads data
server.resource("deployment-status", "myapp://deploy/status", async () => {
const status = await getDeploymentStatus();
return { contents: [{ uri: "myapp://deploy/status", text: JSON.stringify(status) }] };
});
// Tools: AI performs actions (with user approval)
server.tool("create-ticket", { title: z.string(), priority: z.enum(["low", "medium", "high"]) }, async ({ title, priority }) => {
const ticket = await jira.createIssue({ title, priority });
return { content: [{ type: "text", text: `Created ticket ${ticket.key}` }] };
});
// Prompts: reusable templates
server.prompt("debug-error", { error_message: z.string() }, ({ error_message }) => ({
messages: [{ role: "user", content: { type: "text", text: `Debug this error from our production logs: ${error_message}` } }]
}));Транспорт: как клиент и сервер общаются
MCP поддерживает два транспортных механизма. stdio — наиболее распространённый: клиент запускает сервер как дочерний процесс и общается через стандартный ввод/вывод. Именно его используют Claude Code и Cursor для локальных MCP-серверов. Streamable HTTP (и более старый SSE-транспорт) используется для удалённых серверов — клиент подключается по HTTP. Это полезно для общих командных серверов или облачных MCP-сервисов.
// Claude Code config (~/.claude/mcp.json) — stdio transport
{
"mcpServers": {
"my-app": {
"command": "node",
"args": ["./build/index.js"],
"env": {
"DATABASE_URL": "postgresql://localhost:5432/mydb"
}
}
}
}
// Cursor config (.cursor/mcp.json) — same format
{
"mcpServers": {
"my-app": {
"command": "npx",
"args": ["-y", "my-mcp-server"]
}
}
}Кто принял MCP
MCP начался в Anthropic, но был принят всей индустрией. Claude Code, Cursor, Windsurf, Copilot и многие другие инструменты поддерживают его как клиенты. На стороне серверов существуют официальные MCP-серверы для GitHub, Slack, Linear, Google Drive, PostgreSQL и десятков других сервисов. OpenAI и Google оба объявили о поддержке MCP. Это стремительно становится стандартом — не просто протоколом одной компании.
MCP для AI-инструментов — это то же, чем REST стал для web API. В 2005 году можно было строить SOAP, XML-RPC или кастомные протоколы. К 2010-му все стандартизировались на REST. MCP — это тот момент стандартизации для AI-интеграций: создай один раз, работает везде.
Реальные MCP-серверы
- Linear MCP — AI читает задачи, создаёт тикеты, обновляет статус
- Slack MCP — AI читает каналы, отправляет сообщения, ищет по истории
- PostgreSQL MCP — AI напрямую запрашивает вашу базу данных (только чтение или чтение/запись)
- Kubernetes MCP — AI проверяет статус подов, читает логи, масштабирует деплойменты
- GitHub MCP — AI читает PR, создаёт issues, проверяет статус CI
- Sentry MCP — AI читает отчёты об ошибках, трейсы и данные о производительности
Что вы создадите в этом курсе
К концу курса у вас будет production-ready MCP-сервер для вашего приложения. Он откроет вашу базу данных как просматриваемые resources, позволит AI выполнять типичные действия через tools и предоставит шаблоны prompts для рабочих процессов команды. Вы будете знать, как его защитить, задеплоить и распространить в команде.
Чтобы создать MCP-сервер, не нужно быть экспертом в AI. Если вы умеете писать REST API, вы можете создать MCP-сервер. SDK берут на себя все детали протокола — вы просто определяете, какие данные открывать и какие действия разрешать.
Посмотрите на ваш текущий процесс разработки и определите 3 вещи, которые MCP-сервер мог бы открыть вашим AI-инструментам: 1. Одна часть данных, которую AI сейчас не видит (например, схема базы данных, статус деплоя, бэклог задач) 2. Одно действие, которое вы выполняете вручную, но AI мог бы делать за вас (например, создание тикетов, запуск миграций, обновление конфигов) 3. Один рабочий процесс, который мог бы стать переиспользуемым шаблоном prompt (например, отладка production-ошибок, онбординг нового сервиса, чеклист код-ревью) Запишите эти пункты — мы будем их реализовывать на протяжении всего курса.
Подсказка
Подумайте о том, что вы постоянно копируете-вставляете в чат с AI. Если вы регулярно вставляете схему базы данных, логи ошибок или описания задач — это идеальные кандидаты для MCP resources.
- MCP — открытый протокол, соединяющий AI-инструменты с вашими системами: создайте один раз, работает везде
- Три примитива: Resources (читать данные), Tools (выполнять действия), Prompts (переиспользуемые шаблоны)
- Два транспорта: stdio (локальный, наиболее распространённый) и HTTP (удалённый, для общих серверов)
- Каждый вызов tool требует одобрения пользователя — AI предлагает, пользователь подтверждает
- Принят Anthropic, OpenAI, Google, Microsoft — это отраслевой стандарт
- Если вы умеете создавать REST API, вы умеете создавать MCP-сервер