Node Tasks 05 Sampling
FreeNot checkedAn MCP server that demonstrates sampling, enabling the server to request LLM completions from the client to assist in workflow tasks like planning work sessions
About
An MCP server that demonstrates sampling, enabling the server to request LLM completions from the client to assist in workflow tasks like planning work sessions.
README
Dette projekt er femte del af vores praktiske introduktion til Model Context Protocol, forkortet MCP.
I de tidligere dele har vi arbejdet med:
- Del 1: Arkitektur og begreber
- Del 2: MCP-server med resource, tool og prompt
- Del 3: Custom MCP-client
- Del 4: Samlet workflow med tools, resources og prompts
- Del 5: Sampling
I denne del ser vi på sampling.
Sampling betyder, at en MCP-server kan bede clientens LLM om hjælp midt i et workflow.
Vigtig pointe
I de første dele gik flowet primært denne vej:
Client -> server
Med sampling kan serveren også spørge tilbage:
Server -> clientens LLM -> server
Det betyder, at serveren kan bruge modelhjælp uden selv at have en LLM API-nøgle.
Formål
Efter denne del skal du kunne forklare:
- Hvad sampling er
- Hvorfor sampling kræver client-support
- Hvordan sampling adskiller sig fra almindelige tool calls
- Hvordan en server kan bede clienten om modelhjælp
- Hvordan en client-side sampling handler fungerer
- Hvorfor fallback og fejlhåndtering er vigtigt
- Hvorfor sampling kan give sikkerheds- og privatlivsproblemer
Projektstruktur
mcp-node-tasks-05-sampling/
├── data/
│ ├── project-guide.md
│ └── tasks.json
├── docs/
│ └── images/
│ ├── image-26.png
│ ├── image-28.png
│ └── image-29.png
├── src/
│ ├── server.js
│ ├── samplingClient.js
│ └── taskStore.js
├── package.json
└── README.md
## Hvad er sampling?
Sampling er en MCP-mekanisme, hvor serveren kan bede clienten om en LLM-completion.
Eksempel:
1. Clienten kalder et tool på serveren.
2. Serveren læser data.
3. Serveren har brug for en AI-formuleret analyse.
4. Serveren sender en sampling request til clienten.
5. Clienten bruger sin LLM eller sampling handler.
6. Serveren modtager svaret.
7. Serveren returnerer det endelige tool-resultat.
## Hvorfor bruger vi en custom client?
Claude Desktop og Cursor kan være gode til tools, men sampling afhænger af, om hosten understøtter MCP sampling.
Derfor tester vi sampling med en custom client:
```text
src/samplingClient.js
Den starter serveren og registrerer en sampling handler.
Hvad er en sampling handler?
En sampling handler er en funktion på client-siden.
Den kaldes, når serveren sender en sampling request.
I et rigtigt setup kan handleren kalde en LLM.
I dette undervisningseksempel bruger vi en simpel lokal handler uden API-nøgle.
Det gør flowet lettere at forstå.
Serverens capabilities
Serveren udstiller både tidligere capabilities og et nyt sampling-tool.
| Type | Navn | Funktion |
|---|---|---|
| Resource | tasks://all |
Læser alle tasks |
| Resource | tasks://open |
Læser kun åbne tasks |
| Resource | project://guide |
Læser projektets prioriteringsguide |
| Tool | add_task |
Opretter en ny task |
| Tool | complete_task |
Markerer en task som færdig |
| Tool | sample_next_work_session |
Bruger sampling til at foreslå næste arbejdssession |
Samlet sampling-flow
flowchart TD
A["npm run sampling"]
B["src/samplingClient.js<br>Custom MCP client"]
C["Sampling handler<br>Simuleret LLM-svar"]
D["src/server.js<br>MCP-server"]
E["Tool<br>sample_next_work_session"]
F["Resource data<br>project-guide + open tasks"]
G["sampling/createMessage<br>Server spørger clienten"]
H["Tool-resultat<br>Plan for næste session"]
I["data/project-guide.md"]
J["data/tasks.json"]
A --> B
B --> D
B --> C
B --> E
E --> D
D --> F
F --> I
F --> J
D --> G
G --> C
C --> D
D --> H
H --> B
Almindeligt tool call vs sampling
| Flow | Hvad sker der? |
|---|---|
| Almindeligt tool call | Clienten kalder serveren, og serveren returnerer resultat |
| Sampling tool call | Clienten kalder serveren, serveren spørger clientens LLM, og serveren returnerer derefter resultat |
Kort sagt:
Almindeligt tool:
Client -> server -> resultat
Sampling:
Client -> server -> clientens LLM -> server -> resultat
Installation
Kør:
npm install
Kør serveren alene
Du kan køre serveren alene:
npm start
Serveren bruger stdio og kan se ud som om, den ikke gør noget.
Det er normalt.
Den venter på en MCP-client.
Test med MCP Inspector
Kør:
npm run inspect
Test især dette tool:
sample_next_work_session
Vigtig pointe:
Hvis MCP Inspector eller hosten ikke understøtter sampling, bruger serveren fallback-logik og returnerer en simpel regelbaseret plan.
Kør sampling-client
Sampling testes bedst med den custom client:
npm run sampling
samplingClient.js gør dette:
- Starter MCP-serveren
- Registrerer en sampling handler
- Laver discovery
- Kalder
sample_next_work_session - Modtager sampling request fra serveren
- Returnerer et simuleret LLM-svar
- Viser serverens endelige resultat
Claude Desktop
Denne del er primært lavet til custom client.
Claude Desktop kan stadig bruges til almindelige tools, men sampling afhænger af, om Claude Desktop understøtter sampling i den aktuelle version.
Brug derfor Claude til de almindelige tools fra del 4:
prepare_next_work_session
prepare_status_report
add_task
complete_task
Brug custom client til sampling:
npm run sampling
Claude-konfiguration
Hvis du vil koble serveren til Claude Desktop, kan du bruge:
{
"mcpServers": {
"mcp-node-tasks-05": {
"command": "node",
"args": [
"C:\\Users\\mikc\\WebstormProjects\\mcp-node-tasks-05-sampling\\src\\server.js"
]
}
}
}
Ret stien, så den passer til din computer.
På Windows kan du også bruge forward slashes:
C:/Users/mikc/WebstormProjects/mcp-node-tasks-05-sampling/src/server.js
Forslag til test i Claude
Hvis serveren er koblet på Claude, kan du prøve:
Vis hvilke tools denne MCP-server stiller til rådighed.
Brug tool’et sample_next_work_session med fokus på MCP-undervisning.
Hvis Claude eller hosten ikke understøtter sampling, bør serveren bruge fallback og stadig give et svar.
Sikkerhed og fallback
Sampling kan sende data fra serveren til clientens LLM.
Det kan være fint i et lokalt undervisningsprojekt, men i rigtige systemer skal man være opmærksom på:
- følsomme data
- prompt injection
- for store prompts
- rate limiting
- brugeraccept
- fejl i clientens sampling handler
- om clienten understøtter sampling
I dette projekt bruger vi derfor fallback.
Hvis sampling fejler, returnerer serveren en simpel regelbaseret prioritering.
Miniøvelse
Åbn src/server.js.
Find tool’et:
sample_next_work_session
Svar på:
- Hvilke data læser tool’et?
- Hvor sendes sampling requesten?
- Hvad sker der, hvis sampling fejler?
- Hvorfor bør der være fallback?
- Hvilke data ville være problematiske at sende til en ekstern LLM?
Ekstra øvelse
Udvid sampling handleren i src/samplingClient.js, så den svarer forskelligt afhængigt af fokus.
Eksempel:
fokus: dokumentation
bør give et andet svar end:
fokus: demo
Næste trin
Næste naturlige skridt er testing og security.
Her bliver spørgsmålene:
- Hvordan tester vi MCP tools?
- Hvordan tester vi fallback?
- Hvordan undgår vi farlige tools?
- Hvordan logger vi tool calls?
- Hvordan beskytter vi følsomme data?
Installing Node Tasks 05 Sampling
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/krollchristensen/mcp-node-tasks-05-samplingFAQ
Is Node Tasks 05 Sampling MCP free?
Yes, Node Tasks 05 Sampling MCP is free — one-click install via Unyly at no cost.
Does Node Tasks 05 Sampling need an API key?
No, Node Tasks 05 Sampling runs without API keys or environment variables.
Is Node Tasks 05 Sampling hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Node Tasks 05 Sampling in Claude Desktop, Claude Code or Cursor?
Open Node Tasks 05 Sampling on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
Fetch
Web content fetching and conversion for efficient LLM usage.
AWS KB Retrieval
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
by modelcontextprotocolSpring AI MCP Server
Provides auto-configuration for setting up an MCP server in Spring Boot applications.
llm-analysis-assistant
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also
by xuzexin-hzCompare Node Tasks 05 Sampling with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All ai MCPs
