Agent Dev 101

Модуль 07 · Урок 7.2

Урок 7.2. Что такое MCP

На этой странице
  1. Зачем это нужно
  2. Основная идея
  3. MCP как граница системы
  4. Ключевые термины
  5. Почему не хватит "просто API"
  6. Что меняется для разработчика
  7. Участники MCP
  8. MCP layers
  9. Tools, Resources, Prompts
  10. Capability Discovery
  11. Local MCP server
  12. Remote MCP server
  13. Пример 1: GitHub
  14. Пример 2: PostgreSQL
  15. Пример 3: Documentation
  16. Что MCP не делает
  17. MCP и Skills
  18. Практика: MCP схема для demo workflow
  19. Типичные ошибки
  20. Критерии готовности
  21. Краткое резюме
  22. Вопросы для самопроверки
  23. Что дальше

Зачем это нужно

В уроке 7.1 мы разобрали tool как исполняемую capability агента. Но если каждая AI application подключает tools по-своему, быстро возникает интеграционный зоопарк.

Один и тот же GitHub workflow приходится отдельно встраивать в:

  • Codex;
  • Claude Code;
  • Cursor;
  • внутренний agent host;
  • IDE extension;
  • CI automation;
  • кастомный multi-agent orchestrator.

Каждый клиент по-своему решает:

  • как узнать доступные tools;
  • как передать arguments;
  • как получить result;
  • как дать read-only context;
  • как показать reusable prompts;
  • как управлять permissions;
  • как подключить local или remote server.

MCP - Model Context Protocol - нужен как стандартный слой между AI applications и внешними capabilities.

Главная цель урока - понять архитектуру MCP: host, MCP client, MCP server, tools, resources, prompts и external systems.

Основная идея

Model Context Protocol - это стандартный способ соединять AI applications с внешними context и capabilities.

Упрощенно:

text
AI application хочет использовать внешний мир.
MCP задает общий протокол, как этот внешний мир подключить.

Базовая схема:

text
AI Agent / Host
       |
   MCP Client
       |
       v
   MCP Server
   |-- Tools
   |-- Resources
   `-- Prompts
       |
       v
External System

External system может быть:

  • GitHub;
  • Jira;
  • Linear;
  • PostgreSQL;
  • browser automation;
  • internal API;
  • documentation store;
  • monitoring system;
  • CI/CD platform.

MCP не заменяет агента и не является моделью. MCP стандартизирует границу доступа к tools и context.

MCP как граница системы

MCP полезно понимать не как "еще один способ вызвать API", а как системную границу между agent host и внешними capabilities. На этой границе решается, какие действия доступны, как они описаны модели, какие данные можно читать, какие prompts можно предложить пользователю и какие permissions применяются.

Без такой границы каждая agent application начинает изобретать собственный способ подключать GitHub, database, docs, CI, browser automation и internal APIs. В одном клиенте tool называется github_action, в другом call_github, в третьем просто run. Где-то output structured, где-то plain text. Где-то write action требует approval, где-то нет. В результате команда не может уверенно сказать, что "агент имеет безопасный доступ к GitHub". У нее есть набор разных, несовместимых интеграций.

MCP предлагает другой mental model:

text
External capability is packaged once as a server.
Host connects through a known protocol.
Capabilities are discoverable.
Tools, resources and prompts have metadata.
Policies can be applied at the boundary.

Это не означает, что MCP автоматически делает интеграцию хорошей. Плохо спроектированный MCP server все еще может быть опасным. Но MCP дает место, где можно выразить хороший дизайн: узкие tools, read-only resources, reusable prompts, scopes, approvals, logs и понятные errors.

Для курса важна именно эта мысль: MCP не про "модную интеграцию", а про переносимую и управляемую границу capability.

Ключевые термины

Термин Значение
MCP Model Context Protocol, стандартный протокол обмена context/capabilities между AI applications и servers.
MCP Host AI application, которая управляет агентом и подключениями к MCP servers.
MCP Client Компонент внутри host, который поддерживает соединение с конкретным MCP server.
MCP Server Программа, предоставляющая context и capabilities.
Tool Исполняемая функция, которую модель может вызвать.
Resource Данные или context, которые server предоставляет client/host.
Prompt Переиспользуемый prompt/template, который server может предоставить пользователю или приложению.
Data Layer JSON-RPC слой сообщений и primitives.
Transport Layer Способ связи client/server, например stdio или Streamable HTTP.
Capability Discovery Процесс выяснения, какие primitives server поддерживает.

Почему не хватит "просто API"

Можно спросить:

text
Почему агент просто не вызывает REST API напрямую?

Потому что у agent integrations есть повторяющиеся проблемы:

  • model-facing descriptions;
  • input schemas;
  • structured outputs;
  • tool discovery;
  • read-only resources;
  • prompt templates;
  • permissions;
  • approvals;
  • audit;
  • local tools;
  • remote services;
  • multiple AI clients.

Обычный REST API обычно проектируется для приложения или backend service. MCP проектируется именно для AI applications, которым нужно предоставить tools и context в понятном, discoverable и управляемом виде.

Что меняется для разработчика

Если смотреть глазами backend-разработчика, MCP может казаться лишней прослойкой над уже существующим API. Но agent-facing integration отличается от обычной backend integration.

Обычный backend client обычно пишет человек-программист. Он читает документацию API, выбирает endpoint, обрабатывает edge cases в коде, добавляет retries, логирует результат и деплоит приложение. LLM-agent работает иначе: он видит descriptions, выбирает tool по текстовому описанию, строит arguments в момент выполнения и использует результат как часть reasoning loop.

Из-за этого для agent integration особенно важны:

  • names and descriptions, которые модель не перепутает;
  • schema, которая ограничивает arguments;
  • output, который модель может превратить в evidence;
  • permissions, которые не зависят от доброй воли модели;
  • resource boundaries, чтобы data не стала instruction;
  • prompts, которые помогают пользователю запускать типовые workflows;
  • audit, чтобы действия агента можно было восстановить.

MCP собирает эти требования в один interface. Разработчик MCP server проектирует не просто "обертку над API", а модель взаимодействия между AI host, external system и policy.

Хороший вопрос при проектировании MCP server:

text
Что должен увидеть agent host,
чтобы модель могла безопасно и предсказуемо использовать capability?

Ответ редко ограничивается endpoint URL. Обычно нужны primitive type, description, schema, permissions, examples, error semantics и approval policy.

Участники MCP

MCP Host

Host - это AI application.

Примеры:

text
Codex-like coding agent
Claude Desktop
IDE agent
internal support agent
multi-agent orchestrator

Host отвечает за:

  • взаимодействие с пользователем;
  • выбор model/runtime;
  • управление MCP clients;
  • permission UI;
  • включение tool/resource metadata в контекст модели;
  • обработку results;
  • policies.

MCP Client

Client - это connector внутри host для одного MCP server.

Если host подключен к трем servers, обычно есть три clients:

text
Host
├── MCP Client -> GitHub MCP Server
├── MCP Client -> PostgreSQL MCP Server
└── MCP Client -> Docs MCP Server

Client отвечает за:

  • соединение с server;
  • discovery capabilities;
  • отправку requests;
  • получение responses;
  • передачу data в host.

MCP Server

Server - это программа, которая предоставляет primitives:

text
tools
resources
prompts

Server может быть:

  • local process;
  • remote HTTP service;
  • wrapper вокруг SaaS API;
  • wrapper вокруг internal system;
  • read-only documentation provider;
  • local filesystem/context provider.

Server не обязан быть "большим сервисом". Но если он дает внешние capabilities агенту, его нужно проектировать с permissions и audit.

MCP layers

MCP удобно мыслить двумя слоями:

Слой За что отвечает
Data layer Сообщения, capability discovery, primitives: tools/resources/prompts.
Transport layer Как client и server соединяются и передают сообщения.

Для курса 101 важно понимать не детали wire protocol, а engineering boundary:

text
Data layer говорит "что доступно и как вызвать".
Transport layer говорит "как доставить сообщение".

На практике MCP поддерживает local transports, например stdio, и remote transports, например Streamable HTTP. Local server удобен для инструментов на машине разработчика. Remote server удобен для SaaS, team services и shared integrations.

Tools, Resources, Prompts

MCP server может предоставлять три главных server primitives:

Primitive Простое объяснение Пример
Tool Действие create_issue, query_database, run_ci_job
Resource Контекст или данные schema://database, docs://architecture, logs://service
Prompt Reusable template review_pr, write_release_notes, debug_incident

Главная ошибка новичка:

text
Все превращать в tool.

Если capability только читает context, возможно, это resource. Если это reusable instruction, возможно, это prompt. Если это действие с side effects, это tool.

Эту границу подробно разберем в уроке 7.3.

Capability Discovery

MCP нужен не только для вызова tools. Он еще позволяет host понять, что server умеет.

Упрощенный flow:

sequenceDiagram participant H as MCP Host participant C as MCP Client participant S as MCP Server H->>C: connect server C->>S: discover capabilities S-->>C: tools/resources/prompts supported C-->>H: register available primitives H->>S: list tools or resources when needed S-->>H: metadata H->>H: expose relevant context to model

Зачем discovery:

  • host не должен угадывать server capabilities;
  • tools/resources/prompts могут меняться;
  • permissions могут ограничивать список доступного;
  • UI может показать пользователю, что подключено;
  • модель получает только релевантные capabilities.

Local MCP server

Local server запускается на машине пользователя или agent environment.

Примеры:

text
filesystem MCP server
local git MCP server
local docs index
local browser automation server
local test runner wrapper

Плюсы:

  • быстрый доступ к локальным файлам;
  • нет сетевой задержки;
  • удобно для developer workflows;
  • можно использовать local credentials или local environment.

Минусы:

  • сложнее share между командой;
  • зависит от local setup;
  • security зависит от machine permissions;
  • не всегда подходит для SaaS integrations.

Remote MCP server

Remote server работает как сетевой сервис.

Примеры:

text
GitHub MCP server
Sentry MCP server
Jira MCP server
PostgreSQL gateway
internal observability server
company docs server

Плюсы:

  • общий endpoint для разных clients;
  • centralized permissions;
  • audit logs;
  • team governance;
  • проще обновлять server-side logic.

Минусы:

  • нужна authentication;
  • нужно думать о scopes;
  • есть network failure modes;
  • выше требования к security;
  • нужна политика для write/destructive actions.

Пример 1: GitHub

MCP server для GitHub может предоставить:

Tools:

text
create_issue(title, body, labels)
comment_on_pr(pr_number, body)
request_review(pr_number, reviewers)

Resources:

text
github://repo/pull/123/diff
github://repo/issues/456
github://repo/actions/runs/789/logs

Prompts:

text
review_pull_request
summarize_issue_thread
prepare_release_notes

Agent workflow:

text
Read PR diff resource
Use review prompt
Maybe call comment_on_pr tool after user approval

Пример 2: PostgreSQL

MCP server для database может предоставить:

Resources:

text
db://main/schema
db://main/tables/users
db://main/views/monthly_revenue

Read tools:

text
query_readonly(sql)
explain_query(sql)

Write tools, если вообще разрешены:

text
request_migration_review(migration_sql)

Важно: не нужно делать run_any_sql(sql) без ограничений. Database MCP особенно требует least privilege.

Пример 3: Documentation

Docs MCP server может быть почти полностью resource-oriented:

Resources:

text
docs://architecture/current
docs://adr/004-event-boundaries
docs://runbooks/payments-incident

Prompts:

text
summarize_runbook
answer_with_sources
draft_adr

Tools могут вообще не понадобиться, если server только отдает read-only knowledge.

Что MCP не делает

MCP не является:

  • LLM model;
  • agent planner;
  • replacement для specs;
  • replacement для skills;
  • secret manager сам по себе;
  • universal security solution;
  • reasoner;
  • deployment platform;
  • guarantee, что tool безопасен.

MCP задает стандартный interface. Без правильного design плохой MCP server просто стандартизирует плохую интеграцию.

MCP и Skills

Skills и MCP часто работают вместе, но отвечают за разные вопросы.

Механизм Вопрос
Skill Как выполнять workflow?
MCP Tool Как выполнить внешнее действие?
MCP Resource Как получить внешний context?
MCP Prompt Как предоставить reusable interaction template?

Пример:

text
Skill: review-code-against-spec
MCP Resource: github://repo/pull/123/diff
MCP Tool: comment_on_pr()
MCP Prompt: review_pull_request

Skill может сказать:

text
Read PR diff resource, compare with spec, produce findings.
Only call comment tool after user confirms.

MCP дает capability. Skill задает procedure.

Практика: MCP схема для demo workflow

Задача:

text
AI agent должен помочь разработчику обработать GitHub PR:
1. Прочитать diff.
2. Сравнить его со spec.
3. Проверить CI.
4. Написать review summary.
5. По approval оставить comment в PR.

Нарисуйте схему:

text
Host:

MCP Clients:

MCP Servers:

Tools:

Resources:

Prompts:

Approval points:

Пример ответа:

text
Host:
Codex-like coding agent

MCP Clients:
- GitHub client
- Docs/spec client
- CI client

MCP Servers:
- GitHub MCP server
- Project docs MCP server
- CI MCP server

Resources:
- github://repo/pull/123/diff
- docs://specs/team-invitations
- ci://runs/456/logs

Tools:
- comment_on_pr(pr, body)
- rerun_ci(run_id)

Prompts:
- review_pr_against_spec

Approval points:
- comment_on_pr requires user confirmation
- rerun_ci may require confirmation depending on cost

Типичные ошибки

Ошибка Почему плохо Исправление
MCP считают агентом Неправильная ответственность MCP только предоставляет context/capabilities.
Все делают tool Read-only context получает лишний риск Использовать resources.
Server получает слишком широкие права Один prompt может вызвать dangerous action Least privilege и scopes.
Нет discovery design Host не знает, что доступно Явно описывать tools/resources/prompts.
Один server делает все Большая blast radius Разделять по domain и risk.
Skills смешивают с MCP Procedure путается с capability Skill описывает workflow, MCP дает действия.

Критерии готовности

После урока студент должен уметь:

  • объяснить, зачем нужен MCP;
  • назвать роли host, MCP client и MCP server;
  • объяснить tools, resources и prompts на верхнем уровне;
  • отличить local MCP server от remote MCP server;
  • нарисовать MCP architecture для простого workflow;
  • объяснить, как MCP связан со skills;
  • назвать границы MCP.

Краткое резюме

MCP - это протокол для подключения AI applications к внешним context и capabilities. Он помогает не писать отдельную интеграцию под каждого agent client.

Ключевая архитектура:

text
Host -> MCP Client -> MCP Server -> External System

Server предоставляет primitives:

  • tools для действий;
  • resources для context;
  • prompts для reusable templates.

MCP делает integrations переносимыми и управляемыми, но не отменяет необходимость проектировать permissions, scopes, approvals и safety boundaries.

Вопросы для самопроверки

  1. Чем MCP host отличается от MCP client?
  2. Почему один host может иметь несколько MCP clients?
  3. Что MCP server предоставляет agent application?
  4. Когда лучше local MCP server, а когда remote MCP server?
  5. Почему MCP не заменяет skills?

Что дальше

В следующем уроке мы разберем три primitives MCP подробнее: tools, resources и prompts. Это важная граница: если read-only context ошибочно сделать write-capable tool, agent system станет опаснее без реальной пользы.

Обновлено 03.10.2026