MCP Protocol
Overview
Open Note implements the Model Context Protocol (MCP), allowing AI tools such as Cursor and Claude Desktop to access your notes directly.
Installation
See the MCP Installation Guide
Configuration
Cursor
Create .cursorrules in the project root or use global configuration:
{
"mcpServers": {
"open-note": {
"command": "python",
"args": ["-m", "open_note_mcp.server"],
}
}
}Claude Desktop
Edit the configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"open-note": {
"command": "python",
"args": ["-m", "open_note_mcp.server"]
}
}
}OpenCode
OpenCode uses its own plugin installation method. Even if you already use opennote in other frameworks, install it separately for OpenCode.
Tell OpenCode:
Fetch and follow instructions from https://github.com/The-Flash-7/open-note/refs/heads/main/docs/mcp/MCP_INSTALL.md
Available Tools
search_notes
Search notes.
{
"name": "search_notes",
"description": "Search notes",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Search keywords"
},
"category": {
"type": "string",
"description": "Category name (optional)"
},
"tags": {
"type": "array",
"items": {"type": "string"},
"description": "Tag list (optional)"
}
},
"required": ["query"]
}
}get_note
Get the content of a single note.
{
"name": "get_note",
"description": "Get note content",
"inputSchema": {
"type": "object",
"properties": {
"note_id": {
"type": "string",
"description": "Note ID"
}
},
"required": ["note_id"]
}
}create_note
Create a new note.
{
"name": "create_note",
"description": "Create a new note",
"inputSchema": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Note title"
},
"content": {
"type": "string",
"description": "Note content"
},
"category": {
"type": "string",
"description": "Category name (optional)"
},
"tags": {
"type": "array",
"items": {"type": "string"},
"description": "Tag list (optional)"
}
},
"required": ["title", "content"]
}
}update_note
Update a note.
{
"name": "update_note",
"description": "Update a note",
"inputSchema": {
"type": "object",
"properties": {
"note_id": {
"type": "string",
"description": "Note ID"
},
"title": {
"type": "string",
"description": "New title (optional)"
},
"content": {
"type": "string",
"description": "New content (optional)"
}
},
"required": ["note_id"]
}
}list_categories
Get the category list.
list_tags
Get the tag list.
Example Conversations
Search Notes
User: Help me find notes about React
AI: (calls search_notes) I found 3 notes about React...
Create a Note
User: Help me create meeting notes titled "Product Review"
AI: (calls create_note) Created the note "Product Review"
Summarize a Note
User: Summarize my "Project Plan" note
AI: (calls get_note + summarize) The main content of this note is...
Security Notes
- The MCP Server runs locally only
- API Keys are not exposed
- Database access is protected by file system permissions
Troubleshooting
Q: Server failed to start
Make sure the open-note-mcp package is installed:
pip install open-note-mcpQ: Tool calls do not respond
Check log output and confirm that the database path is correct.