toy-mcp-server
toy-mcp-server
Ein minimaler Model Context Protocol (MCP)-Server, der von Grund auf neu gebaut wurde, um zu lernen, wie MCP wirklich funktioniert – keine Boilerplate-Generatoren, keine Templates, nur das SDK.
Gebaut als erstes praktisches MCP-Projekt: zwei Tools und eine Resource, über stdio mit Claude Desktop verbunden.
Was es tut
MCP ermöglicht einem LLM-Client (wie Claude Desktop), Funktionen aufzurufen, die auf deinem eigenen Rechner laufen, anstatt nur Text aus seinen Trainingsdaten zu generieren. Dieser Server stellt bereit:
Tools (Funktionen, die Claude aufrufen kann):
roll_dice– würfelt N Würfel mit einer konfigurierbaren Seitenanzahlflip_coin– wirft eine Münze N-mal
Ressourcen (schreibgeschützte Daten, die Claude abrufen kann):
server-info– grundlegende Metadaten über den Server (Name, Zweck, Startzeit)
Warum das existiert
LLMs können nicht auf etwas außerhalb ihrer Trainingsdaten zugreifen und standardmäßig nichts tun – sie generieren nur Text. MCP ist eine Standardmethode, um einem Modell Folgendes zu geben:
Fähigkeiten, die es von sich aus nicht hat (z. B. echte Zufälligkeit – LLMs sind dafür berüchtigt, dass sie selbst keine wirklich zufälligen Zahlen auswählen können)
Zugriff auf Live- oder private Daten, von denen es auf keine andere Weise erfahren kann
Dieses Projekt ist eine kleine, sichere Sandbox für diese Idee, bevor man einen MCP-Server an etwas Echtes anbindet (eine Datenbank, eine API mit Authentifizierung usw.).
Technologie-Stack
TypeScript
@modelcontextprotocol/sdk– das offizielle MCP-SDKzod– Laufzeit-Schema-Validierung für Tool-Argumentestdio-Transport (lokale Subprozess-Kommunikation mit Claude Desktop)
Projektstruktur
toy-mcp-server/
├── src/
│ └── index.ts # server setup, tools, and resource
├── build/ # compiled output (git-ignored)
├── package.json
├── tsconfig.json
└── README.mdEinrichtung
1. Abhängigkeiten installieren
npm install2. Kompilieren
npm run build3. Mit Claude Desktop verbinden
Finde deine Claude-Desktop-Konfigurationsdatei:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows: normalerweise unter
%LOCALAPPDATA%\Packages\<Claude package folder>\LocalCache\Roaming\Claude\claude_desktop_config.json– der genaue Pfad kann je nach Installationsmethode variieren (Microsoft Store vs. direkter Installer). Der zuverlässigste Weg, ihn zu finden: Öffne Claude Desktop → Einstellungen → Entwickler → Lokale MCP-Server → Konfiguration bearbeiten, wodurch die genaue Datei geöffnet wird, die die App liest.
Füge diesen Server unter mcpServers hinzu (füge ihn also in die vorhandene Datei ein, statt sie zu überschreiben):
{
"mcpServers": {
"toy-mcp-server": {
"command": "node",
"args": ["/absolute/path/to/toy-mcp-server/build/index.js"]
}
}
}Ersetze den Pfad durch den tatsächlichen absoluten Pfad zu build/index.js auf deinem Rechner. Auf Windows musst du die Backslashes (\\) im JSON-String escapen.
4. Claude Desktop neu starten
Beende Claude Desktop vollständig (nicht nur das Fenster schließen) und öffne es wieder. Bestätige, dass toy-mcp-server als verbunden angezeigt wird.
5. Probiere es aus
Stelle in einem Chat eine folgende Frage:
„Wurf 3 sechsseitige Würfel"
„Wirf eine Münze 10-mal."
Über der Antwort solltest du einen kleinen Indikator für einen Tool-Aufruf sehen (z. B. „Roll Dice"), der bestätigt, dass Claude die Funktion tatsächlich aufgerufen hat und nicht geraten hat.
So funktioniert es, kurz
McpClient– das Objekt, das die Fähigkeiten des Servers gegenüber jedem verbundenen Client deklariertregisterTool(name, config, handler)– registriert eine aufrufbare Funktion.config.inputSchemanutzt Zod, um jede Argumentationsargumente zu validieren, die das Modell sendet, bevor der Handler läuftregisterResource(name, uri, config, handler)– erlaubt schreibgeschützte Daten, die über eine URI adressierbar sind und ohne Argument abgerufen werdenStdioServerTransport– das Wire-Modell: Claude Desktop startet diese Datei als Subprozess und kommuniziert über stdin/stdout mittels JSON-RPC.console.logwird hier nie zum Loggen verwendet, da stdout der eigentliche Protokollkanal ist – stattdessen wirdconsole.error(stderr) eingesetzt
Nächste Schritte
*the Tools durch echte heraus ersetzen, die auf eine echte Datenbank zugreifen (z. B. Postgres via Prisma)
Ein GitHub-gestütztes Tool hinzufügen (z. B.
list_open_prs), um dienzusübung der tokenbasierte Authentifizierung zu übenDen Streamable HTTP-Transport erkunden, um den Server remote zu hosten (lokal von einer Anwendung zu fern)
Lizenz
MIT
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Pocket Agent (aipocketagent.com) MCP server — read tools for personas, apps, and product info.
Official remote MCP server for Archivist AI TTRPG campaign memory: characters, sessions, and more.
MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2
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/kritikatripathi03/toy-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server