
Modelul Context Protocol (MCP) devine în liniște una dintre cele mai utile idei în instrumentele AI. Aici, descriem ce este MCP, de ce contează și cum să construiți singur un server MCP.
MCP este o modalitate standard de a lega un model de limbă mare (LLM) cu lumea exterioară. Un server MCP este o mică bucată de software care expune anumite date sau capacități unui model AI. Exemplele de zi cu zi includ conectarea agentului AI la calendarul sau sistemul de fișiere sau permiterea acestuia să caute pe web. Acestea sunt lucruri pe care un LLM nu le poate face (sau s-ar lupta să le facă) de la sine. Pe cont propriu, un model știe doar ceea ce a învățat în timpul antrenamentului, plus orice i-ați furnizat și nu are nicio modalitate de a verifica, de a prelua sau de a acționa în afara acestui lucru. Chiar și atunci, poate oferi doar răspunsuri text, pe care trebuie să fii tu cel care să acționeze. Un server MCP poate permite unui LLM să efectueze singur acțiuni. Mai puține vorbe, mai multe lucruri.


Numai un LLM este blocat la limita de antrenament. Conectat prin MCP, poate verifica, prelua și acționa în loc să doar recheme.
De ce nu folosiți doar un API?
Există multe modalități de a conecta capabilități externe la un model AI, de obicei printr-un API (Interfață de programare a aplicației), iar acesta a fost standardul industriei. Cu toate acestea, toate API-urile sunt configurate ușor diferit și, odată ce începeți să măriți numărul de conexiuni de care aveți nevoie între mai multe piese de software, vă confruntați cu o problemă combinatorie: numărul de conexiuni personalizate de care are nevoie un produs se înmulțește cu numărul de instrumente care îl folosesc.
Anthropic a introdus MCP la sfârșitul anului 2024 ca standard deschis pentru conectarea instrumentelor și datelor la aplicațiile LLM. Funcționează ca un port USB pe un computer: orice server MCP poate fi folosit cu orice agent/model, indiferent dacă utilizați Claude, Gemini, ChatGPT sau unul pe care l-ați creat singur.


Creați-vă propriul server MCP
Instrucțiuni complete despre cum să construiți un server MCP sunt disponibile în documentația MCP, dar aici este o prezentare generală foarte rapidă folosind Claude Code și modelul Sonnet 5.
Vestea bună este că un server MCP funcțional poate fi la fel de scurt ca câteva linii de cod. Iată forma acestuia, pas cu pas, folosind Python.
Pasul 1: Instalați dependențele
Proiectul MCP menține SDK-uri oficiale pentru Python, TypeScript și alte limbi. Pachetul Python „mcp” încorporează acest SDK. Totuși, aici vom folosi pachetul „fastmcp”. Acesta este construit pe „mcp”, dar are unele beneficii (în special, instrumentele bazate pe „fastmcp” pot fi implementate cu ușurință pe Posit Connect, vezi mai târziu).
mkdir -p ~/projects/ cd ~/projects uv init --python=3.15 dice-roll # Initialized project `dice-roll` # at `/home//projects/dice-roll` cd dice-roll uv add fastmcp
Acest lucru ne oferă următoarea structură de proiect, care este tipică pentru un proiect „uv”. Vom defini serverul nostru MCP în ./src/dice_roll/__init__.pydeși dacă proiectul ar crește mult, l-am împărți în module sau sub-pachete separate.
tree -L 2 . ├── pyproject.toml ├── README.md ├── src │ └── dice_roll └── uv.lock
Pasul 2: Definiți un instrument
Un server MCP expune „instrumente”: funcții pe care modelul le poate apela. Iată un mini exemplu: un server cu un singur instrument care aruncă un zar.
# src/dice_roll/__init__.py
from typing import Annotated
import random
from fastmcp import FastMCP
from pydantic import Field
# Give your server a name: this is what shows up when a model connects
mcp = FastMCP("dice-pick")
@mcp.tool
def roll_dice(
sides: Annotated(int, Field(description="Number of sides on the dice", ge=2)) = 6,
) -> int:
"""Roll a single fair dice with the given number of sides and return the number rolled."""
return random.randint(1, sides)
def main() -> None:
mcp.run()
The @mcp.tool docstring („Rol a single …”) este important. Aceasta devine descrierea instrumentului pe care îl citește LLM. Este ca o carte a unei cărți: LLM se va uita la descriere și din ea va decide dacă dorește să folosească instrumentul sau nu. Dacă această descriere nu este clară, este posibil ca instrumentul să nu fie utilizat.
Adnotările de tip atât pentru parametru sides iar valoarea returnată de roll_dice() oferă, de asemenea, metadate utile pentru LLM. Noastre sides parametrul are o constrângere care asigură că cel puțin 2 fețe sunt prezente pe zar (ge=2; aceasta este aplicată în Python de către Pydantic). Când descrie instrumentele furnizate de acest server MCP, un LLM va putea explica că numărul minim de laturi este de 2 (și este posibil ca modelele mai avansate să nu apeleze instrumentul altfel).
Pasul 3: Conectați-l
Salvați codul în proiect și vom testa dacă un agent compatibil MCP îl poate folosi. Există câteva modalități de a înregistra serverul nostru MCP definit local cu Claude Code.
Din moment ce am folosit fastmcp framework, există un instrument de linie de comandă care instalează serverul MCP pentru utilizare din directorul proiectului:
# From the ~/projects/dice-roll/ directory uv run \ fastmcp install claude-code src/dice_roll/__init__.py:mcp --with-editable .
The uv run parte este necesară pentru a se asigura că este utilizat mediul Python corect. The fastmcp comanda trebuie să găsească mcp obiect pe care l-am definit în codul nostru sursă. Dacă deschidem claude și întrebați „Despre ce instrumente de alegere a zarurilor știți?”, acesta răspunde:
The dice-pick MCP server gives me one tool: roll_dice: rolls one fair dice and returns the number it lands on. ┌───────────┬─────────┬─────────┬───────────────────┐ │ Parameter | Type │ Default │ Constraint │ ├───────────┼─────────┼─────────┼───────────────────┤ │ sides │ integer │ 6 │ must be 2 or more │ └───────────┴─────────┴─────────┴───────────────────┘ So I can roll a d6, d20, d100 or any other single dice. It can't roll several dice in one call, add modifiers or pick from a list. For something like 3d6, I'd call it three times.
Apoi putem folosi instrumentul:
❯ Roll a dice Called dice-pick I rolled a 6 on a standard six-sided dice. ... ❯ Roll a 20-side dice Called dice-pick I rolled a 20 on the d20. That's the highest number on both rolls so far. (... blah blah blah ...) ... ❯ Roll a d12 Called dice-pick I rolled a 4 on the d12, so the run of top scores is over.
Am instalat serverul nostru MCP local în dezvoltare pe mașina noastră, dar este utilizabil numai din ~/projects/dice_roll director. Acest lucru este în regulă în timp ce testați, dar poate doriți să utilizați serverul dvs. MCP în alte locații odată ce funcționează bine.
Proiectul nostru este uv-bazat. Dacă îi spunem ce modul și funcție ar trebui să fie apelate pentru a începe să ruleze proiectul, putem face proiectul mai ușor de utilizat din alte locații. Dar, funcția de intrare folosită pentru a porni serverul nostru MCP este dice_roll.main()care uv
a adăugat deja ca punct de intrare în proiect în pyproject.toml:
(project.scripts) dice-roll = "dice_roll:main"
La alergare uv run python sau uv synca dice-roll punctul de intrare va fi adăugat la mediul virtual al proiectului.
Pentru Claude Code, ne putem înregistra apoi serverul MCP cu o singură comandă:
claude mcp add --scope user dice-pick \ -- /abs/path/to/projects/dice-roll/.venv/bin/dice-roll
Acum, poți să întrebi claude pentru a „rola un zar cu 20 de fețe” din orice director de pe computer și vă va apela instrumentul direct, în loc să ghicească un răspuns. Acest lucru este posibil pentru că claude mcp add ... se anexează la mcpServers introducerea unui fișier (~/.claude.json).
Câteva sfaturi înainte de a construi ceva mai mare:
- Păstrați descrierile instrumentelor (docstring-urile pentru dvs
@mcp.tool-functii decorate) scurte si specifice. Modelul se bazează pe docstring pentru a decide când să folosească un instrument, așa că descrierile vagi duc la ignorarea sau utilizarea greșită a acestuia. - Gândiți-vă la ceea ce ar trebui să necesite confirmare. Instrumentele numai pentru citire (cum ar fi să caute ceva) sunt de obicei sigure pentru a lăsa un model să sune liber; instrumentele care schimbă sau șterg ceva merită plasate în spatele unui pas explicit de confirmare a utilizatorului.
Puteți elimina serverul MCP de pe dvs claude configurare prin utilizarea
claude mcp remove dice-pick
Sau roagă-i lui Claude să-l elimine!
Se implementează în Posit Connect
Un server care rulează pe propria mașină este bine pentru testare, dar este util doar pentru dvs. Serverele MCP pot fi implementate la o serie de furnizori de cloud diferiți. Posit Connect, platforma la care ajungem în mod normal atunci când publicăm aplicații Shiny, API-uri Plumber și rapoarte Quarto, a adăugat suport de primă clasă pentru găzduirea serverelor MCP în 2026, complet cu o pictogramă dedicată și propria sa filă în lista de conținut.
Posit Connect se așteaptă să vă scrieți serverele MCP bazate pe Python folosind fastmcp cadrul pe care l-am folosit mai sus. Connect trebuie, de asemenea, să importe un obiect de aplicație rulabil care poate gestiona solicitările bazate pe HTTP. Când sunt implementate, serverele MCP bazate pe „fastmcp” pot expune un ASGI app obiect care se ocupă de aceste solicitări. Serverele rulate local folosesc rutarea „stdio”, dar trebuie doar să ne modificăm ușor codul sursă curent pentru a-l implementa pe Posit Connect.
# imports ... mcp = ... def roll_dice(): ... app = mcp.http_app() # For deployment on Connect def main(): mcp.run() # For running using stdio locally
Pentru implementarea serverului MCP la Posit Connect, trebuie să creăm și un requirements.txt fişier. Acestea sunt folosite pentru a specifica dependențele de rulare (și uneori de dezvoltare) ale unui proiect. De când am folosit uv pentru a gestiona proiectul, acesta este ușor de creat:
uv export --no-dev --no-hashes -o requirements.txt
The requirements.txt fișierul conține o linie -e . care include în mod dinamic orice cod sursă din
src/. De mediul Python care este creat pentru serverul dvs. MCP depinde requirements.txt și este reconstruit când acel fișier este actualizat.
Folosim rsconnect-python pachetul (și rsconnect instrument de linie de comandă pe care îl instalează) pentru a interacționa cu Posit Connect. Este posibil să trebuiască mai întâi să vă înregistrați cu sistemul dvs. Connect folosind rsconnect add ... sau
rsconnect login ....
Apoi puteți implementa cu rsconnect instrument, utilizând modul de implementare FastAPI și îndreptând punctul de intrare către app obiect pe care tocmai l-am adăugat la codul sursă. Acest lucru se face folosind a --entrypoint argumentul formei module:object_name. Iată asta
dice_roll:appdin moment ce noastre app obiectul este în dice_roll modul:
rsconnect deploy fastapi -n--entrypoint dice_roll:app ./
Extensia Posit Publisher pentru VS Code și Positron funcționează și ea, dacă preferați să o implementați din editor. Posit are o documentație bună despre publicarea serverelor MCP.
La prima implementare, Connect scanează requirements.txtrecunoaște fastmcpși setează automat tipul de conținut la MCP. Odată implementat, menține cel puțin un proces cald, astfel încât să nu existe întârziere de pornire la rece și îi oferă propria pictogramă în lista de conținut, fără a fi necesară o configurare suplimentară.
Folosind serverul dvs. MCP implementat
Pentru a utiliza un server MCP care este implementat în cloud, procesul este foarte asemănător cu modul în care am adăugat serverul nostru MCP definit local. Pe Posit Connect (sau oriunde ați publicat), veți avea o adresă URL pentru serverul MCP și vă puteți configura claude pentru a utiliza această adresă URL după cum urmează:
claude mcp add --transport httphttps:// /content/ /mcp
Aici am folosit dice-pick ca numele serverului MCP, în concordanță cu numele din codul sursă. La următoarea deschidere claude vi se va solicita să vă autentificați înainte de a putea utiliza instrumentul.
Vrei să vezi asta în acțiune? Urmărește această prezentare, înregistrată în direct la conferința noastră AI in Production 2026, a unui server MCP care este construit și utilizat de la zero.
Recomandări cheie
- Un server MCP este modalitatea standard de a oferi unui model AI acces la lucruri pe care nu le poate face singur: verificarea unui calendar, citirea unui fișier, căutarea pe web sau căutarea datelor live.
- Funcționează ca un port USB: construiește conexiunea o dată și orice model compatibil o poate folosi.
- Un server MCP care funcționează poate fi scurt de câteva linii de cod. Modelul vă apelează instrumentele direct, în loc să ghicească un răspuns.
- Păstrați descrierile instrumentelor scurte și specifice și blocați orice distructiv în spatele confirmării explicite.
- Posit Connect poate găzdui serverul dvs. MCP direct, astfel încât întreaga dvs. echipă să îl poată utiliza mai degrabă decât doar propria mașină.
Pentru actualizări și revizuiri ale acestui articol, consultați postarea inițială
