project-notes
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., "@project-notessearch notes for recent decisions on auth"
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.
project-notes: an MCP server of your own
The complete code from the Code Craft Studio video "How to Build an MCP Server of Your Own". Video: (link goes here)
A personal MCP server over a folder of markdown notes. It exposes the three MCP primitives:
Primitive | What you get | Where |
Tool |
|
|
Resource | any note, readable at |
|
Prompt |
|
|
Quickstart (under 5 minutes)
Requires Python 3.10+ and uv.
git clone <this repo> && cd mcp-notes
uv syncTest it with the MCP Inspector before touching any client:
npx @modelcontextprotocol/inspector uv run server.pyThe Inspector lists both tools. Call search_notes with auth and you should see hits from auth-decision.md.
Related MCP server: Local Knowledge Desk
Wire it into Claude Code
# just you, this project (default: local scope)
claude mcp add notes -- uv run server.py
# every project you own
claude mcp add notes --scope user -- uv run server.py
# your whole team, via git
claude mcp add notes --scope project -- uv run server.pyProject scope writes .mcp.json (one is already included here). Commit it: teammates who clone this repo and open Claude Code get a one-time approval prompt, then they are connected too.
Check the connection inside Claude Code with /mcp, then ask: "What did we decide about auth?"
Go remote
Stdio runs on your machine with no port and no hosting. To serve a team from one box:
uv run server.py --httpThat switches the transport to streamable HTTP. Once it is on a network, treat it as production: TLS in front, OAuth for authentication (both supported by the protocol), and read SECURITY-CHECKLIST.md first.
The gotcha to remember
On stdio, stdout is the protocol channel. One stray print() corrupts the JSON stream and the client reports "connection failed". This server logs to stderr; keep it that way.
Files
server.py the whole server, ~90 lines
notes/ sample notes (replace with your own)
.mcp.json project-scope config, committed for the team
pyproject.toml pinned dependency (see checklist item 3)
SECURITY-CHECKLIST.md harden it from day oneLicense
MIT. Use it, fork it, ship it.
This server cannot be deployed
Maintenance
Related MCP Connectors
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
Serve a folder of Markdown notes as an MCP server: hybrid search, reading, and sourced answers.
An MCP server that used to create notes
Google Keep-style notes app with an MCP server for AI agents to read/write notes.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server for managing Obsidian-style note vaults, providing tools for full-text search, note creation, and backlink tracking. It enables users to navigate, structure, and update their personal knowledge base through natural language.9MIT
- FlicenseAqualityBmaintenanceA local MCP server for managing Markdown notes, enabling create, list, read, search, summarize, and delete operations through natural language.61-
- AlicenseAqualityDmaintenanceA beginner-friendly MCP server for managing personal notes. Enables Claude to create, list, read, search, update, and delete notes saved as Markdown files.6MIT
- FlicenseCqualityDmaintenanceA simple note-taking MCP server that allows adding notes and summarizing them via a prompt.2-