Создайте MCP-сервер для Claude Code — практическое пошаговое руководство

CometAPI
AnnaNov 22, 2025
Создайте MCP-сервер для Claude Code — практическое пошаговое руководство

Model Context Protocol (MCP) — это открытый стандарт, который позволяет таким моделям, как Anthropic Claude, и инструментам разработчика, таким как Claude Code, безопасно и стандартизированно обращаться к внешним инструментам, источникам данных и подсказкам.

Это руководство проведет вас через создание собственного MCP‑сервера с нуля, позволяя Claude Code получать доступ к пользовательским функциям и существенно расширять свою функциональность далеко за пределы встроенных возможностей.

Что такое Model Context Protocol (MCP)?

MCP (Model Context Protocol) — это открытая спецификация, разработанная для стандартизации того, как клиентские приложения языковых моделей (например, Claude, Claude Code или другие фронтенды LLM) подключаются к серверам инструментов и источникам данных. Думайте о MCP как о «порту USB‑C для LLM»: он определяет транспорт/схему JSON‑RPC и общий способ, с помощью которого серверы публикуют три вида возможностей:

  • Resources (ресурсы) — данные наподобие файлов или документов, которые клиент может читать (например, строка БД, текстовый файл, JSON‑нагрузка).
  • Tools (инструменты) — вызываемые функции, которые модель может попросить хост выполнить (с согласия пользователя).
  • Prompts (подсказки) — переиспользуемые шаблоны подсказок или рабочие процессы, которые модель/клиент может вызывать.

MCP поддерживает несколько транспортов (stdio, HTTP, SSE) и предоставляет схемы, SDK и примерные серверы, так что вам не нужно изобретать собственный «проводной» формат. Протокол публично поддерживается (спецификация + SDK), есть учебные материалы и галерея примерных серверов для ускорения внедрения.

Как устроен MCP?

Архитектура MCP преднамеренно проста и модульна: основные составляющие — это MCP‑серверы, MCP‑клиенты и транспорты, которые передают между ними сообщения в формате JSON‑RPC. Ниже указаны главные компоненты, с которыми вы будете работать при создании сервера для Claude Code (или других MCP‑клиентов).

Сервер, клиент и протокол

  • MCP server (сервер MCP) — сервис, который публикует инструменты, ресурсы и подсказки. Инструменты могут выполнять побочные действия или получать данные; ресурсы предоставляют доступ к контенту только для чтения; подсказки — это повторно используемые шаблоны, из которых клиент может «сэмплировать» для модели.
  • MCP client (host) (клиент MCP/хост) — обычно часть хоста LLM (например, Claude Code, плагин для VS Code, браузерный клиент). Он обнаруживает доступные серверы, показывает описания инструментов модели и маршрутизирует вызовы инструментов, инициированные моделью, на серверы.
  • Protocol (протокол) — сообщения кодируются как JSON‑RPC; спецификация определяет события жизненного цикла, обнаружение инструментов, их вызов, комплишны/сэмплирование и способ передачи структурированных результатов обратно клиенту и модели.

Шаблон взаимодействия (что происходит при использовании инструмента)

  1. Клиент отправляет сообщение пользователя модели.
  2. Модель анализирует контекст и решает вызвать инструмент, опубликованный через MCP (или несколько инструментов).
  3. Клиент пересылает вызов инструмента на MCP‑сервер по выбранному транспорту.
  4. Сервер выполняет инструмент и возвращает результаты.
  5. Модель получает вывод инструмента и формирует окончательный ответ пользователю.

Базовые примитивы реализации

  • Сообщения JSON‑RPC следуют схеме MCP.
  • Определения инструментов публикуются в ответах на discovery сервера, чтобы клиенты могли показывать их в интерфейсе.
  • Ресурсы ссылаются клиентами через синтаксис @source:path (например, @postgres:...), что позволяет моделям обращаться к внешнему контенту без встраивания больших данных в подсказку.

Зачем интегрировать Claude Code с MCP‑серверами?

Claude Code — продукт Anthropic, ориентированный на рабочие процессы, связанные с кодом и разработкой (интеграция с редактором/IDE, понимание кода и т. п.). Публикуя ваши внутренние инструменты (поиск по исходникам, запуск CI, система тикетов, приватные реестры) через MCP‑серверы, вы позволяете Claude Code вызывать их как инструменты первого класса внутри бесед о коде и агентных потоков.

Интеграция Claude Code с MCP‑серверами открывает практические, применимые в проде возможности для кодового агента:

1. Позволить модели «действовать» в реальных системах

Claude Code может попросить MCP‑сервер выполнить запрос к трекеру задач, запустить запросы к базе данных, прочитать большие документы или создать PR в GitHub — что позволяет автоматизировать end‑to‑end прямо в рамках сессии разработки. Это явно поддерживается в документации Claude Code (примеры: запросы к Postgres, Sentry, создание PR).

2. Разгрузить большие данные и специализированную логику

Вместо внедрения каждого источника данных в подсказку (что потребляет токены), вы публикуете данные и инструменты через MCP. Модель вызывает инструмент, получает структурированный ответ и рассуждает на его основе — это сокращает использование токенов и позволяет серверам обрабатывать тяжелую работу (SQL‑запросы, длинные чтения файлов, авторизацию).

3. Безопасность и управление

MCP централизует контроль доступа и аудит на уровне сервера, позволяя организациям вносить в белые списки одобренные серверы, контролировать доступные инструменты и ограничивать выводы. Claude Code также поддерживает корпоративную MCP‑конфигурацию и согласие по областям.

4. Повторное использование и экосистема

MCP‑серверы переиспользуемы между клиентами и командами. Постройте один раз — и множество клиентов Claude/LLM смогут пользоваться теми же сервисами (или заменять реализации).

Что нужно перед началом?

Минимальные требования

  • Машина разработчика с Python 3.10+ (в примере используем Python). Альтернативно поддерживаются Node и другие языки через SDK MCP.
  • uv (инструмент Astral) или аналоги для запуска MCP‑серверов поверх stdio (в учебнике MCP используется uv). Шаги установки см. ниже.
  • Установленный Claude Code или доступ к клиенту Claude (десктоп или CLI), чтобы зарегистрировать и протестировать ваш сервер; либо любой другой MCP‑совместимый клиент. Claude Code поддерживает HTTP, SSE и локальные сервера stdio.
  • Примечание по безопасности: добавляйте в Claude Code только доверенные MCP‑серверы в командных или корпоративных настройках — MCP предоставляет серверам доступ к чувствительным данным, а также существуют риски внедрения подсказок, если сервер возвращает вредоносный контент.

Как установить и проверить CLI Claude Code

Это руководство по установке и использованию Claude Code.

1) Кратко — рекомендуемые способы установки

Используйте нативный установщик (рекомендуется) или Homebrew на macOS/Linux. Для NPM есть вариант, если нужен вариант на базе Node. Windows — установщики PowerShell / CMD. Источник: официальная документация и GitHub Claude Code.


2) Предварительные условия

  • macOS 10.15+, Ubuntu 20.04+/Debian 10+, или Windows 10+ (для Windows рекомендуется WSL).
  • Node.js 18+ требуется только для варианта установки через NPM.

3) Команды установки (выберите один способ)

Нативный (рекомендуется — без зависимости от Node), macOS / Linux / WSL:

curl -fsSL https://claude.ai/install.sh | bash
# optional: install latest explicitly

curl -fsSL https://claude.ai/install.sh | bash -s latest
# or install a specific version

curl -fsSL https://claude.ai/install.sh | bash -s 1.0.58

Windows PowerShell:

irm https://claude.ai/install.ps1 | iex
# or for latest: & (::Create((irm https://claude.ai/install.ps1))) latest

(Это официальные скрипты нативного установщика.)

NPM (если нужен глобальный вариант на базе Node):

# requires Node.js 18+

npm install -g @anthropic-ai/claude-code

Не используйте sudo npm install -g — не рекомендуется глобальная установка через sudo (проблемы с правами/безопасностью). Если сталкиваетесь с ошибками прав, используйте nvm или исправьте глобальный префикс npm вместо sudo.

4) Проверить, что бинарник установлен (базовые проверки)

Выполните локально сразу после установки:

# is the command on PATH?

which claude

# version (or -v)

claude --version
# or

claude -v

# help (sanity check)

claude --help

Ожидание: which показывает путь (например, /usr/local/bin/claude или ~/.nvm/.../bin/claude), а claude --version печатает строку в стиле semver. В документации и README указано, что основной исполняемый файл CLI — claude.


5) Проверить состояние установки и конфигурацию (рекомендовано)

a) claude doctor, Запуск:

claude doctor

Этот встроенный диагностический инструмент проверяет тип установки, распространенные проблемы (например, права npm), зависимости вроде ripgrep и предлагает исправления. В документации явно советуют запустить claude doctor после установки.

b) Дымовой тест (неинтерактивный)

Из директории вашего проекта:

cd /path/to/your/project
claude -p "Explain this project in 3 sentences"

Это режим print (-p): отправляет единичную подсказку и завершает работу; подходит для CI или быстрой функциональной проверки.

c) Проверка аутентификации (убедитесь, что CLI может достичь Anthropic)

Claude Code поддерживает несколько потоков аутентификации (OAuth через консоль, API‑ключ, интеграции провайдеров). Типичные проверки:

  1. Если используете API‑ключ (CI / headless / локальная переменная окружения):
export ANTHROPIC_API_KEY="sk-..."
# then

claude auth status
claude auth whoami    # or `claude auth whoami` / `claude whoami` depending on version

Вы можете использовать API‑ключ CometAPI, чтобы работать с Claude Code. Использование API Claude через CometAPI даст вам скидку 20%.

  1. Если вы прошли OAuth через консоль — выполните:
claude auth status
claude auth whoami

Вы должны увидеть информацию об аккаунте/плане или подтверждение успешной аутентификации.

Пошаговая подготовка окружения

Ниже — конкретные шаги подготовки двух распространенных стеков разработчика (TypeScript и Python), а также быстрые проверки, чтобы убедиться, что все работает.

H3 — A. Настройка TypeScript / Node (самый быстрый путь)

  1. Создайте проект и установите SDK:
mkdir mcp-demo && cd mcp-demo
npm init -y
npm install @modelcontextprotocol/sdk express zod
npm install --save-dev typescript tsx @types/node @types/express
  1. Создайте server.ts. (Полный пример приведен в разделе «Как быстро построить…».)
  2. Запустите:
npx -y tsx server.ts
  1. Протестируйте локально с помощью MCP Inspector или добавьте в Claude Code:
npx @modelcontextprotocol/inspector
# or (for Claude Code)

claude mcp add --transport http my-server http://localhost:3000/mcp

(Команды Inspector и Claude позволяют проверить discovery и вызывать инструменты.)

Как быстро построить MCP‑сервер для Claude Code?

quick checklist

  1. Запустите сервер (рекомендуется Streamable HTTP): node server.ts или uvicorn server:app.
  2. Со своей машины разработчика либо:
  • Используйте MCP Inspector для проверки (npx @modelcontextprotocol/inspector) и убедитесь в корректности tools/list и resources/list; или
  • Добавьте сервер в Claude Code: claude mcp add --transport http <name> http://<host>:<port>/mcp (или следуйте пользовательским потокам веб‑клиента, если ваш клиент поддерживает удаленный MCP).

Если вы планируете использовать коннектор Messages API Anthropic для удаленного MCP (без отдельного клиента), ознакомьтесь с документацией Claude — может потребоваться бета‑заголовок (уточняйте точный заголовок и текущий статус поддержки в документации).

Ниже — два полных, но компактных примера серверов, которые можно скопировать, запустить и подключить к Claude Code (или MCP Inspector). Пример на TypeScript использует Express + TypeScript SDK; версия на Python демонстрирует FastAPI‑монтирование.

Примечание: код ниже основан на публичных примерах из SDK и намеренно минимален для ясности. Для продакшна добавьте аутентификацию, логирование, ограничение частоты и проверку входных данных сверх того, что делает SDK по умолчанию.


Пример 1: TypeScript + Express (Streamable HTTP)

Создайте server.ts (полностью):

// server.ts
import express from "express";
import * as z from "zod/v4";
import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";

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

// Register a simple tool: add two numbers
server.registerTool(
  "add",
  {
    title: "Add",
    description: "Add two numbers a and b",
    inputSchema: { a: z.number(), b: z.number() },
    outputSchema: { result: z.number() }
  },
  async ({ a, b }) => {
    const output = { result: a + b };
    return {
      content: ,
      structuredContent: output
    };
  }
);

// Register a resource: greet user (dynamic)
server.registerResource(
  "greeting",
  new ResourceTemplate("greeting://{name}", { list: undefined }),
  { title: "Greeting", description: "Return a greeting for the name" },
  async (uri, params) => {
    return {
      contents: 
    };
  }
);

// Express + Streamable HTTP transport
const app = express();
app.use(express.json());

app.post("/mcp", async (req, res) => {
  const transport = new StreamableHTTPServerTransport({ enableJsonResponse: true });
  // Close transport when connection closes
  res.on("close", () => transport.close());
  await server.connect(transport);
  await transport.handleRequest(req, res, req.body);
});

const port = parseInt(process.env.PORT || "3000", 10);
app.listen(port, () => console.log(`MCP server listening: http://localhost:${port}/mcp`));

Запуск:

npm install
npx -y tsx server.ts

Затем подключите в Claude Code (пример):

# Add the remote server to your Claude Code MCP list (local dev)

claude mcp add --transport http my-demo http://localhost:3000/mcp

Этот пример адаптирован из официального Quick Start TypeScript SDK и демонстрирует, как регистрировать инструменты и ресурсы, а затем публиковать их через Streamable HTTP.


Пример 2: Python + FastAPI (FastMCP + Streamable HTTP)

Создайте server.py (полностью):

# server.py

from fastapi import FastAPI
from mcp.server.fastmcp import FastMCP

app = FastAPI()
mcp = FastMCP("claude-python-demo", stateless_http=True)

# tool: simple sum

@mcp.tool()
def add(a: int, b: int) -> dict:
    """Add two integers"""
    return {"result": a + b}

# resource: simple greeting resource template

@mcp.resource("greeting://{name}")
def greeting(name: str):
    return {"contents": }

# mount the streamable-http MCP endpoint (FastMCP exposes an ASGI app)

app.mount("/mcp", mcp.streamable_http_app())

# optional endpoint to demonstrate other API routes

@app.get("/")
async def root():
    return {"status": "OK"}

Запуск:

uvicorn server:app --reload --port 8000

Подключение через Inspector:

npx @modelcontextprotocol/inspector
# In Inspector select Streamable HTTP and enter http://localhost:8000/mcp

Примеры SDK для Python и утилиты FastMCP упрощают регистрацию функций, декорированных @mcp.tool() и @mcp.resource(), которые LLM может обнаруживать и вызывать.


Как Claude Code фактически вызывает ваши инструменты?

Когда LLM решает использовать инструмент, клиент отправляет вызов JSON‑RPC на MCP‑сервер. Сервер выполняет запрошенный инструмент (например, делает запрос к БД, запускает тесты или вызывает внешнее API) и возвращает структурированный контент и презентабельный контент. Клиент (Claude Code) затем включает структурированный вывод в контекст модели, чтобы та могла продолжить рассуждение с опорой на надежные данные, а не только на текстовый вывод сервера. В TypeScript SDK можно регистрировать inputSchema и outputSchema (zod), чтобы валидировать аргументы и результаты и получать машинно типизированные данные.


Какие средства тестирования и отладки использовать?

MCP Inspector

MCP Inspector — официальный визуальный инструмент разработчика для тестирования MCP‑серверов. Он позволяет подключиться к серверу (stdio, SSE или streamable‑HTTP), перечислить инструменты, вызывать их вручную и изучать жизненный цикл сообщений JSON‑RPC — незаменим в разработке. Запускайте через npx @modelcontextprotocol/inspector.

Локальное vs удаленное тестирование

  • Локально (stdio) — быстрый цикл итераций для десктопных приложений и офлайн‑отладки.
  • Streamable HTTP — тестируйте с Inspector или подключайте к Claude Code с помощью CLI claude mcp add или коннектора MCP в Messages API для удаленных тестов. Убедитесь, что передаете все требуемые для вашего сервера заголовки аутентификации.

Заключение

MCP — это практичный мост между современными LLM и системами, где действительно находятся данные и выполняются действия. Для рабочих процессов с кодом интеграция Claude Code с MCP‑сервером дает модели структурированный, поддающийся аудиту доступ к репозиториям, CI, трекерам задач и пользовательским инструментам — результатом становится более точная автоматизация и более безопасные побочные эффекты. С официальными SDK для TypeScript и Python, Streamable HTTP для удаленного хостинга и такими инструментами, как MCP Inspector, вы можете построить минимальный сервер за считанные минуты и двигаться к продакшн‑развертыванию.

Разработчики могут получить доступ к API моделей, таким как Claude Sonnet 4.5 API и Claude Opus 4.1 API и т. д., через CometAPI; последняя версия модели всегда синхронизируется с официальным сайтом. Чтобы начать, изучите возможности моделей в Playground и обратитесь к руководству по API для подробных инструкций. Прежде чем приступать, убедитесь, что вы вошли в CometAPI и получили API‑ключ. CometAPI предлагает цены значительно ниже официальных, чтобы помочь с интеграцией.

Готовы начать? → Зарегистрируйтесь в CometAPI уже сегодня!

Если вы хотите получать больше советов, гайдов и новостей об ИИ, следите за нами в VKX и Discord!

Готовы сократить затраты на AI-разработку на 20%?

Начните бесплатно за несколько минут. Пробные кредиты включены. Карта не нужна.

Читать далее