Представьте: вы открываете Claude и просите его — «Покажи, сколько заказов поступило за последние 7 дней». Агент сам обращается к вашей PostgreSQL-базе, выполняет запрос и возвращает ответ. Никакого кода, никаких промежуточных интерфейсов. Именно это и делает MCP — протокол, который превратил Claude из умного чат-бота в полноценного агента, встроенного в вашу инфраструктуру.

Model Context Protocol (MCP) — открытый стандарт, анонсированный Anthropic в ноябре 2024 года. К 2026 году он стал де-факто стандартом подключения LLM к внешним инструментам: более 200 готовых серверов, поддержка в Claude Code, Cursor, Windsurf и десятках других инструментов. В этой статье разберём архитектуру MCP, типы транспорта и пошагово настроим интеграцию с базами данных и API.


Что такое MCP и как он работает

MCP — это протокол клиент-сервер, построенный поверх JSON-RPC 2.0. Идея проста: AI-модель играет роль MCP-клиента, а любой внешний инструмент — базы данных, API, файловые системы — становится MCP-сервером.

MCP — это «USB-C для AI»: один стандарт, чтобы подключать всё. Вместо написания кастомных интеграций для каждого инструмента вы один раз поднимаете MCP-сервер и больше не думаете о совместимости.

Каждый MCP-сервер предоставляет три типа возможностей:

ТипОписаниеПример
Tools (инструменты)Функции, которые агент может вызыватьexecute_query, send_message
Resources (ресурсы)Данные, к которым можно обратитьсяФайлы, записи БД, документы
Prompts (подсказки)Шаблоны для типовых задачГотовые SQL-запросы, сценарии

graph LR
    U[Пользователь] -->|запрос на естественном языке| C[Claude / MCP-клиент]
    C -->|JSON-RPC 2.0| S1[MCP-сервер: PostgreSQL]
    C -->|JSON-RPC 2.0| S2[MCP-сервер: GitHub API]
    C -->|JSON-RPC 2.0| S3[MCP-сервер: Slack]
    S1 -->|результат запроса| C
    S2 -->|данные репозитория| C
    S3 -->|статус канала| C
    C -->|готовый ответ| U

Протокол поддерживает три типа транспорта:

  • stdio — локальный процесс, общается через стандартный ввод/вывод. Идеален для инструментов с прямым доступом к системе.
  • HTTP (Streamable HTTP) — рекомендованный вариант для удалённых серверов, самый широко поддерживаемый в облачных сервисах.
  • SSE (Server-Sent Events) — устаревший вариант HTTP-транспорта, сохранён для совместимости.
ℹ MCP v2.1 — что нового
Актуальная спецификация (2025-11-25) добавила Server Cards — стандарт метаданных через .well-known URL. Теперь реестры и браузеры могут обнаруживать возможности сервера без подключения к нему.

Подключение к базам данных

Самый востребованный сценарий — дать Claude доступ к вашим данным. Рассмотрим подключение к SQLite и PostgreSQL.

SQLite: самый быстрый старт

SQLite не требует отдельного сервиса — один файл, и вы готовы. Добавьте конфигурацию в claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):

{
  "mcpServers": {
    "sqlite": {
      "command": "npx",
      "args": [
        "@executeautomation/database-server",
        "/path/to/your/database.db"
      ]
    }
  }
}

После перезапуска Claude Desktop вы можете писать: «Покажи все таблицы в базе», «Сделай выборку из таблицы orders за март» — и получать результаты напрямую.

PostgreSQL: production-ready подключение

Для PostgreSQL используйте официальный сервер Anthropic или универсальный DBHub:

{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": [
        "@modelcontextprotocol/server-postgres",
        "postgresql://user:password@localhost:5432/mydb"
      ]
    }
  }
}

Альтернатива — DBHub с поддержкой PostgreSQL, MySQL, MariaDB, SQL Server и SQLite в одном сервере:

{
  "mcpServers": {
    "dbhub": {
      "command": "npx",
      "args": ["@bytebase/dbhub", "--transport", "stdio"],
      "env": {
        "DATABASE_URL": "postgresql://user:password@host:5432/db"
      }
    }
  }
}
⚠ Безопасность — критически важно
Никогда не указывайте пароли прямо в конфигурационном файле, если он хранится в репозитории. Используйте переменные окружения через блок env. Также не подключайтесь через MCP к production-базе напрямую — AI выполняет запросы без предварительной валидации. Создайте отдельного пользователя только с правами чтения (GRANT SELECT ON ALL TABLES).

Таблица популярных MCP-серверов для баз данных

СерверПоддерживаемые БДОсобенности
@modelcontextprotocol/server-postgresPostgreSQLОфициальный, минималистичный
@executeautomation/database-serverPostgreSQL, SQLite, SQL ServerЕдиный интерфейс
@bytebase/dbhubPostgreSQL, MySQL, MariaDB, SQLiteZero-dependency, TOML-конфиг
@panasenco/mcp-sqliteSQLiteЛёгкий, только SQLite

Подключение к внешним API

Помимо баз данных, MCP позволяет подключать любые внешние сервисы. К 2026 году экосистема насчитывает реализации для GitHub, Slack, Google Drive, Notion, Jira, Salesforce и сотен других.

Пример: GitHub + Slack в одном агенте

{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
      }
    },
    "slack": {
      "command": "npx",
      "args": ["@modelcontextprotocol/server-slack"],
      "env": {
        "SLACK_BOT_TOKEN": "${SLACK_BOT_TOKEN}",
        "SLACK_TEAM_ID": "T0123456"
      }
    }
  }
}

Теперь Claude может: «Возьми все открытые PR в репозитории myrepo, у которых нет ревьюера, и напиши в Slack-канал #dev-alerts». Агент сам цепочкой вызовет инструменты обоих серверов.

Удалённые HTTP-серверы с аутентификацией

Для удалённых MCP-серверов (облачные сервисы, корпоративные API) используйте HTTP-транспорт с заголовками:

{
  "mcpServers": {
    "myapi": {
      "type": "http",
      "url": "https://api.example.com/mcp",
      "headers": {
        "X-API-Key": "${MY_API_KEY}",
        "Authorization": "Bearer ${MY_TOKEN}"
      }
    }
  }
}
💡 OAuth для корпоративных сервисов
HTTP и SSE транспорты поддерживают OAuth-аутентификацию через флаги --client-id, --client-secret и --callback-port в Claude Code CLI. Это удобно для интеграций с корпоративными SSO-системами.

Создание собственного MCP-сервера

Готовых серверов может не хватить — например, для интеграции с внутренним API компании. Написать MCP-сервер несложно: официальные SDK доступны для Python и TypeScript.

from mcp.server import Server
from mcp.server.stdio import stdio_server
from mcp import types

app = Server("my-crm-server")

@app.list_tools()
async def list_tools() -> list[types.Tool]:
    return [
        types.Tool(
            name="get_customer",
            description="Получить данные клиента по ID",
            inputSchema={
                "type": "object",
                "properties": {
                    "customer_id": {
                        "type": "string",
                        "description": "ID клиента в CRM"
                    }
                },
                "required": ["customer_id"]
            }
        )
    ]

@app.call_tool()
async def call_tool(name: str, arguments: dict):
    if name == "get_customer":
        customer_id = arguments["customer_id"]
        # Здесь ваш реальный запрос к CRM API
        data = await fetch_from_crm(customer_id)
        return [types.TextContent(type="text", text=str(data))]

async def main():
    async with stdio_server() as streams:
        await app.run(*streams, app.create_initialization_options())

if __name__ == "__main__":
    import asyncio
    asyncio.run(main())
📝 Практический сценарий
Компания подключила MCP-сервер к своей CRM. Теперь менеджеры пишут: «Подготовь отчёт по клиентам, у которых контракт истекает в мае, и сформируй письма для каждого» — Claude сам запрашивает данные, формирует тексты и складывает в нужный формат.

MCP в Claude Code и CI/CD

Для разработчиков особенно ценен MCP в связке с Claude Code. Конфигурация через .mcp.json в корне проекта автоматически подхватывается:

{
  "mcpServers": {
    "database": {
      "command": "npx",
      "args": ["@modelcontextprotocol/server-postgres", "${DATABASE_URL}"]
    },
    "filesystem": {
      "command": "npx",
      "args": ["@modelcontextprotocol/server-filesystem", "./data"]
    }
  }
}

Это позволяет всей команде использовать одинаковый набор инструментов: файл .mcp.json коммитится в репозиторий, и каждый разработчик автоматически получает доступ к тем же MCP-серверам.

💡 Изоляция окружений
Добавьте .mcp.json в репозиторий, но вынесите секреты (токены, пароли) в .env файл, который в .gitignore. Такой подход обеспечивает воспроизводимость настроек без утечки учётных данных.

Итоги: почему MCP меняет правила игры

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

Ключевые выводы:

  • Стандарт победил: 200+ готовых серверов в 2026 году — MCP стал тем же для AI-интеграций, чем REST стал для веб-API.
  • Безопасность важнее удобства: всегда создавайте отдельные учётные данные с минимальными правами; никогда не давайте агенту write-доступ к production-базам без явных ограничений.
  • Начните с малого: SQLite + один API — достаточно, чтобы за вечер получить рабочего агента.
  • Масштаб без переписывания: добавление нового инструмента — это добавление блока в JSON-конфиг, а не переписывание логики агента.

Разница между «умным чат-ботом» и «AI-агентом в вашей инфраструктуре» — это именно MCP. Протокол убирает самый болезненный барьер: необходимость вручную передавать данные туда-обратно.

Экосистема продолжает расти: спецификация MCP v2.1 с Server Cards, нативная поддержка OAuth, появление корпоративных реестров серверов — всё это говорит о том, что MCP — это надолго и всерьёз.