fastmcp-notes
by ketcx
README.md
# fastmcp-notes
A [FastMCP](https://github.com/jlowin/fastmcp) v3 feature showcase: a note-taking knowledge base exposed as an MCP server.
## Features demonstrated
- **Tools** -- CRUD operations on notes with tag categorization
- **Resources** -- note listing (static URI) and note detail (URI template)
- **Prompts** -- parameterized templates for note analysis and brainstorming
- **Context** -- structured logging (`ctx.info`), progress reporting (`ctx.report_progress`), and cross-resource reads (`ctx.read_resource`)
- **Lifespan** -- server startup/shutdown lifecycle with shared state
- **Error handling** -- `ToolError` for domain-specific errors
## Setup
```bash
git clone <repo-url>
cd fastmcp-notes
uv sync
```
## Usage
### Run the server (stdio, for Claude Desktop)
```bash
fastmcp run server.py
```
### Run the server (HTTP, for the client demo)
```bash
fastmcp run server.py -t streamable-http -p 8000
```
### Run the client demo
```bash
# In another terminal, with the server running on port 8000:
python client.py
```
## Claude Desktop configuration
Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
```json
{
"mcpServers": {
"notes": {
"command": "uv",
"args": [
"run", "--directory", "/absolute/path/to/fastmcp-notes",
"fastmcp", "run", "server.py"
]
}
}
}
```
## Screenshots
### Creating a note via Claude Desktop

### Prompts and resources available from the + menu

### Reading a note by title

## Project structure
```
server.py # MCP server -- tools, resources, prompts, lifespan, error handling
client.py # Async client demo
```
## License
MIT
TDQS
A3.5/5.0
Scored across 4 tools
Disambiguation5/5
Each tool has a unique and clearly defined purpose: creating, searching, reading, or deleting a note. There is no overlap or ambiguity between the operations.
Naming Consistency5/5
All tools follow the same verb_noun naming pattern (create_note, search_notes, read_note, delete_note), making the API predictable and easy to navigate.
Tool Count5/5
Four tools is an appropriate size for a simple notes server, covering the core operations without unnecessary bloat or fragmentation.
Completeness4/5
The server covers create, read, search, and delete, but there is no update operation for notes. This is a minor gap that agents can work around by deleting and recreating, but it is still missing from a typical notes lifecycle.
Maintenance
ActivityInactive
ResponsivenessNo issues