Implementing an MCP server for the Open Notebook API in GoLang
Open Notebook MCP Server
An MCP (Model Context Protocol) server that connects AI assistants to your Open Notebook instance. Manage notebooks, sources, notes, search content, chat, and configure AI models — all through natural language. Writen in Go
Features
The server exposes 25 tools organized into the following categories:
📒 Notebooks
| Tool | Description |
|---|---|
| list_notebooks | List all notebooks with optional filtering by archived status and ordering |
| get_notebook | Retrieve a specific notebook by ID |
| create_notebook | Create a new notebook with name and description |
| update_notebook | Update notebook name, description, or archived status |
| delete_notebook | Delete a notebook |
📄 Sources
| Tool | Description |
|---|---|
| list_sources | List sources with optional filtering by notebook, pagination |
| get_source | Retrieve a specific source by ID |
| create_source | Create a new source (link, upload, or text) with optional embedding |
| update_source | Update a source title or topics |
| delete_source | Delete a source |
📝 Notes
| Tool | Description |
|---|---|
| list_notes | List notes with optional filtering by notebook, pagination |
| get_note | Retrieve a specific note by ID |
| create_note | Create a new note with title and content |
| update_note | Update note title, content, or topics |
| delete_note | Delete a note |
🔍 Search & Q&A
| Tool | Description |
|---|---|
| search | Search content using vector or text search, optionally scoped to a notebook |
| ask_question | Ask a question with full control over strategy, answer, and synthesis models |
| ask_simple | Simplified question interface with the same model options |
🤖 Models
| Tool | Description |
|---|---|
| list_models | List all configured AI models |
| get_model | Retrieve a specific model configuration |
| create_model | Create a new AI model configuration (provider, type) |
| delete_model | Delete a model configuration |
| get_default_models | Get default model configurations |
💬 Chat
| Tool | Description |
|---|---|
| list_chat_sessions | List chat sessions, optionally filtered by notebook |
| create_chat_session | Create a new chat session within a notebook |
| get_chat_session | Retrieve a specific chat session |
| update_chat_session | Update a chat session title |
| delete_chat_session | Delete a chat session |
| execute_chat | Send a message in a chat session and get a response |
| get_chat_context | Build context for a chat conversation |
⚙️ Settings
| Tool | Description |
|---|---|
| get_settings | Get application settings |
| update_settings | Update application settings |
🔎 Meta
| Tool | Description |
|---|---|
| search_capabilities | Search available tools with progressive detail levels (name, summary, full) |
Installation
Prerequisites
- Go 1.23 or later
- A running Open Notebook instance
Build from source
git clone https://github.com/lib4u/open-notebook-mcp
cd open-notebook-mcp
go build -o open-notebook-mcp .
This produces a single binary open-notebook-mcp that you can place anywhere on your system.
Configuration
The server is configured via environment variables:
| Variable | Default | Description |
|---|---|---|
| OPEN_NOTEBOOK_URL | http://localhost:5055 | Base URL of your Open Notebook instance |
| OPEN_NOTEBOOK_PASSWORD | (empty) | Authentication token (if your instance requires it) |
| MCP_TRANSPORT | stdio | Transport mode: stdio or streamable-http |
| HOST | 127.0.0.1 | Host to bind (streamable-http only) |
| PORT | 8000 | Port to listen on (streamable-http only) |
| MCP_PATH | /mcp | HTTP endpoint path (streamable-http only) |
Usage with AI Clients
Claude Desktop
Add the following to your Claude Desktop config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"open-notebook": {
"command": "/path-to-binary/open-notebook-mcp",
"args": [],
"env": {
"OPEN_NOTEBOOK_URL": "http://localhost:5055",
"OPEN_NOTEBOOK_PASSWORD": "your_password_if_needed"
}
}
}
}
Cursor
Open Settings → MCP and add a new server. In your .cursor/mcp.json:
{
"mcpServers": {
"open-notebook": {
"command": "/path-to-binary/open-notebook-mcp",
"args": [],
"env": {
"OPEN_NOTEBOOK_URL": "http://localhost:5055",
"OPEN_NOTEBOOK_PASSWORD": "your_password_if_needed"
}
}
}
}
Note: Replace
/path-to-binary/open-notebook-mcpwith the actual path to your compiled binary.
Streamable HTTP Mode
For remote or shared deployments, you can run the server in HTTP mode:
MCP_TRANSPORT=streamable-http \
OPEN_NOTEBOOK_URL=http://localhost:5055 \
HOST=0.0.0.0 \
PORT=8000 \
./open-notebook-mcp
The MCP endpoint will be available at http://<host>:<port>/mcp.
License
MIT