Перейти к содержимому
MCP

MCP-серверы для Claude в 2026: практический гайд для разработчиков

Model Context Protocol (MCP) от Anthropic становится стандартом подключения Claude к вашим инструментам и данным. Как строить, хостить и использовать MCP-серверы в проде.

К 2026 году Model Context Protocol (MCP) тихо стал стандартом подключения Claude ко всему остальному стеку. Если вы до сих пор прописываете кастомные определения инструментов в каждом агенте, руками пишете JSON-схемы и вставляете документацию в system prompt — вы делаете двойную работу за половину результата. Этот гайд разбирает, что такое MCP на самом деле, как написать рабочий сервер, как его задеплоить и как он сочетается с гейтвеем вроде Claudexia.

Что такое MCP в одном абзаце

MCP — открытый протокол от Anthropic, который стандартизирует, как AI-приложение (клиент: Claude Desktop, Claude Code, OpenCode, ваш собственный агент) общается с внешним поставщиком возможностей (сервер: файловая система, Postgres, GitHub, ваш внутренний API). Сервер выставляет три типа примитивов — tools (вызываемые функции), resources (читаемые данные) и prompts (параметризованные шаблоны) — поверх транспорта. Клиент находит их в рантайме и передаёт модели. Всё. Никакой кастомной обвязки на каждую интеграцию и никаких схем под каждый проект.

Почему это лучше, чем сырые tool definitions

Можно совершенно спокойно вызывать параметр tools у Claude напрямую, с вручную написанными JSON-схемами. Так делали два года. Работает. Но оно не масштабируется в рамках организации:

  • Каждое приложение пишет одни и те же пять инструментов. Файловая система, поиск, БД, тикеты, календарь — каждая команда делает свою версию с чуть разными параметрами и своим набором багов.
  • Схемы инструментов лежат внутри кода приложения. Поменять параметр — передеплоить всех потребителей.
  • Нет discovery. Новый агент не знает, какие инструменты в организации уже есть. С MCP он просто запрашивает их у сервера.
  • Аутентификация и rate limits размазаны по приложениям. С MCP они живут на сервере.

MCP превращает интеграцию в сервис. Написал один раз — подключай откуда угодно.

Архитектура

MCP-сервер — это процесс (локальный или удалённый), который говорит на проводном протоколе MCP поверх транспорта. Два транспорта, которые имеют значение в 2026:

  • stdio — сервер является дочерним процессом клиента. Используется для локальных серверов (файловая система, локальный git, данные десктопного приложения). Никакой сети, никакой аутентификации, максимально быстрый старт.
  • Streamable HTTP — сервер является долгоживущим HTTP-сервисом. Используется для всего, что многопользовательское или хостится (ваш SaaS, общий внутренний API, сторонние интеграции). Поддерживает заголовки авторизации, SSE-стриминг и горизонтальное масштабирование как любой веб-сервис.

Клиент держит сессию, перечисляет возможности (tools/list, resources/list, prompts/list) и вызывает их по необходимости. Сама модель не говорит на MCP — этим занимается harness. С точки зрения модели это обычные инструменты.

Минимальный MCP-сервер на TypeScript

Ставим официальный SDK:

npm install @modelcontextprotocol/sdk zod

Сервер с одним инструментом (add) и одним ресурсом (config://app):

import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";

const server = new McpServer({
  name: "demo-server",
  version: "1.0.0",
});

server.tool(
  "add",
  "Сложить два числа и вернуть сумму.",
  { a: z.number(), b: z.number() },
  async ({ a, b }) => ({
    content: [{ type: "text", text: String(a + b) }],
  }),
);

server.resource(
  "config",
  "config://app",
  async (uri) => ({
    contents: [{
      uri: uri.href,
      text: JSON.stringify({ env: "prod", region: "eu" }),
    }],
  }),
);

const transport = new StdioServerTransport();
await server.connect(transport);

Это полностью соответствующий спецификации MCP-сервер. Сохраняем как server.ts, компилируем — и его можно подключать к любому MCP-совместимому клиенту.

Как протестировать

Три клиента, три конфига:

Claude Desktop — правим claude_desktop_config.json:

{
  "mcpServers": {
    "demo": {
      "command": "node",
      "args": ["/abs/path/to/server.js"]
    }
  }
}

Перезапускаем Claude Desktop. Инструмент появляется в меню.

Claude Codeclaude mcp add demo node /abs/path/to/server.js. Внутри сессии /mcp показывает подключённые серверы.

OpenCode — добавляем в opencode.json:

{
  "mcp": {
    "demo": {
      "type": "local",
      "command": ["node", "/abs/path/to/server.js"]
    }
  }
}

Во всех трёх спрашиваем модель "сколько будет 2 + 3?" — она вызовет ваш add. Добро пожаловать в MCP.

Деплой как удалённый HTTP MCP-сервер

Для всего многопользовательского переключаемся на Streamable HTTP. Меняем транспорт:

import express from "express";
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";

const app = express();
app.use(express.json());

app.post("/mcp", async (req, res) => {
  const transport = new StreamableHTTPServerTransport({
    sessionIdGenerator: () => crypto.randomUUID(),
  });
  await server.connect(transport);
  await transport.handleRequest(req, res, req.body);
});

app.listen(3000);

Ставим за обычный балансировщик, терминируем TLS, добавляем auth-middleware, который валидирует bearer-токен на каждого тенанта — и получаем продакшн MCP-сервер. Клиенты подключаются так:

{
  "mcpServers": {
    "demo": {
      "url": "https://mcp.example.com/mcp",
      "headers": { "Authorization": "Bearer ..." }
    }
  }
}

Безопасность: то, о чём все забывают

MCP-серверы выполняются с вашими учётными данными. Относитесь к ним как к любой другой API:

  • Авторизация на клиента. Выдавайте scoped-токены. Не используйте один мастер-ключ для всех потребителей. Ротируйте.
  • Скоупьте инструменты по вызывающей стороне. Инструмент, выводящий все тикеты, опасен; инструмент, выводящий тикеты аутентифицированного пользователя, — нет. Прокидывайте identity через каждый вызов.
  • Rate limit на транспорте. Сломанный агент может молотить инструмент в тугом цикле. Ограничивайте RPM на токен.
  • Валидируйте каждый аргумент. Zod-схемы не опциональны. Относитесь к аргументам инструмента как к недоверенному вводу — по сути это так и есть, модель можно заджейлбрейкнуть на произвольный JSON.
  • Логируйте каждый вызов. MCP — это audit boundary между моделью и вашими данными. Логируйте имя инструмента, аргументы, вызывающего и результат.
  • Никаких секретов в ресурсах. Ресурсы читает модель. Всё, что вы выставили как ресурс, может оказаться в ответе.

Реальные примеры, у которых стоит подсмотреть

Официальные серверы Anthropic и сообщества — самый быстрый способ освоить идиомы:

  • filesystem — sandbox-чтение/запись в директории. Эталон по валидации путей.
  • postgres — read-only SQL с интроспекцией схемы как ресурсом.
  • github — issues, PR, code search. Хороший пример пагинации внутри ответов инструментов.
  • stripe — платежи и клиенты. Отличный пример scoped auth и идемпотентных операций.
  • sentry — issues и events. Показывает, как выставлять данные с временным окном именно как tools, а не resources.

Читайте их исходники. Паттерны переиспользуемы.

Как это работает через Claudexia

Частый вопрос: нужно ли что-то особенное на стороне гейтвея, чтобы использовать MCP-серверы? Нет. MCP — это клиентская история. Поток такой:

  1. Ваш клиент (Claude Desktop, Claude Code, OpenCode, ваш агент) подключается к одному или нескольким MCP-серверам.
  2. Клиент перечисляет их инструменты и ресурсы.
  3. Когда пользователь шлёт сообщение, клиент отправляет обычный /v1/messages в Claudexia с tools: [...], наполненным из MCP-серверов.
  4. Claudexia маршрутизирует запрос к Claude по нашему стандартному pay-per-token прайсу.
  5. Claude возвращает блок tool_use. Клиент — не гейтвей — выполняет вызов против MCP-сервера и возвращает результат.

Иначе говоря, Claudexia стоит на стороне модели, а MCP — на стороне harness. Они композируются чисто. Направьте MCP-совместимый клиент на Anthropic-совместимый base URL Claudexia, наполните инструменты из любого MCP-сервера — и цена остаётся предсказуемой за токен.

Итог

MCP — правильная абстракция для интеграции инструментов в 2026. Пишите серверы один раз, подключайте откуда угодно, дайте harness заниматься обвязкой. Начните со stdio-сервера для локального воркфлоу, переезжайте на HTTP, когда нужны несколько пользователей, и держите авторизацию, скоупы и rate limits на сервере, где им и место. После этого перестаньте переизобретать схемы инструментов и шипите.