# MCP on liikennemuoto, Se ei ole arkkitehtuuri

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

*Tämä on osa 2 "LLM:istä osina [Osa 1: Miksi LLM:t epäonnistuvat sensorina](/blog/llms-fail-as-sensors) käsitteli luokkavirhettä, joka liittyy LLM:ien käyttämiseen havainnossa. Tämä artikla käsittelee luokkaviittaa, joka koskee MCP:n käyttöä arkkitekniikassa.*

---


**" Miten rakendan MCP-verkon?**

SDK-järjestelmät ovat olemassa. LLM voi laajentaa järjestelmää yhdellä sekunnissaM SK1 Todellinen kysymys on

> *Mitä roolia MCP-serverilla pitäisi olla järjestelmässä, joka ei saa jäädä tilanteeseen?*

Harva taito suunnittelee nyt **järjestelmä** MCP: viranomaiset, , valtuudet,, tilintarkastuskelpoisuus, MSC3 ja deterministinen valvonta, M SK4 MCP hoitaa liikennettä, — kyseiset huolenaiheet elävät muualla, MSV6

Tässä artiklassa selitetään, miten käytän MCP:tä **ilman välineitä, itsemääräämisoikeuttaM SK1 tai vibeitä**, ja miksi useimmat MCP-esimerkit toistavat samat ongelmat kuin ne, joita olemme nähneet rajoittamattomalla työkalulla kutsuttaessa

[TOC]

---


## Mikä on itse asiassa MCP? (Ja onko se?

MCP (Model Context Protocol **yhteyspöytäkirja**. Se liikkuu

- Tulkit ja tulot
- Suunnitelmat
- Ohjelmien metadata
- Mahdollisuustutkimukset

Se on totta **ei**:

- Päätös *milloin* välineitä olisi käytettävä
- Todellisuuden todentaminen
- Luottamuksen noudattaminen
- Hallita sivuvaikutuksia

```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 on lähempänä OpenAPIa kuin agenttikehystä.**

Jos olette käyttämässä MCP:tä perusteena, olette jo tehnyt samaa kategorian virhettä, joka on kuvattu [Osa 1](/blog/llms-fail-as-sensors).

Jos MCP on liikenne, niin rakenteellinen rakenne elää sen yläpuolella.

---


## Keskeinen periaate: Ehdotus vs päätös

Tämä on perustavanlaatuinen sääntö [Vähennetty RAG](/blog/reduced-rag) ja [Rajoitettu epämääräisyys](/blog/constrained-fuzzy-image-intelligence):

- **Probabilistiset osatekijät ehdottavat**
- **Deterministiset järjestelmät päättävät**

Järjestelmissäni:

- LLM:t ovat *koskaan* viranomaiset
- välineet ovat *koskaan* autonominen
- Jokainen MCP:n vastaus on **ehdotus**, ei tosiasia

"DeterministinenM SK1 ei tarkoita tässä ' ei yksinkertaista **sääntö-hallinnoidaan, ,toistettavaksi,, ja tilintarkastettavaksi**.

```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-serveri ei päätä:'t decide. Konstraineri päättää:.

---


## Miksi "Tools" ovat väärä henkinen malli

Standardin mukainen MCP-raamaus on:

- "Methodit esitetään työkaluinaM SK1
- "Mudelma voi valita, mitä välinettä käyttää
- "pyytä lupaa ennen täytäntöönpanoa"

Tämä epäonnistuu ennustettavissa olevista syistä:

1. **Ohjelmien kuvaukset muuttuvat prompteiksi**: LLM väittää tarkoitusperän sanamuodostaM SK1 ei schemaa koskevasta semanttisesta
2. **Ohjelmien valinnat vaihtelevat**: Malli optimoi todennäköisyydelleen , ei virheellisyyden M SK2 ja valitsee välineet kuvauksen samankaltaisuuden perusteella
3. **Mahdollisuuspyynnöt ovat UX, ei turvallisuutta**: Muodollinen vuoropuhelu ei estä väärän välineen valintaa
4. **Ei ole mahdollista toistaa**: Ette voi reproducoida istuntoa, koska työkalujen valinta oli todennäköinen

**Uudelleenlaatiminen: MCP:n loppupisteet julkaisevat signaalitM SK1 ei toimia.**

- Viestit on kirjoitettu, rajattuM SK1 ja niihin voidaan liittää
- Jokaisella signaalilla on luotettavuutta, ,, alkuperää ja todisteita osoittavia viitteitä
- Luonnonkieli on *esittelytaso*, ei pohja

```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
```

---


## Viestisopimukset keskustelun aikana

Jokaisella järjestelmässäni olevalla MCP-yhteyksillä on

- **Järjestelmä**: Kirjoitetut入力et ja outputitM SK1 ei vapaita
- **Luottamus**: Kuinka varma tämä tulos on
- **Todisteet**: Mistä tämä tuli?
- **Todisteiden osoittimet**: Mitä voidaan tarkistaa itsenäisesti

Ei vapaita-tekstiviranomainen. Ei "parin mahdollinen ponnisteluMSC3 vastauksetM SK4

**Esimerkkejä tuotantojärjestelmistä:**

| signaali | | | Luottamuslähde || | Evidence Pointer
|--------|-------------------|------------------|
| OCR-tekstin extraktointi | FlorenceM SK2 luottamuksen tulos SSK3 Bounding box -koordinaatit |
| Kuvan luokittelu | | | CLIP-yhdenmukaisuusaste || | sisällyttäminen | МSK3 | yhtenäisyysaste
| Audio transcription | Sanon sananhuutoaM SK2tasoluottamus \|\Timetamp-alue \ |
| Puhemiehen tunnistaminen | Diarisaation klusterin etäisyydessä

**Säännös: Jos tulosta ei voida validaoida, se ei ole hyväksyttäväM SK3.**

Tämä on sama periaate kuin [suunnittelusääntö #5](/blog/llms-fail-as-sensors): tosiasiat edellyttävät todistusta

---


## Konstraineri: Se osa, jonka kaikki välttävät

Useimmat MCP-tutoriaalit osoittavat:

1. Määritellään työkalut
2. Liittyminen LLM-järjestelmään
3. Käyttäkää se!

puuttuva osatekijä on **Konstraineri** - deterministisen logiikan, jonka mukaan

- Arvioidaan kilpailevia ehdotuksia
- Politiikan täytäntöönpano
- Päätetään, mikä pysyy ja mikä hylätään
- Luottamuksen heikkenemiseen tähtäävät keinot

```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
```

**Todelliset constrainer-päätökset:**

- Hylkää LLM:n nimitys, kun heuristiikka ei ole samaa mieltä tekstistä-likeliness
- Suhtaudun mieluummin alhaisempaan-luottamukseen, mutta todistetun OCR:n kuin korkeaan
- Lähtönäköön siirtyminen LLM:iin vain silloin, kun paikallisella mallilla on luottamus < 0.7

**MCP yhdistää osat. Konstraineri ohjaa niitäM SK1**

---


## LLM:n sulkeminen pois (Ja miksi teen sen?

Minun MCP-Serverit toimivat edelleen LLM:n estetyllä tavalla.

Tämä ei ole ' -modus, joka on heikentynyt. **ensisijainen menettely**.

Jos järjestelmä lopettaa toimintansa, kun LLM ei ole saatavilla, LLM oli tekemässä työtä, sen ei olisi pitänyt

Keskeiset toiminnot:

- Deterministinen yhteenveto ekstrahoituista tosiasioista
- Todisteet-ensimmäinen haku sisällytteiden ja filtrtien kautta
- Rakennetut kysymykset tosiasioiden tietokantaan

LLM:sta tulee:

- Synteesin taso (vaihtoehtoinenM SK1
- Selitysmoottori (pyynnön yhteydessäM SK1
- Luonnollisen kielen outputin rikastaja (

LLM on **ei**:

- Päättäjän tehtävä
- Muisti
- Totuuden moottori

```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
```

**Miksi tämä on tärkeää:**

|Työ |LLMM SK2Välittämät järjestelmät
|---------|---------------------|----------------------|
| **Kustannus** |YhteensäM SK1kysymyksen API:n kustannukset
| **Luotettavuus** | API:n käytöstä poikkeus = järjestelmä huononee | | | Core-toimet jatkuvat ||
| **Testointikelpoisuus** | Mock LLM:n vastaukset | Deterministiset väitteet |
| **Luottamus** | "Mudelma sanoi niin.

---


## MCP rajana, Ei integrointi

Suhtaudun MCP:hen **tiukka raja**:

- **Prosessin eristäminen**: MCP-Serverit toimivat erillisissä prosesseissa
- **Selkeät tulot/tulot**: Ei yhteistä muuttavissa olevaa tilaa
- **Ei ympäristöä**: Jokainen puhelu arvioidaan yksiselitteisillä inputeilla
- **Luetellut sopimukset**: Järjestelmän rikkomukset ovat virheitäM SK1 eivät varoituksia

Tämä on ristiriidassa:

- In-prosessiagentit yhteisen muistin kanssa
- Prompt-kokeminen piilossa olevien asiasisältöjen keräämiseksi
- "Konversaatiota koskevaM SK1 työkalun käyttö, jossa aiemmat käänteet vaikuttavat käyttäytymiseen

**Miksi rajat ovat tärkeitä:**

1. **Toistaa**: Reproduce any session by replaying inputs
2. **Tarkastus**: Jokaisella signaalilla on jäljitettavissa oleva alkuperä
3. **Deterministinen testi**: Samat tulot
4. **Vaatimusten noudattaminen**: Selkeät päätöksentekoketjut

```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
```

---


## Menettelyjen epäonnistuminen MCP-esimerkit Don't Talk About

Todelliset epäonnistumiset rajoittamattoman MCP-käytön vuoksi:

| Epäonnistumisvaihe | Syy SSK2 lieventäminen |
|--------------|-------|------------|
| **Ohjelmien hallucinaatio** | Luettelo vuotaa LLM:n perusteluihin | vähimmäismäärittelytM SK2 kaavio-ensimmäinen malli SSK4
| **Over-toivottava täytäntöönpano** | Mallin puheluvälineet "tarkastetaan vain tarkistaa
| **Järjestelmävirrat** | Ohjelmien toimintatavat muuttuvatM SK1 schema ei't | Muutetut schemat
| **Siltilliset osittaiset epäonnistumiset** | Ohjelmisto palauttaa osittaiset tiedotM SK1 malli etenee | Luottamuksen raja-arvot
| **LLM:n yliluottamus** | Malli kohtelee työkalujen tulosta perustavanlaatuisena totuutena.
| **Capacity escalation** | malli "triesM SK2 asteittain vahvemmat välineet | kapasiteetin tasot m+ politiikan laatiminen M+ talousarviot ||

Yhteinen aihe: **nämä epäonnistumiset johtuvat siitä, että LLM on uskottu viranomaisena**.

Fix: **LLM:t ehdottavat, että tosiasiat pysyvät ennallaan**.

---


## Mitkä ovat MCP:n hyvät puolet? (Kui sitä käytetään asianmukaisesti?

MCP on erinomainen:

- **Mahdollisuustutkimukset**: Käytettävissä olevien signaalien runtime-luettelo
- **Inter-prosessi koostumus**: Komponentien väliset rajat on puhdattava
- **Ohjelmien yhteentoimivuus**: Soveltuu mihin tahansa MCP:n ja -:n yhteensopiviin asiakkaihin
- **Malli-agnostinen yhdentyminen**: Swap LLMs muuttamatta signaalisopimuksia

MCP on **ei**:

- Agenttikehys
- Rationalisointijärjestelmä
- Turvavyöhyke
- Luottamuksen raja

Käyttäkää MCP:tä siihen, mitä se on: osien välistä rakenteellista viestintää varten käytettävä teräspöytäkirja

---


## MCP:n pysähdyspaikka

MCP standardoi, miten mallit ja välineet vaihtavat kontekstia.

Näiden rajoitteiden virallistamiseksi on olemassa muita lähestymistapoja: ( joskus kutsutaan toimintavalmiuksia koskeviksi pöytäkirjoiksi

Tämä artikla ei koske AKT-maita vaan suunnitteluperiaatetta. **liikenne ja hallinto ovat erillisiä kysymyksiä**.

MCP kertoo teille *miten* soittaa välinettä. Muutoin on päätettävä *onko* olette sitä mieltä, että omassa järjestelmässäni se on constraineri. Yritysjärjestelmissä se voi olla poliittinen moottori.

---


## Demo MCP vs Production MCP

| Aspekti
|--------|----------|----------------|
| **Ohjelmien määrittely** | luonnollinen kieli, yksityiskohtainen | vähimmäismääräM SK3 suunnitelmaMSC4ensimmäinen SSK5
| **Kuka päättää kutsua** | LLM
| **Vastauksen muoto** | VapaatM SK1muodollinen teksti | Luottamuksellisesti kirjoitetut merkinnät
| **Validaatio** | Ei yksikään
| **LLM-riippuvuus** | Poikkeuksellinen
| **Toistaa** |
| **Tilintarkastuskäytävä** | Konversaatiopäiväkirjat

---


## Päätös

MCP sallii **kokoonpano**.
Determinismi mahdollistaa **luottamus**.
LLM-järjestelmät mahdollistavat **joustavuus**.

Mutta vain, jos:

> *Todennäköisyys ehdottaa —, ja determinismi säilyy*

MCP ilman constraineria on vain pikainen injektio lisäaskeleilla.

Synteesi on viimeinen askel. LLM:n tekeminen valinnaiseksi. Kaikki tosiasiat voidaan jäljittääM SK2

---


## Keskeiset ehdot

- **MCP (Model Context Protocol**: Laitepöytäkirja työkalujen löytämiseksi ja prosessien väliseen kutsumiseen
- **Konstraineri**: Ehdotuksia arvioiva ja pysyvistä asioista päättävä deterministinen logiikka
- **Signaali**: Luottamuksellisen tyyppisen vastauksen, , alkuperää koskevan vastauksen ja , sekä todisteiden osoittimet
- **Esittelijä**: Kaikki osatekijät (LLMMSC2 paikallismalliM SK3 heuristinen), joka viittaa tosiasioihin ilman viranomaisia
- **Evidence pointer**: Viittaus todistettavissa olevaan lähteeseen

---


## Related Articles

**Edellinen sarja:** [Osa 1: Miksi LLM:t epäonnistuvat sensorina](/blog/llms-fail-as-sensors)

- [Vähennetty RAG: KaartiM SK1vähennys Probabilististen järjestelmien osalta](/blog/reduced-rag)
- [ImageSummarizer: Konstrained Fuzzy Image Intelligence](/blog/constrained-fuzzy-image-intelligence)
- [VideoSummarizer: Reduced RAG for Video](/blog/videosummarizer-scalable-video-intelligence)
- [StyloFlow:Signaali](/blog/styloflow-signal-driven-workflows)