Skip to content

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:

json
{
  "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

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.

json
{
  "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.

json
{
  "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.

json
{
  "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.

json
{
  "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:

bash
pip install open-note-mcp

Q: Tool calls do not respond

Check log output and confirm that the database path is correct.