mcp-starter
This server provides a simple notes management application through the Model Context Protocol, with three core capability types:
Tools
add_note— Save a new note by providing a title and bodylist_notes— Retrieve all existing notes, returning their IDs and titlesdelete_note— Remove a specific note by its numeric ID
Resources
notes://all— Read the full content of all notes as JSON
Prompts
summarize_notes— Ask Claude to summarize all saved notes as bullet points
Notes are persisted to a notes.json file (or a Docker volume if running containerized), and can be accessed via natural language requests in Claude Code (e.g. "Add a note", "List my notes", "Delete note #1").
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-starter Add a note titled 'meeting' with body 'discuss Q3 plans'"
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-starter
A minimal MCP (Model Context Protocol) server that demonstrates the three core capability types — Tools, Resources, and Prompts — through a simple notes app.
Use this as a learning template or starting point for building your own MCP server.
What's inside
Capability | Name | What it does |
Tool |
| Save a note with a title and body |
Tool |
| List all note IDs and titles |
Tool |
| Delete a note by ID |
Resource |
| Read full content of all notes as JSON |
Prompt |
| Ask Claude to summarize all notes as bullet points |
Notes are persisted to notes.json alongside server.py.
Related MCP server: MCP Notepad Server
Install
One-liner (bash)
Requires uv and Claude Code.
curl -fsSL https://raw.githubusercontent.com/ejoliet/mcp-starter/main/install.sh | bashThis clones the repo to ~/mcp-starter, installs dependencies, and registers the server with Claude Code automatically. Start a new Claude Code session and it's ready.
To install to a custom path:
MCP_STARTER_DIR=~/dev/mcp-starter curl -fsSL https://raw.githubusercontent.com/ejoliet/mcp-starter/main/install.sh | bashDocker
Requires Docker.
git clone https://github.com/ejoliet/mcp-starter.git
cd mcp-starter
docker compose up --buildNotes are persisted in a named Docker volume (notes-data). Register the containerized server with Claude Code:
claude mcp add mcp-starter -- docker compose -f ~/mcp-starter/docker-compose.yml run --rm mcp-starterManual setup
Requirements: Python 3.12+, uv, Claude Code.
git clone https://github.com/ejoliet/mcp-starter.git ~/mcp-starter
cd ~/mcp-starter
uv sync
claude mcp add mcp-starter -- uv --directory ~/mcp-starter run server.pyThen start a new Claude Code session — the server will be available automatically.
Usage in Claude
Once registered, Claude can call tools directly:
"Add a note titled 'standup' with body 'review PR #42'"
"List my notes"
"Delete note #1"
Or read the resource and prompt via the MCP panel (/mcp).
CLI development & testing
See DEV_GUIDE.md for how to iterate on the server from the terminal without relying on Claude Code.
Quick test:
uv run python test_resource.pyProject structure
mcp-starter/
├── server.py # MCP server implementation
├── test_resource.py # CLI test harness
├── install.sh # Bash one-liner installer
├── Dockerfile # Container image
├── docker-compose.yml # Compose config
├── pyproject.toml # Dependencies
└── DEV_GUIDE.md # Developer iteration guideExtending
Add a new tool in server.py:
Append a
types.Tool(...)entry inlist_tools()Handle
name == "your_tool"incall_tool()Test with
test_resource.pybefore restarting Claude Code
Available Tools
3 toolsadd_noteA
Save a new note with a title and body.
Inputs: title (required), body (required).
delete_noteA
Delete a note by its numeric ID.
Inputs: id (required).
list_notesA
Return all note IDs and titles.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 3 tools
Each tool has a distinct purpose: create, delete, and list notes. There is no overlap or ambiguity.
All tools follow a consistent verb_noun pattern: add_note, delete_note, list_notes.
Three tools is reasonable for a simple note-taking starter, though missing get/update operations keeps it from being fully scoped.
Missing essential operations like fetching a single note by ID and updating notes. Only create, delete, and list are provided, leaving significant gaps.
Maintenance
Related MCP Connectors
Google Keep-style notes app with an MCP server for AI agents to read/write notes.
An MCP server that used to create notes
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
Persistent memory layer for AI tools. Save and recall notes across Claude and other MCP clients.
Related MCP Servers
- FlicenseCqualityDmaintenanceA simple MCP server implementing a note storage system with one tool to add notes and one prompt to summarize stored notes.42-
- AlicenseBqualityDmaintenanceA learning-focused MCP server that demonstrates core MCP concepts through a simple notepad application, enabling users to create, update, delete, and search notes while exploring tools, resources, and prompts functionality.424 npmMIT
- FlicenseCqualityDmaintenanceA simple note-taking MCP server that allows adding notes and summarizing them via a prompt.2-
- AlicenseNot gradedqualityDmaintenanceA simple notes MCP server that enables creating, listing, and summarizing text notes via resources, tools, and prompts.MIT