mcp-server-starter
Click on "Deploy 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-server-starterlist all items in inventory"
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-server-starter
A small but real MCP server (FastMCP) — with a destructive action guarded behind human confirmation.
Most "MCP server" examples stop at a hello_world tool. This one shows the part
that actually matters when an agent is on the other end: a destructive tool that
refuses to run until a confirmation token is supplied, forcing the agent to
surface the decision to a human instead of wiping data on its own.
It exposes a tiny inventory domain as MCP tools + one resource, over stdio transport — drop-in for Claude Desktop, Cursor, or the MCP Inspector.
Tools
Tool | Tier | Behavior |
| read | runs freely |
| low-impact write | runs freely (validates inputs) |
| destructive | guarded — returns a one-time token first; only deletes when called again with that token |
| read | human-readable inventory snapshot |
The guard pattern (delete_all_items) is the point: call it once with no token →
you get back {"status": "confirmation_required", "confirm_token": "..."} → a human
approves → call again with the token → it executes. An irreversible action never
runs on the agent's say-so alone.
Related MCP server: mcp-server-demo
Quick start
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python server.py # stdio transportInspect it interactively:
npx @modelcontextprotocol/inspector python server.pyWire it into Claude Desktop / Cursor
Add to your MCP config (claude_desktop_config.json or .cursor/mcp.json):
{
"mcpServers": {
"inventory-starter": {
"command": "python",
"args": ["/absolute/path/to/mcp-server-starter/server.py"]
}
}
}Tip (Claude Code schema): for HTTP-based servers use
"type": "http"— the validator rejects the spec-name"streamable-http"even though they're the same transport. (stdio servers like this one don't need atype.)
Going further
Swap the in-memory
_ITEMSdict for Postgres/Supabase (see the companionfastapi-supabase-multitenant-starter).Route the confirmation to Slack/web instead of a token — see
agent-guardrailsfor a pluggable approver + audit trail.For a LangGraph agent that consumes a guarded tool like this, see
langgraph-hitl-agent.
License
MIT.
This server cannot be deployed
Maintenance
Related MCP Connectors
An MCP server for deep research or task groups
A simple MCP server built with FastMCP and python
Related MCP Servers
- AlicenseBqualityDmaintenanceA Minecraft MCP Server powered by Mineflayer API. It allows to control a Minecraft character in real-time, allowing AI assistants to build structures, explore the world, and interact with the game environment through natural language instruction82250 npm754Apache 2.0
- FlicenseNot gradedqualityDmaintenanceExample MCP server built with FastMCP, demonstrating tools, resources, and prompts for AI integration.13-
- AlicenseNot gradedqualityFmaintenanceEnables dynamic creation and code generation of MCP servers using FastMCP, with tools for adding custom tools, resources, and generating runnable Python code.41MIT
- FlicenseBqualityCmaintenanceA demo MCP server for experimenting with tools, resources, prompts, and lifespan in FastMCP.7-