MCP Node Tasks 05 - Sampling
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 05 - SamplingPlan my next work session using sampling"
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 05 - sampling
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 -> serverMed sampling kan serveren også spørge tilbage:
Server -> clientens LLM -> serverDet betyder, at serveren kan bruge modelhjælp uden selv at have en LLM API-nøgle.
Related MCP server: MCP Server Example
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.jsDen 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 |
| Læser alle tasks |
Resource |
| Læser kun åbne tasks |
Resource |
| Læser projektets prioriteringsguide |
Tool |
| Opretter en ny task |
Tool |
| Markerer en task som færdig |
Tool |
| 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 --> BAlmindeligt 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 -> resultatInstallation
Kør:
npm installKør serveren alene
Du kan køre serveren alene:
npm startServeren 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 inspectTest især dette tool:
sample_next_work_sessionVigtig 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 samplingsamplingClient.js gør dette:
Starter MCP-serveren
Registrerer en sampling handler
Laver discovery
Kalder
sample_next_work_sessionModtager 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_taskBrug custom client til sampling:
npm run samplingClaude-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.jsForslag 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_sessionSvar 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: dokumentationbør give et andet svar end:
fokus: demoNæ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?
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- 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-05-sampling'
If you have feedback or need assistance with the MCP directory API, please join our Discord server