Verktyg, resurser och prompts
De tre primitiver som en MCP-server kan exponera.
Verktyg, resurser och prompts är en gratis lektion i Claude Architect på CoddyKit. Detta är lektion 1 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Claude Architect, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Claude Architect innehåller totalt 4 lektioner.
Tre primitiver, en server
Model Context Protocol (MCP) låter en extern server exponera funktioner för Claude via ett standardiserat gränssnitt. En enda server kan erbjuda exakt tre typer av primitiver:
- Tools – åtgärder som modellen kan anropa (gör något, ofta med sidoeffekter)
- Resources – skrivskyddade data och kontext som modellen kan hämta in (scheman, kataloger, dokumentation)
- Prompts – återanvändbara mallar som formar hur en uppgift formuleras
Att veta vilken primitiv som passar en funktion är en central arkitektfärdighet: om en åtgärd felklassificeras som en resurs (eller tvärtom) leder det till sköra och förvirrande integrationer.
Tools – åtgärder med effekter
Tools är åtgärder. De är den primitiv som modellen anropar för att få något att hända: fråga en aktiv databas, skapa ett ärende, skicka ett meddelande eller behandla en återbetalning. Tools är MCP-motsvarigheten till de Agent SDK-tools som du redan definierar i fältet tools i en API-begäran.
Eftersom tools styr beteendet är deras beskrivningar den primära urvalsmekanismen – inte namnen. En bra verktygsbeskrivning anger syfte, returvärden, indataformat med exempel och gränser för användningsområdet, så att modellen dirigerar till rätt verktyg.
# An MCP server exposing a Tool (action) — Python style
@mcp.tool()
def lookup_order(order_id: str) -> dict:
"""Fetch a single order by its ID from the orders DB.
Input: order_id as 'ORD-12345' (string, required).
Returns: {status, total_cents, items[]}.
Use only when you already have an exact order ID;
for fuzzy search use search_orders instead.
"""
return db.fetch_order(order_id)Resources – skrivskyddad kontext
Resources är skrivskyddade data. De ger modellen kontext att resonera kring, snarare än en åtgärd att utföra: ett databasschema, en produktkatalog, en API-specifikation, en konfigurationsfil eller ett referensdokument.
Det mentala testet är: om modellen läser för att förstå är det en Resource; om modellen gör något för att ändra något är det ett Tool. Om ett stabilt schema exponeras som en Resource slipper man använda ett verktygsanrop (och en tur- och returresa) bara för att hämta kontext som modellen behöver från början.
# An MCP Resource — read-only context the model can load
@mcp.resource("schema://orders")
def orders_schema() -> str:
"""The current orders table schema (read-only).
Provides column names and types so the model can
write correct queries without guessing.
"""
return read_file("db/orders.schema.sql")Prompts – återanvändbara mallar
Prompts är mallar. En MCP-server kan publicera parametriserade, återanvändbara promptmallar – till exempel en standardprompt för "sammanfatta den här incidenten" eller "granska den här PR:en med avseende på säkerhetsproblem" som bygger in teamets föredragna struktur och kriterier.
Prompts är varken åtgärder eller data; de anger hur en uppgift formuleras. De låter en server leverera instruktioner enligt bästa praxis (uttryckliga kriterier och few-shot-exempel), så att varje konsument formulerar begäran på ett konsekvent sätt i stället för att uppfinna den på nytt.
# An MCP Prompt — a reusable, parameterized template
@mcp.prompt()
def review_pr(diff: str, focus: str = "security") -> str:
return (
"Review the following diff. "
f"Flag a finding only when it clearly violates {focus} "
"best practice; do not flag style preferences.\n\n"
f"{diff}"
)Beslutet: Tool, Resource eller Prompt
Ställ de tre bredvid varandra så blir gränserna tydliga:
- Tool – "Gör X." Har effekter, kan misslyckas tillfälligt och anropas mitt i loopen. t.ex.
process_refund. - Resource – "Här är X att läsa." Stabil, idempotent och utan sidoeffekter. t.ex. orderschemat.
- Prompt – "Fråga på det här sättet." En mall, inte ett anrop. t.ex. mallen för PR-granskning.
Ett vanligt misstag är att slå in skrivskyddad kontext som ett verktyg. Det fungerar, men kostar ett verktygsanrop och en tur- och returresa; en Resource levererar samma kontext billigare och signalerar avsikten tydligt.
Konfigurera en MCP-server: Omfattning
Var du registrerar en server styr vem som får tillgång till den. Två omfattningar är viktiga:
- Projektomfattning –
.mcp.jsoni repots rot, incheckad i versionshanteringen. Delas med hela teamet; alla som klonar repot får samma servrar. - Användaromfattning –
~/.claude.json, personlig och delas INTE via VCS. Bra för dina egna autentiseringsuppgifter eller experimentella servrar.
För en integration som hela teamet är beroende av ska du välja projektomfattning, så att den finns i VCS och nya teammedlemmar får den automatiskt.
{
"mcpServers": {
"orders": {
"command": "node",
"args": ["./servers/orders-mcp.js"],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
}
}
}
}Hemligheter: Checka aldrig in tokens
Eftersom .mcp.json med projektomfattning checkas in i VCS måste du aldrig hårdkoda hemligheter i den. Referera i stället till dem via miljövariabler – till exempel ${GITHUB_TOKEN} – så att konfigurationen kan delas medan själva tokenen hålls utanför källkodshanteringen.
Detta är en säkerhetsgaranti, inte en bekvämlighet: en incheckad token är en läckt token. Indirekt referens via miljövariabler håller projektkonfigurationen portabel och autentiseringsuppgiften privat på varje dator.
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_TOKEN": "${GITHUB_TOKEN}" }
}
}
}Föredra community-servrar
För standardintegrationer — GitHub, Postgres, Slack och filsystem — bör Ni föredra en välunderhållen community-MCP-server framför att bygga en egen. Då får Ni beprövade verktygsbeskrivningar, felhantering och uppdateringar på köpet.
Reservera en egen server för genuint proprietära system där det inte finns något community-alternativ. Det följer en bredare arkitekturprincip: bygg inte om standardinfrastruktur, utan lägg arbetet på det som faktiskt är unikt för Er domän.
Strukturerade fel från verktyg
När ett MCP-verktyg misslyckas lämnar ett generiskt meddelande som "Operation failed" modellen utan information — den kan inte avgöra om den ska försöka igen, eskalera eller prova ett alternativ. Returnera alltid strukturerade fel så att modellen kan välja rätt åtgärd.
Ett bra MCP-fel innehåller: isError: true, en errorCategory (transient / validation / business / permission), en isRetryable-flagga, ett mänskligt läsbart message, den attempted_query som gjordes och eventuella partial_results. Kategorin och retry-flaggan är det som förvandlar en återvändsgränd till intelligent återställning.
{
"isError": true,
"errorCategory": "transient",
"isRetryable": true,
"message": "DB connection timed out after 5s",
"attempted_query": "SELECT * FROM orders WHERE id='ORD-1'",
"partial_results": []
}God verktygshygien följer med till MCP
Allt Ni vet om god verktygsdesign gäller även för MCP-verktyg:
- Beskrivningar, inte namn, styr valet — beskriv syfte, returvärden, indataformat, specialfall och begränsningar.
- Begränsa verktygen efter rollen. Ungefär 4–5 verktyg per agent är optimalt; när Ni närmar Er 18+ försämras träffsäkerheten i valet.
- Undvik överlappning. Två verktyg med tvetydiga och likartade beskrivningar leder till felaktig dirigering.
En MCP-server som öser ut 20 vagt beskrivna verktyg till en agent är ett antimönster, oavsett hur kapabla verktygen var för sig är.
Sätt ihop delarna
Föreställ Er en MCP-server för beställningar som används av en supportagent. En ren design använder alla tre primitiverna medvetet:
- Resource
schema://orders— så att agenten förstår datamodellen direkt, utan att behöva anropa ett verktyg. - Tools
lookup_order,process_refund— åtgärderna, var och en med en tydlig beskrivning och strukturerade fel. - Prompt
refund_review— en mall som kodifierar teamets kriterier för att motivera återbetalningar.
Registrera den i projektets .mcp.json, hämta hemligheter från miljövariabler och håll antalet verktyg nere. Det är en MCP-integration på arkitekturnivå.
Snabbtest
Testa hur väl Ni förstår MCP:s tre primitiver och hur de exponeras.
Sammanfattning: verktyg, resurser och prompter
Viktiga slutsatser inför provet och verkliga byggen:
- En MCP-server exponerar tre primitiver: Tools (åtgärder), Resources (skrivskyddade data och kontext) samt Prompts (mallar).
- Avgör utifrån avsikten: utföra → Tool, läsa för att förstå → Resource, hur man ska fråga → Prompt.
- Omfattning: projektets
.mcp.json(delad via VCS) jämfört med användarens~/.claude.json(personlig). - Hemligheter ska gå via miljövariabler som
${GITHUB_TOKEN}— checka aldrig in tokens. - Föredra community-servrar för standardintegrationer och håll antalet verktyg kring 4–5 med tydliga beskrivningar.
- Returnera strukturerade fel (isError, errorCategory, isRetryable, attempted_query, partial_results) så att modellen kan återhämta sig på ett intelligent sätt.
Lär dig Python med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 26
- Lektioner
- 104
Vanliga frågor
Är lektionen ”Verktyg, resurser och prompts” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Claude Architect, inklusive ”Verktyg, resurser och prompts”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Claude Architect innehåller totalt 4 lektioner.
Vad lär jag mig i ”Verktyg, resurser och prompts”?
De tre primitiver som en MCP-server kan exponera. Ni övar på Claude Architect med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Claude Architect?
Du behöver inga förkunskaper. Utbildningen i Claude Architect på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”Verktyg, resurser och prompts”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Claude Architect-lektionen?
Ja. Varje Claude Architect-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Verktyg, resurser och prompts
- Projektomfattning kontra användaromfattning
- Hemligheter med miljövariabler
- Communityservrar kontra anpassade servrar