toy-mcp-server
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., "@toy-mcp-serverRoll 3 six-sided dice"
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.
toy-mcp-server
A minimal Model Context Protocol (MCP) server built from scratch to learn how MCP actually works — no boilerplate generators, no templates, just the SDK.
Built as a first hands-on MCP project: two tools and one resource, wired into Claude Desktop over stdio.
What it does
MCP lets an LLM client (like Claude Desktop) call functions running on your own machine, instead of only generating text from its training data. This server exposes:
Tools (functions Claude can call):
roll_dice— rolls N dice with a configurable number of sidesflip_coin— flips a coin N times
Resources (read-only data Claude can fetch):
server-info— basic metadata about the server (name, purpose, start time)
Why this exists
LLMs can't access anything outside their own training data, and can't do anything by default — they only generate text. MCP is a standard way to give a model:
capability it doesn't have on its own (e.g. true randomness — LLMs are notoriously bad at picking random numbers themselves)
access to live or private data it has no way of knowing
This project is a small, safe sandbox for that idea before pointing an MCP server at something real (a database, an API with auth, etc.).
Tech stack
TypeScript
@modelcontextprotocol/sdk— official MCP SDKzod— runtime schema validation for tool argumentsstdio transport (local subprocess communication with Claude Desktop)
Project structure
toy-mcp-server/
├── src/
│ └── index.ts # server setup, tools, and resource
├── build/ # compiled output (git-ignored)
├── package.json
├── tsconfig.json
└── README.mdSetup
1. Install dependencies
npm install2. Build
npm run build3. Connect to Claude Desktop
Find your Claude Desktop config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows: usually under
%LOCALAPPDATA%\Packages\<Claude package folder>\LocalCache\Roaming\Claude\claude_desktop_config.json— the exact path can vary by install method (Microsoft Store vs. direct installer). The reliable way to find it: open Claude Desktop → Settings → Developer → Local MCP servers → Edit Config, which opens the exact file the app reads.
Add this server under mcpServers (merge into the existing file rather than overwriting it):
{
"mcpServers": {
"toy-mcp-server": {
"command": "node",
"args": ["/absolute/path/to/toy-mcp-server/build/index.js"]
}
}
}Replace the path with the actual absolute path to build/index.js on your machine. On Windows, escape backslashes (\\) in the JSON string.
4. Restart Claude Desktop
Fully quit (not just close the window) and reopen. Check Settings → Developer → Local MCP servers to confirm toy-mcp-server shows as connected.
5. Try it
In a chat, ask:
"Roll 3 six-sided dice"
"Flip a coin 10 times"
You should see a small tool-call indicator (e.g. "Roll Dice") above the response, confirming Claude actually invoked the function rather than guessing an answer.
How it works, briefly
McpServer— the object that declares the server's capabilities to any connecting clientregisterTool(name, config, handler)— registers a callable function.config.inputSchemauses Zod to validate whatever arguments the model sends before the handler runsregisterResource(name, uri, config, handler)— registers read-only data addressable by a URI, fetched without argumentsStdioServerTransport— the wire format: Claude Desktop spawns this file as a subprocess and communicates over stdin/stdout using JSON-RPC.console.logis never used for logging here, since stdout is the actual protocol channel —console.error(stderr) is used instead
Next steps
Swap the toy tools for real ones hitting an actual database (Postgres via Prisma)
Add a GitHub-backed tool (e.g.
list_open_prs) to practice token-based authExplore Streamable HTTP transport to host this remotely instead of running it locally
License
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