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; спецификация определяет события жизненного цикла, обнаружение инструментов, их вызов, комплишны/сэмплирование и способ передачи структурированных результатов обратно клиенту и модели.
Шаблон взаимодействия (что происходит при использовании инструмента)
- Клиент отправляет сообщение пользователя модели.
- Модель анализирует контекст и решает вызвать инструмент, опубликованный через MCP (или несколько инструментов).
- Клиент пересылает вызов инструмента на MCP‑сервер по выбранному транспорту.
- Сервер выполняет инструмент и возвращает результаты.
- Модель получает вывод инструмента и формирует окончательный ответ пользователю.
Базовые примитивы реализации
- Сообщения 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‑ключ, интеграции провайдеров). Типичные проверки:
- Если используете 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%.
- Если вы прошли OAuth через консоль — выполните:
claude auth status
claude auth whoami
Вы должны увидеть информацию об аккаунте/плане или подтверждение успешной аутентификации.
Пошаговая подготовка окружения
Ниже — конкретные шаги подготовки двух распространенных стеков разработчика (TypeScript и Python), а также быстрые проверки, чтобы убедиться, что все работает.
H3 — A. Настройка TypeScript / Node (самый быстрый путь)
- Создайте проект и установите 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
- Создайте
server.ts. (Полный пример приведен в разделе «Как быстро построить…».) - Запустите:
npx -y tsx server.ts
- Протестируйте локально с помощью 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
- Запустите сервер (рекомендуется Streamable HTTP):
node server.tsилиuvicorn server:app. - Со своей машины разработчика либо:
- Используйте 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 уже сегодня!
Если вы хотите получать больше советов, гайдов и новостей об ИИ, следите за нами в VK, X и Discord!
