Node Tasks 02 Primitives
БесплатноНе проверенMCP server for managing tasks with a resource to read all tasks, a tool to add tasks, and a prompt to analyze tasks, using stdio transport.
Описание
MCP server for managing tasks with a resource to read all tasks, a tool to add tasks, and a prompt to analyze tasks, using stdio transport.
README
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 | tasks://all |
Læser alle tasks |
| Tool | add_task |
Opretter en ny task |
| Prompt | analyze_tasks |
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-server - Hvordan serveren kan testes med MCP Inspector
- Hvordan serveren kan kobles på Claude Desktop eller Cursor
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.md
Billeder
Kopier disse billeder fra zip-filen til projektet:
docs/images/Screenshot-2025-05-28-182048-1.png
docs/images/lifecyclemcp-1.svg
MCP primitives
En MCP-server kan udstille capabilities.
I dette projekt bruger vi tre centrale capabilities:

| Capability | Forklaring | Eksempel i projektet |
|---|---|---|
| Resource | Read-only data | tasks://all |
| Tool | En handling | add_task |
| Prompt | En arbejdsgang | analyze_tasks |
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://all
Den læser alle tasks fra:
data/tasks.json
Resource-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_task
Det opretter en ny task i:
data/tasks.json
Tool’et tager to input:
| Parameter | Forklaring |
|---|---|
title |
Titlen på den nye task |
priority |
low, medium eller high |
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_tasks
Den 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 --> A
Diagrammet 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 |
server.js |
Udstiller MCP capabilities |
taskStore.js |
Håndterer fil-logik |
tasks.json |
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 install
Vigtig pointe om npm start
Du kan godt køre:
npm start
Men 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 inspect
I Inspector kan du teste:
- Resource:
tasks://all - Tool:
add_task - Prompt:
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.js
eller forward slashes:
C:/Users/mikc/IdeaProjects/mcp-node-tasks-02-primitives/src/server.js
Miniø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.json
Spø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://all - Kalde
add_task - Hente prompten
analyze_tasks
from github.com/krollchristensen/mcp-node-tasks-02-primitives
Установка Node Tasks 02 Primitives
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/krollchristensen/mcp-node-tasks-02-primitivesFAQ
Node Tasks 02 Primitives MCP бесплатный?
Да, Node Tasks 02 Primitives MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Node Tasks 02 Primitives?
Нет, Node Tasks 02 Primitives работает без API-ключей и переменных окружения.
Node Tasks 02 Primitives — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Node Tasks 02 Primitives в Claude Desktop, Claude Code или Cursor?
Открой Node Tasks 02 Primitives на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare Node Tasks 02 Primitives with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
