IT · Model Context Protocol

Основний концепт MCP архітектури

Host · Client · Server · Tools · MCP Flow

Урок 3

План заняття

  1. 01 Архітектура MCP
  2. 02 Tools, Resources і Prompts
  3. 03 MCP Flow та роль LLM

Блок 1

Архітектура MCP

Що таке MCP і хто бере участь у протоколі

Архітектура MCP

Що таке MCP

Model Context Protocol — стандарт передачі контексту мовним моделям: промпт, інструкції для tools, додаткові дані.

MCP — універсальний інтерфейс (аналог USB-C): один Server підключається до різних AI-додатків без змін.

Архітектура MCP

MCP Host

Що це: AI-додаток, який використовує MCP для роботи з зовнішніми сервісами.

За що відповідає

Отримує запит користувача, визначає потрібні tools або дані, ініціює взаємодію через MCP і формує фінальну відповідь.

Приклади

Cursor, Claude Desktop, VS Code, кастомні AI-агенти.

Архітектура MCP

MCP Client

Що це: компонент всередині Host, який говорить із MCP Server мовою протоколу.

За що відповідає

Встановлює з'єднання з Server, надсилає запити і отримує відповіді. Один Client — один Server.

Приклади

Кілька серверів у Cursor → Host створює окремий Client для Notion, GitHub, Jira.

Архітектура MCP

MCP Server

Що це: програма, яка надає AI-додатку стандартизований доступ до зовнішньої функціональності.

За що відповідає

Експонує tools, resources і prompts; виконує дії і звертається до API, баз даних та інших сервісів.

Приклади

Notion MCP Server, GitHub MCP Server, PostgreSQL MCP Server, власний сервер на Python.

Архітектура MCP

MCP Protocol

Що це: стандарт взаємодії між Client і Server на основі JSON-RPC 2.0.

За що відповідає

Формат запитів і відповідей, правила handshake, виклик tools і читання resources.

Приклади

initialize, tools/list, tools/call, resources/read.

Архітектура MCP

MCP Protocol · JSON-RPC 2.0

Client і Server обмінюються JSON-повідомленнями за стандартом JSON-RPC 2.0: method, params, id → result або error.

{ "jsonrpc": "2.0", "id": 1,
  "method": "tools/list", "params": {} }
  • MCP-методи: initialize, tools/list, tools/call, resources/read
  • SDK формує JSON автоматично — ви описуєте tools, не протокол вручну

Архітектура MCP

Як це працює

Архітектура MCP

MCP SDK

Що це: офіційні бібліотеки (Python, TypeScript тощо) для створення власного MCP Server без ручної реалізації протоколу.

Що робить SDK

  • приховує низькорівневий JSON-RPC і transport
  • обробляє lifecycle: initialize, handshake, відповіді
  • автоматично обслуговує tools/list і tools/call
  • ви описуєте tools декораторами — SDK формує протокол

Де потрібен

Host і Client зазвичай уже вбудовані в AI-додаток. SDK потрібен для написання Server.

Архітектура MCP

MCP SDK · приклад

Найпростіший MCP Server на Python з одним tool hello:

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

app = Server("my-server")

@app.list_tools()
async def list_tools():
    return [{"name": "hello", "description": "Say hello"}]

@app.call_tool()
async def call_tool(name, arguments):
    return [{"type": "text", "text": "Hello, World!"}]

async with stdio_server() as streams:
    await app.run(*streams)

Блок 2

Tools, Resources і Prompts

Три інтерфейси MCP Server

Tools, Resources і Prompts

Tools — дії

create_notion_page · search_jira_issues · run_sql_query · get_figma_design_context · create_github_issue

«Створи баг у Jira про помилку логіну» → LLM викликає create_jira_issue з title і description.

Tools, Resources і Prompts

Resources — контекст

Static: api-spec.json, schema.sql, README.md, PDF

Dynamic: статус CI/CD, відкриті PR, сторінка Notion, feature flags

«Які поля в таблиці users?» → читання db/schema.sql без виклику tool.

Tools, Resources і Prompts

Prompts — шаблони

code-review · summarize-meeting · design-to-code · write-api-test

Зробити → tools · Прочитати → resources · Стандартизувати → prompts

Tools, Resources і Prompts

Один файл — три сутності

Приклад MCP Server на Python: tool, resource і prompt в одному server.py.

from fastmcp import FastMCP

mcp = FastMCP("demo-server")

# Tool — дія
@mcp.tool
def create_jira_issue(title: str, description: str) -> str:
    """Створити issue в Jira."""
    return f"Issue created: {title}"

# Resource — контекст
@mcp.resource("db://schema.sql")
def db_schema() -> str:
    """Схема таблиць БД."""
    return "CREATE TABLE users (id INT, email TEXT)"

# Prompt — шаблон
@mcp.prompt
def code_review(path: str) -> str:
    """Шаблон code review."""
    return f"Review {path}: style, tests, security"

if __name__ == "__main__":
    mcp.run()

Блок 3

MCP Flow

Виконання tools та роль LLM

MCP Flow

Що куди надсилається

Фінал заняття

Підсумки

На цій лекції ми розібрали архітектуру MCP: ролі Host, Client і Server, основу протоколу та три інтерфейси сервера — tools, resources і prompts.

Також побачили MCP Flow — як застосунок, LLM і MCP Server взаємодіють під час виконання запиту користувача.

У наступній лекції перейдемо до transport layer і створення власного MCP-сервера на Python.