Skip to main content
Glama
withsivram

GoodNotes MCP Server

by withsivram

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GOODNOTES_DB_DIRNoPath to GoodNotes SQLite databases~/Library/Containers/com.goodnotesapp.x/Data/Library/Databases
GOODNOTES_TRACKING_FILENoPath to processing state file~/.goodnotes-mcp/processed.json

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_notebooksA

List all GoodNotes notebooks with their names, IDs, page counts, and last modified dates.

Filters out templates (documents with epoch-zero timestamps). Returns a formatted list of user notebooks sorted by last modified date.

read_notebookA

Read OCR text from a GoodNotes notebook.

Returns the handwriting-recognized text for each page, with multiple word candidates separated by | so Claude can pick the best word from context.

Args: notebook_id: The document UUID from list_notebooks page_start: First page to read (1-indexed, default: 1) page_end: Last page to read (0 = all pages, default: 0)

read_pageA

Read OCR text from a single page of a GoodNotes notebook.

Args: notebook_id: The document UUID page_number: Page number (1-indexed)

search_notesA

Search across all handwritten notes using case-insensitive text search.

Splits multi-word queries so each word is matched independently — necessary because GoodNotes OCR stores words in separate groups delimited by special chars.

Args: query: Search term (each word matched independently, case-insensitive)

get_unprocessedA

Get notebooks and pages that haven't been processed yet or changed since last processing.

Compares the tracking file against current FTS index to find new/changed content.

mark_processedA

Mark pages as processed after they've been written to Obsidian.

Args: notebook_id: The document UUID page_ids: Comma-separated page UUIDs to mark as processed

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/withsivram/goodnotes-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server