# MCP є транспортом, Не є архітектурою

<!-- category -- MCP, ACP, AI,Architecture,LLM,Patterns -->
<datetime class="hidden">2026-01-20T16:00</datetime>

*Це частина 2 з "LLMs як компонентів МSK2 [Частина 1: Чому LLM не працює як датчики](/blog/llms-fail-as-sensors) описує категорію помилки використання LLM для сприйняття*

---


**" Як я будую MCP-сервер**

Существуют SDKs. LLM може підштовхуватись один раз за секунду . Справжнє питання:

> *Яка роль має відіграти MCP сервер всередині системи, яка не повинна ховатися?*

Найрідкіснішою майстерністю тепер є проектування **система навколо** MCP: організаціяМSK1 дозвілМСК2 перевіряльністьMСК3 та детерміністична kontrolaM СК4 МПК керує транспортом М СК5 ці проблеми живуть в іншому місціМ SК6

Ця стаття пояснює, як я користуюся MCP **без агентів, автономіїM SK1 або вібр**, і чому більшість прикладів MCP відтворюють ті самі проблеми, які ми бачили з неупередженими інструментами, що називали

[TOC]

---


## Що таке насправді MCP? ( І чи не так?

MCP (Model Context Protocol) - це **кабельний протокол**. Переміщується

- Введення та виведення
- Сchéми
- Метадані інструмента
- Дослідження можливостей

Так і є. **не**:

- Визначати *коли* інструменти повинні працювати
- Вивірити правду
- Вказувати на довіру
- Управляйте побічними ефектами

```mermaid
flowchart LR
    subgraph MCP["MCP: What It Does"]
        Schema[Schema Discovery] --> Transport[Transport Layer]
        Transport --> Invoke[Tool Invocation]
        Invoke --> Response[Structured Response]
    end

    subgraph NotMCP["Not MCP's Job"]
        When[When to run?]
        Trust[Is this true?]
        Should[Should we act?]
        Safe[Is this safe?]
    end

    style MCP fill:none,stroke:#16a34a,stroke-width:2px
    style NotMCP fill:none,stroke:#dc2626,stroke-width:2px
    style Schema fill:none,stroke:#059669,stroke-width:2px
    style Transport fill:none,stroke:#059669,stroke-width:2px
    style Invoke fill:none,stroke:#059669,stroke-width:2px
    style Response fill:none,stroke:#059669,stroke-width:2px
    style When fill:none,stroke:#dc2626,stroke-width:2px
    style Trust fill:none,stroke:#dc2626,stroke-width:2px
    style Should fill:none,stroke:#dc2626,stroke-width:2px
    style Safe fill:none,stroke:#dc2626,stroke-width:2px
```

**MCP ближче до OpenAPI, ніж до механізму агента.**

Якщо ви ' використовуєте MCP як your reasoning layer, ви \' вже зробили ту ж категорію помилки, яка описана в [Частина 1](/blog/llms-fail-as-sensors).

Якщо MCP є транспортом, то архітектура живе над ним.

---


## Головний принцип: proposal vs decision

Це основний принцип [Reduced RAG](/blog/reduced-rag) і [Стримана неясність](/blog/constrained-fuzzy-image-intelligence):

- **Пропонують можливий компонент**
- **Детерміністичні системи вирішують**

У своїх системах:

- ЛЛМ є *ніколи* органи влади
- Інструменти: *ніколи* автономна
- Кожна реакція MCP - **пропозицію**, - це не факт

"DeterministycznyM SK1 тут не значить 't означає спрощений M SK3 Це означає **правило МСК0 управління МSK1 повторюваність , і перевіряється**.

```mermaid
flowchart TD
    subgraph Proposers["Proposers (Probabilistic)"]
        LLM[LLM Synthesis]
        MCP1[MCP Tool Response]
        MCP2[MCP Tool Response]
    end

    subgraph Constrainer["Constrainer (Deterministic)"]
        Validate[Validate Proposals]
        Compare[Compare Confidence]
        Policy[Apply Policy Rules]
        Decide[Accept / Reject / Escalate]
    end

    subgraph Persistence["Persistence (Facts)"]
        Facts[(Verified Facts<br/>With Provenance)]
    end

    LLM --> Validate
    MCP1 --> Validate
    MCP2 --> Validate
    Validate --> Compare
    Compare --> Policy
    Policy --> Decide
    Decide --> Facts

    style Proposers fill:none,stroke:#d97706,stroke-width:2px
    style Constrainer fill:none,stroke:#2563eb,stroke-width:2px
    style Persistence fill:none,stroke:#16a34a,stroke-width:2px
    style LLM fill:none,stroke:#d97706,stroke-width:2px
    style MCP1 fill:none,stroke:#d97706,stroke-width:2px
    style MCP2 fill:none,stroke:#d97706,stroke-width:2px
    style Validate fill:none,stroke:#2563eb,stroke-width:2px
    style Compare fill:none,stroke:#2563eb,stroke-width:2px
    style Policy fill:none,stroke:#2563eb,stroke-width:2px
    style Decide fill:none,stroke:#2563eb,stroke-width:2px
    style Facts fill:none,stroke:#16a34a,stroke-width:3px
```

Сервер MCP не вирішує: МСК0 , ".", а констренер вирішував:" МSK2 .

---


## Чому "Tools" є неправильним ментальним моделлю

Початковий формат MCP - ":".

- "Виражати методи як інструментиM SK1
- "Дозвольте моделлю вибрати, яким інструментом телефонувати
- "Попросити дозволу перед виконаннямM SK1

Це не спрацьовує з передбачуваних причин:

1. **описи інструментів стають про prompts**: LLM визначає намір з формулюваннямM SK1 а не з семантики схеми
2. **Вибір інструментів рухається**: Модель оптимізується для вірогідності , не коректності МSK2 і вибирає інструменти на основі схожості опису
3. **Пропони дозволу - UX,, а не безпека**: Модальний dialog не застерігає за тим, щоб не вибрали неправильного інструмента
4. **Не можна відтворювати**: Ви не можете ' відтворити сеанс, тому що вибір інструмента був ймовірністичний

**Переформулювати: Кондитори MCP публікують сигнали**

- Сигнали пишуть:, ограниченіM SK1 і приписні
- Кожен сигнал має довіру, проходженняM SK1 і вказівники доказів
- Природний мова - це *шар презентації*, не субстрат

```mermaid
flowchart LR
    subgraph Wrong["❌ Tools Mental Model"]
        Desc[Tool Description<br/>'Gets weather for city'] --> LLM1[LLM Chooses]
        LLM1 --> Execute[Execute Action]
        Execute --> Trust1[Trust Result?]
    end

    subgraph Right["✓ Signals Mental Model"]
        Schema2[Typed Schema<br/>city: string, units: enum] --> Invoke2[Deterministic Invoke]
        Invoke2 --> Signal[Signal Response<br/>+ confidence + provenance]
        Signal --> Validate2[Constrainer Validates]
    end

    style Wrong fill:none,stroke:#dc2626,stroke-width:2px
    style Right fill:none,stroke:#16a34a,stroke-width:2px
    style Desc fill:none,stroke:#dc2626,stroke-width:2px
    style LLM1 fill:none,stroke:#dc2626,stroke-width:2px
    style Execute fill:none,stroke:#dc2626,stroke-width:2px
    style Trust1 fill:none,stroke:#dc2626,stroke-width:2px
    style Schema2 fill:none,stroke:#16a34a,stroke-width:2px
    style Invoke2 fill:none,stroke:#16a34a,stroke-width:2px
    style Signal fill:none,stroke:#16a34a,stroke-width:2px
    style Validate2 fill:none,stroke:#16a34a,stroke-width:2px
```

---


## Сигнальний контракт через чат

Кожен кінцевий пункт MCP в моїх системах має:

- **Сchéма**: Надруковані вхідні і вихідні даніM SK1 не безкоштовні-формовий текст
- **Упевненість**: Наскільки точно цей результат
- **Провенанс**: Звідки це взялося? МSK1 МSK2 ID кадру , коробка з вигином
- **Доказники доказів**: Що можна перевірити незалежноM SK1

Ні безкоштовного-авторства текстуM SK1 Ні " найкращого зусильMSC3 відповідейМSK4

**Приклади з виробничих систем:**

| Сигнал МSK1 Źródło довіри МSK2 Показчик доказів |
|--------|-------------------|------------------|
| Видобуток OCR тексту | Флоренція МSK2 довіра балу | | МSK3 | Координації у будівниці | | |
| класифікація образів МSK1 бал схожості CLIP МSK2 вбудова + балхожості M+ ідентифікатор відображання МСК5
| Аудіо-транскрипція
| Identifikaція głośnikа | Відстані кластерної діарізації МSK2 Похибки сегменту МSK3

**Правило: Якщо результат не підтверджується**

Це той самий принцип, що і [Правила проектування #5](/blog/llms-fail-as-sensors): факти потребують доказуM SK1

---


## Конструктор - МСК0 - частина, яку всі перекидають

Більшість уроків MCP показують:

1. Визначати інструменти
2. Підключитися до LLM
3. Дозвольте мені бігти

Відсутня компонента - **констренер** - детерміністична логіка, що

- Оцінює конкурентні рішення
- Втілює політику
- вирішує, що залишається і що відкидається
- Дороги до эскалації, коли рівень довіри низький

```mermaid
flowchart TD
    subgraph Sources["Signal Sources"]
        Heuristics[Heuristics<br/>Text-likeliness: 0.3]
        LocalModel[Local Model<br/>Florence-2 OCR: 0.85]
        LLMCall[LLM Escalation<br/>GPT-4V: 0.92]
    end

    subgraph Constrainer["Constrainer Logic"]
        Receive[Receive All Signals]
        Check{Confidence<br/>≥ 0.7?}
        Cross[Cross-Validate<br/>Signals Agree?]
        Accept[Accept as Fact]
        Reject[Reject / Log]
        Escalate[Escalate to<br/>Higher Tier]
    end

    Heuristics --> Receive
    LocalModel --> Receive
    LLMCall --> Receive

    Receive --> Check
    Check -->|Yes| Cross
    Check -->|No| Escalate
    Cross -->|Yes| Accept
    Cross -->|No| Reject

    style Sources fill:none,stroke:#d97706,stroke-width:2px
    style Constrainer fill:none,stroke:#2563eb,stroke-width:2px
    style Heuristics fill:none,stroke:#d97706,stroke-width:2px
    style LocalModel fill:none,stroke:#d97706,stroke-width:2px
    style LLMCall fill:none,stroke:#d97706,stroke-width:2px
    style Receive fill:none,stroke:#2563eb,stroke-width:2px
    style Check fill:none,stroke:#2563eb,stroke-width:2px
    style Cross fill:none,stroke:#2563eb,stroke-width:2px
    style Accept fill:none,stroke:#16a34a,stroke-width:2px
    style Reject fill:none,stroke:#dc2626,stroke-width:2px
    style Escalate fill:none,stroke:#7c3aed,stroke-width:2px
```

**Справжні рішення щодо констренаторів:**

- Відкидати субтитра LLM, коли гуристика не погоджується з текстом-подобність
- Prefer lower-confidence but evidenced OCR over highMSC1confident hallucinated text
- Переходити до візуалізації LLM тільки тоді, коли локальна модель впевнена < МSK1

**MCP з 'єднує компоненти. Констренер керує нимиM SK1**

---


## Вимкнення LLM ( І чому я це роблю)

Мої MCP сервери досі функціонують з неможливим LLM.

Це не "'", а degraded mode . **первинний режим**.

Якщо ваша система припиняє працювати, коли LLM не доступний,

Корінні функції:

- Детерміністичне підсумування отриманих фактів
- Докази-першое відтворення за допомогою вбудованих і фільтрів
- Структуровані питання щодо бази даних фактів

LLM стає:

- Синтезовий шар (опціональнийM SK1
- Показовий двигун ( при запиті МSK1
- Обогатювач ( для виведення природного мовиM SK1

LLM - **не**:

- Приймаючи рішення
- Пам 'ять
- Мотор правди

```mermaid
flowchart TD
    subgraph AlwaysOn["Always On (Deterministic)"]
        Sensors[Sensors + Heuristics]
        Local[Local Models<br/>Florence-2, Whisper, CLIP]
        Facts[(Facts Database)]
        Query[Query Engine]
    end

    subgraph Optional["Optional (LLM)"]
        Synthesis[Natural Language Synthesis]
        Explain[Explanation Generation]
    end

    Sensors --> Local
    Local --> Facts
    Facts --> Query
    Query --> Synthesis
    Query --> Explain

    style AlwaysOn fill:none,stroke:#16a34a,stroke-width:2px
    style Optional fill:none,stroke:#6b7280,stroke-width:2px,stroke-dasharray: 5 5
    style Sensors fill:none,stroke:#16a34a,stroke-width:2px
    style Local fill:none,stroke:#16a34a,stroke-width:2px
    style Facts fill:none,stroke:#16a34a,stroke-width:3px
    style Query fill:none,stroke:#16a34a,stroke-width:2px
    style Synthesis fill:none,stroke:#6b7280,stroke-width:2px
    style Explain fill:none,stroke:#6b7280,stroke-width:2px
```

**Чому це важливо:**

| Прибутки | LLMM SK2Погані системи МSK3 LL-Опціональні системи \|
|---------|---------------------|----------------------|
| **Ціна** | За МSK1 Koszt API запросу МSK2 фіксована інфраструктура |
| **Надежність** | API вимкнуто = система вимкнена МSK2 Корінні функції продовжуються МSK3
| **Тестованість** | Похибка відповідей LLM | Детерміністичні твердження МSK2
| **Довіра** МSK0 " Модель відповіла так.

---


## MCP як межа, Не є інтеграцією

Я ставлюся до MCP як до **жорстка межа**:

- **Процес ізоляції**: Сервери MCP запускаються в окремих процесах
- **Виражені вхідні дані/виходи**: Немає спільного мутабельного стану
- **Жодного контексту**: Кожен дзвінок вираховується на експлициальних входахM SK1 не залишків розмови
- **Типовані контракти**: Похибки до схем - це помилки , не попередження

Це контрастує з:

- В-процесові агенти з спільним пам 'ятьм
- Про prompt- пов 'язування з прихованим накопиченням контексту
- "Conversational" використання інструмента, коли попередні повороти впливають на поведінку

**Чому важливі кордони:**

1. **Повторюй**: Репродуцювати будь-яку сесію, відтворюючи вхідні дані
2. **Аудит**: Кожен сигнал має відслідковую основу
3. **Детерміністичне тестування**: Ті ж самі вхідні дані → ті ж самі вихідні дані
4. **Відповідальність**: Пояснення ланцюга прийняття рішень

```mermaid
flowchart LR
    subgraph Process1["Process: Orchestrator"]
        Orch[Orchestrator<br/>Constrainer Logic]
    end

    subgraph Process2["Process: MCP Server 1"]
        MCP1[Image Analysis<br/>Signals]
    end

    subgraph Process3["Process: MCP Server 2"]
        MCP2[Audio Analysis<br/>Signals]
    end

    subgraph Process4["Process: MCP Server 3"]
        MCP3[Video Analysis<br/>Signals]
    end

    Orch <-->|MCP Protocol| MCP1
    Orch <-->|MCP Protocol| MCP2
    Orch <-->|MCP Protocol| MCP3

    style Process1 fill:none,stroke:#2563eb,stroke-width:2px
    style Process2 fill:none,stroke:#16a34a,stroke-width:2px
    style Process3 fill:none,stroke:#16a34a,stroke-width:2px
    style Process4 fill:none,stroke:#16a34a,stroke-width:2px
    style Orch fill:none,stroke:#2563eb,stroke-width:2px
    style MCP1 fill:none,stroke:#16a34a,stroke-width:2px
    style MCP2 fill:none,stroke:#16a34a,stroke-width:2px
    style MCP3 fill:none,stroke:#16a34a,stroke-width:2px
```

---


## Моди невдачі MCP Examples Don't Talk About

Справжні випадки невдачі від необмеженого використання MCP:

| tryb непрацездатності МSK1 причина МSK2 полегшення |
|--------------|-------|------------|
| **Галюцинація інструментів** | Похибка опису в обґрунтування LLM МSK1 Minimal descriptionsM SK2 schema-first design |
| **Над - надмірне виконання** | Модель вызовів інструменти МSK1просто перевіритиM SK2 МSK3 Констрейнатор вмикає всі виклики
| **Дрейф схем** | Зміни в поведінці інструментаM SK1 схема не працює't | Версії схемМSK4 тести контракту МSK5
| **Невимушені частові невдачі** | Оборудование повертає частину даних , модель рухається вперед МSK2 Перепохи на впевненість МSK3 перевіряє повність
| **Надмірна впевненість в LLM** | Модель сприймає виведення інструментів як базову істину.
| **Збільшення можливостей** МSK0 Модель "тири МSK2 Поступово потужніші інструменти M| Уровни можливостей МСК4 Дослідження політики МПС5Budżeти MPС6

Поширена тема: **ці невдачі трапляються, тому що LLM є авторитетним**.

Установка: **Лідери LLM запропонують: МСК0 , Констрейнери вирішують:" МSK1 . Факти продовжуються**.

---


## Що робить MCP хорошим? (Когда його правильно використовують)

MCP чудовий для:

- **Дослідження можливостей**: Перечень доступних сигналів за час запуску
- **Поєднання процесів Inter-**: Чисти межі між компонентами
- **Взаємодія інструментів**: працює з будь-якими MCP-компанітивними клієнтами
- **Модель-Агностічна інтеграція**: Swap LLMs without changing signal contracts

MCP - **не**:

- Керамика агента
- Система мислення
- Безпечна поверхня
- Лінія довіри

Використовуйте MCP для того, що це

---


## Де зупиняється MCP

MCP стандартизує те, як моделі та інструменти обмінюються контекстом. Не визначає, хто має право діятиМSK1 в яких умовахM SK2 чи як перевіряють рішення.

Існують інші підходи, щоб формалізувати ці обмеження. ( інколи описані як протоколи з актовими можливостями МSK1 АCP МSK2 дозвіл , аттестація

Ця стаття не про AKP, а про принцип проектування. **транспорт і управління - це окремі проблеми**.

MCP каже вам *як* щоб викликати інструмент. Щось інше має вирішити *чи* у моїх системах МСК1, що МСК2 - це констренер МСК3, в корпоративних системах , - це може бути політичний двигун

---


## Демо MCP проти Production MCP

| Аспект МSK1 Демо-МПК МSK2 Продукція МКП |
|--------|----------|----------------|
| **описи інструментів** | Природна моваM SK1 детальна | Minimal МSK3 схема-перша МSK5
| **Хто вирішує викликати** МSK0 ЛЛМ | Оркестр МSK2 Конструктор |
| **Формат реагування** | БезкоштовнийM SK1формальний текст | Зроблені сигнали з впевненістю МSK3
| **Випробовування** | Ніхто МSK1 Перетинні МSK2validation
| **Відлежність від LLM** | Потрібно | Невключне забагачення МSK2
| **Повторюй** | Не МSK1детерміністичний МSK2 Полностью відтворюваний |
| **Прослідка аудиту** | журнали розмов МSK1 ланцюг проходження сигналу МSK2

---


## Завершення

MCP дозволяє **склад**.
Детермінізм дозволяє **довіра**.
Включити LLM **гнучкість**.

Але тільки тоді, якщо

> *Ймовірність передбачає —, а детермінізм залишається*

MCP без концентратора - це просто швидка ін 'єкція з додатковими кроками.

Зробіть синтез останнім кроком. Робіть LLM опційним. Робіте кожен факт відстежнимМSK2

---


## Головні терміни

- **MCP (Model Context Protocol)**: Мережний протокол для відкриття інструментів та виклику між процесами
- **Контренер**: Детерміністична логіка, яка оцінює рішення і вирішує, що залишається
- **Сигналь**: З typed відповіддю з довірою , проходження МSK2 і вказівники на докази
- **Автор:**: Будь-яка компонента МSK1 ЛЛМ МSK2 локальна модель , эврістика M SK4, яка передбачає факти без авторитету
- **Доказчик доказів**: Ссылка на перевіряний ресурс ( поле для прив 'язку МSK2 позначка часу МSK3 вбудова

---


## Подібні статті

**Поprzedні в серии:** [Частина 1: Чому LLM не працює як датчики](/blog/llms-fail-as-sensors)

- [Reduced RAG: MapM SK1Reduce for Probabilistic Systems](/blog/reduced-rag)
- [ImageSummarizer: Конstrained Fuzzy Image Intelligence](/blog/constrained-fuzzy-image-intelligence)
- [VideoSummarizer: Reduced RAG for Video](/blog/videosummarizer-scalable-video-intelligence)
- [StyloFlow: Сигнальний сигнал-Driven Workflows](/blog/styloflow-signal-driven-workflows)