mcp-node-tasks-02-primitives
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-node-tasks-02-primitivesAdd a high priority task: Prepare presentation"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP node tasks 02 - primitives
Dette projekt er anden del af vores praktiske introduktion til Model Context Protocol, forkortet MCP.
I del 1 havde vi en almindelig Node.js-applikation, der læste tasks fra en JSON-fil.
I denne del laver vi projektet om til en MCP-server.
Serveren udstiller:
Type | Navn | Funktion |
Resource |
| Læser alle tasks |
Tool |
| Opretter en ny task |
Prompt |
| Giver en fast struktur til task-analyse |
Formål
Efter denne del skal du kunne forklare:
Hvad resources, tools og prompts er
Hvorfor resources normalt er read-only
Hvorfor tools kræver mere omtanke
Hvordan en lokal MCP-server kan køre med stdio
Hvorfor
console.log()kan give problemer i en stdio-baseret MCP-serverHvordan serveren kan testes med MCP Inspector
Hvordan serveren kan kobles på Claude Desktop eller Cursor
Related MCP server: task-manager-mcp
Projektstruktur
mcp-node-tasks-02-primitives/
├── data/
│ └── tasks.json
├── docs/
│ └── images/
│ ├── Screenshot-2025-05-28-182048-1.png
│ └── lifecyclemcp-1.svg
├── src/
│ ├── server.js
│ └── taskStore.js
├── package.json
└── README.mdBilleder
Kopier disse billeder fra zip-filen til projektet:
docs/images/Screenshot-2025-05-28-182048-1.png
docs/images/lifecyclemcp-1.svgMCP primitives
En MCP-server kan udstille capabilities.
I dette projekt bruger vi tre centrale capabilities:

Capability | Forklaring | Eksempel i projektet |
Resource | Read-only data |
|
Tool | En handling |
|
Prompt | En arbejdsgang |
|
Den vigtigste huskeregel er:
Resources giver AI'en noget at vide.
Tools får AI'en til at gøre noget.
Prompts giver AI'en en arbejdsform.Resource: tasks://all
En resource er data, som kan læses uden at ændre noget.
I dette projekt er resource:
tasks://allDen læser alle tasks fra:
data/tasks.jsonResource-koden ændrer ikke filen. Den giver kun AI’en kontekst.
Tool: add_task
Et tool er en funktion, der udfører en handling.
I dette projekt er tool:
add_taskDet opretter en ny task i:
data/tasks.jsonTool’et tager to input:
Parameter | Forklaring |
| Titlen på den nye task |
|
|
Eksempel på input:
{
"title": "Lav demo til undervisning",
"priority": "high"
}Fordi tool’et ændrer data, er det mere følsomt end en resource.
Prompt: analyze_tasks
En prompt er en genbrugelig promptskabelon eller arbejdsgang.
I dette projekt er prompten:
analyze_tasksDen beder AI’en om at læse tasklisten og analysere, hvilke opgaver der bør prioriteres først.
Prompten ændrer ikke data. Den giver modellen en arbejdsform.
Resource, tool og prompt i samme case
Behov | MCP-type | Hvorfor |
AI’en skal kende tasklisten | Resource | Det er viden |
AI’en skal oprette en ny task | Tool | Det er en handling |
AI’en skal analysere opgaverne | Prompt | Det er en arbejdsgang |
Hvordan hænger Claude, MCP og koden sammen?
flowchart TD
A["Claude Desktop<br>MCP host"]
B["claude_desktop_config.json<br>Starter serveren"]
C["src/server.js<br>MCP-server"]
D["Resource: tasks://all<br>Læs alle tasks"]
E["Tool: add_task<br>Opret ny task"]
F["Prompt: analyze_tasks<br>Fast analyse"]
G["src/taskStore.js<br>Node.js fil-logik"]
H["data/tasks.json<br>Projektets data"]
A --> B
B -->|"node src/server.js"| C
C --> D
C --> E
C --> F
D --> G
E --> G
G --> H
F --> ADiagrammet viser, at Claude ikke læser tasks.json direkte.
Claude starter først vores MCP-server ud fra claude_desktop_config.json.
src/server.js er MCP-laget. Her definerer vi, hvad Claude må bruge:
tasks://allsom resourceadd_tasksom toolanalyze_taskssom prompt
src/taskStore.js indeholder den almindelige Node.js-logik til at læse og skrive tasks.
data/tasks.json er kun datafilen.
Det vigtige er opdelingen af ansvar:
Del | Ansvar |
Claude Desktop | Host, hvor brugeren arbejder |
Claude config | Starter MCP-serveren |
| Udstiller MCP capabilities |
| Håndterer fil-logik |
| Indeholder data |
Claude taler altså med MCP-serveren. MCP-serveren bruger derefter vores Node.js-kode til at læse eller ændre data.
Lifecycle
Et typisk MCP-flow kan forklares i fire faser:
Fase | Hvad sker der? |
Initialization | Client og server etablerer forbindelse |
Discovery | Clienten spørger serveren, hvilke capabilities der findes |
Execution | Clienten kalder en resource, et tool eller en prompt |
Termination | Forbindelsen lukkes pænt |
Discovery er vigtig, fordi clienten kan spørge serveren, hvad den kan, i stedet for at alt er hardcoded.
Installation
Kør:
npm installVigtig pointe om npm start
Du kan godt køre:
npm startMen serveren vil se ud som om, den ikke gør noget.
Det er normalt.
En MCP-server med stdio venter på, at en MCP-client taler med den. Derfor tester vi den med MCP Inspector, Claude Desktop eller Cursor.
Test med MCP Inspector
Kør:
npm run inspectI Inspector kan du teste:
Resource:
tasks://allTool:
add_taskPrompt:
analyze_tasks
Denne server bruger stdio
Stdio betyder, at MCP-clienten og MCP-serveren kommunikerer via standard input og standard output.
Derfor må serveren ikke skrive almindelige logs med:
console.log("Server startet");Det kan ødelægge MCP-kommunikationen, fordi stdout bruges til MCP-beskeder.
Brug i stedet:
console.error("Server startet");console.error() skriver til stderr og forstyrrer ikke MCP-kommunikationen.
Claude eller Cursor konfiguration
Når projektet virker i MCP Inspector, kan det kobles på Claude Desktop eller Cursor.
Eksempel:
{
"mcpServers": {
"mcp-node-tasks-02": {
"command": "node",
"args": [
"C:\\Users\\mikc\\IdeaProjects\\mcp-node-tasks-02-primitives\\src\\server.js"
]
}
}
}Ret stien, så den passer til din egen computer.
På Windows skal du enten bruge dobbelt backslash:
C:\\Users\\mikc\\IdeaProjects\\mcp-node-tasks-02-primitives\\src\\server.jseller forward slashes:
C:/Users/mikc/IdeaProjects/mcp-node-tasks-02-primitives/src/server.jsMiniøvelse
Åbn src/server.js.
Find:
Resource-koden
Tool-koden
Prompt-koden
Svar derefter på:
Hvad er resource i projektet?
Hvad er tool i projektet?
Hvad er prompt i projektet?
Hvorfor er
add_taskmere risikabel endtasks://all?Hvorfor er det en god idé at starte med stdio?
Forslag til svar
tasks://all er en resource, fordi den kun læser data.
add_task er et tool, fordi det ændrer data.
analyze_tasks er en prompt, fordi den giver AI’en en fast arbejdsgang.
add_task er mere risikabel end tasks://all, fordi den skriver til data/tasks.json.
Stdio er godt til lokal undervisning, fordi det ikke kræver port, Express-server eller deployment.
Ekstra øvelse
Tilføj en ny task med MCP Inspector.
Kontroller bagefter, at filen er ændret:
data/tasks.jsonSpørgsmål:
Hvor kan du se side effect?
Hvorfor er det vigtigt, at tool’et har tydelige input?
Hvad kunne gå galt, hvis
priorityikke blev valideret?
Næste trin
I næste del bygger vi en custom MCP-client i Node.js.
Den skal kunne:
Starte MCP-serveren via stdio
Lave discovery
Liste tools, resources og prompts
Kalde
tasks://allKalde
add_taskHente prompten
analyze_tasks
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Related MCP Servers
- Flicense-qualityDmaintenanceA task management MCP server that provides tools to create, list, complete, and delete tasks using pluggable storage backends. It enables users to interact with their task lists through natural language using MCP-compatible clients like Claude Desktop.
- Flicense-qualityCmaintenanceA task manager MCP server that demonstrates all three MCP primitives (tools, resources, prompts). Enables users to manage tasks, read task summaries and details, and run structured planning/review prompts through natural language.
- Flicense-qualityBmaintenanceMCP server that provides tools to create and list tasks by consuming a REST API, allowing LLMs to manage a TODO list via natural language.
- FlicenseCqualityCmaintenanceA simple MCP server for managing tasks via a local JSON file, demonstrating resources, tools, and prompts for task reading, creation, and analysis.1
Related MCP Connectors
MCP server for generating rough-draft project plans from natural-language prompts.
Project management MCP for AI agents with safe task reads and writes.
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/krollchristensen/mcp-node-tasks-02-primitives'
If you have feedback or need assistance with the MCP directory API, please join our Discord server