upnote-mcp
A read-only MCP server that enables searching, retrieving, and managing local UpNote notes, notebooks, and tags via SQLite and UpNote's official URL scheme.
README
upnote-mcp
upnote-mcp is a read-only MCP server for reading local UpNote data from SQLite over stdio.
This is an unofficial project and is not affiliated with, endorsed by, or maintained by UpNote.
Features
search_notes: search notes by title, body text, or summarylist_recent_notes: list the most recently updated noteslist_notes_this_week: list notes updated during the current weeklist_notes_this_month: list notes updated during the current monthfind_notes: combine period, keyword, and tag filters in one callfind_and_open_note: find matching notes and open the most recent match in UpNoteopen_note: open a note in the UpNote app by note IDget_note: fetch the full contents of a note by note IDopen_notebook: open a notebook in the UpNote app by notebook IDlist_notebooks: list notebooks with note countscreate_note: create a new note through UpNote's official URL schemelist_tags: list tagssearch_by_tag: list notes for a tag
This project is intentionally read-only. It does not write to the UpNote database. Safe note creation and open actions are performed through UpNote's official URL scheme instead of direct database writes.
Package Name
This package is prepared to be published as @bellx2/upnote-mcp.
Requirements
macOSbuninstalled on the machine that runs the server- UpNote desktop app installed
- Default UpNote database path:
~/Library/Containers/com.getupnote.desktop/Data/Library/Application Support/UpNote/upnote.sqlite3
If your database lives somewhere else, set UPNOTE_DB.
Install
bun install
Run
bun run start
For normal use, prefer the published package:
bunx @bellx2/upnote-mcp
or:
npx @bellx2/upnote-mcp
npx support still depends on bun being installed, because this package uses Bun-specific APIs such as bun:sqlite.
For development with file watching:
bun run dev
Environment Variables
UPNOTE_DB: absolute path toupnote.sqlite3
Example:
export UPNOTE_DB="$HOME/Library/Containers/com.getupnote.desktop/Data/Library/Application Support/UpNote/upnote.sqlite3"
Permissions
On first run, your MCP client may show permission prompts for command execution and local file access.
This is expected because the server:
- launches through
bun - reads your local UpNote SQLite database
- may open the UpNote app for
open_note,open_notebook, orcreate_note
If you deny these permissions, note search and retrieval will not work. After granting access, you may need to restart the MCP server in Cursor or Claude Desktop.
MCP Config Example
Recommended: published package
Cursor
{
"mcpServers": {
"upnote": {
"command": "bunx",
"args": ["@bellx2/upnote-mcp"]
}
}
}
Claude Desktop
{
"mcpServers": {
"upnote": {
"command": "bunx",
"args": ["@bellx2/upnote-mcp"]
}
}
}
Local development checkout
Cursor
{
"mcpServers": {
"upnote": {
"command": "/absolute/path/to/bun",
"args": ["run", "/absolute/path/to/upnote-mcp/src/index.ts"]
}
}
}
Claude Desktop
{
"mcpServers": {
"upnote": {
"command": "/absolute/path/to/bun",
"args": ["run", "/absolute/path/to/upnote-mcp/src/index.ts"]
}
}
}
Example Workflows
Try prompts like:
Search UpNote for "travel" and show me the first resultShow me my 10 most recent UpNote notesShow me this week's notesShow me this month's notesFind this week's AI notesOpen this week's AI noteFind this month's notes tagged meetingOpen the latest note tagged meetingList my UpNote tags and open the note that matches the tag "meeting"Find notes about "launch", summarize them, and create a new UpNote note with the summaryList notebooks and open the one named "Research"
Tool Reference
search_notes
Input:
{
"query": "travel",
"limit": 5
}
list_recent_notes
Input:
{
"limit": 10
}
list_notes_this_week
Input:
{
"limit": 20
}
list_notes_this_month
Input:
{
"limit": 20
}
find_notes
Input:
{
"period": "this_week",
"query": "AI",
"limit": 10
}
Or:
{
"period": "this_month",
"tag": "meeting",
"limit": 10
}
find_and_open_note
Input:
{
"period": "this_week",
"query": "AI",
"limit": 10
}
Or:
{
"period": "recent",
"tag": "meeting",
"limit": 10
}
get_note
Input:
{
"id": "019fd239-a98a-742b-b75b-cee66e7aa830"
}
open_note
Input:
{
"id": "019fd239-a98a-742b-b75b-cee66e7aa830"
}
open_notebook
Input:
{
"id": "3f03c742-1270-4d35-a5bc-c7d98580d6fc"
}
list_notebooks
Input:
{}
list_tags
Input:
{}
search_by_tag
Input:
{
"tag": "meeting",
"limit": 5
}
create_note
Input:
{
"title": "Meeting Notes",
"text": "# Summary\n\nDraft created by MCP.",
"markdown": true,
"newWindow": false
}
Verification
bun run check
bun run smoke
Japanese README
The previous Japanese README is available at README_ja.md.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
E2B
Using MCP to run code via e2b.