Open Notebook

io.github.PiotrAleksanderPublished by GitHub account PiotrAleksanderv0.1.1Updated Oct 24, 2026

MCP server that wraps the Open Notebook API

Overview

AI-generated overview

A local MCP server that wraps the Open Notebook API, letting an assistant manage notebooks, sources, notes, search, AI models and chat sessions in an Open Note

What you can do
Create, read, update and delete notebooks, sources and notes inside them, including link, upload and text sources with optional embeddings. Search notebook content with vector or text search and ask questions answered by configured AI models. List, create and delete AI models and read default model settings. Create, update and delete chat sessions, fetch chat context and send messages. Discover available tools through a search_capabilities meta tool.
When to use it
Use it when you run an Open Notebook instance and want an assistant to organize research notebooks, add and curate sources and notes, search that material, or run question-answering and chat over it without switching apps.
Requirements
A local Python 3.12+ environment with the open-notebook-mcp package (uv or pip), plus a reachable Open Notebook instance whose URL is set in OPEN_NOTEBOOK_URL. If the instance has APP_PASSWORD set, the matching password goes in OPEN_NOTEBOOK_PASSWORD. Network access to that instance is needed.
Before you install
The server can create, update and delete notebooks, sources, notes, models and chat sessions, so destructive calls affect real data in your Open Notebook instance. It holds the instance password in OPEN_NOTEBOOK_PASSWORD, and all content and questions are sent to that instance and to whichever AI models it is configured with. Point OPEN_NOTEBOOK_URL only at an instance you trust.

Installation

In SourceWeft

  1. Open Open Notebook in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Open Notebook MCP Server

An MCP (Model Context Protocol) server that provides tools to interact with the Open Notebook API. This server enables AI assistants like Claude to manage notebooks, sources, notes, search content, and interact with AI models through Open Notebook.

Features

  • Notebooks Management: Create, read, update, and delete notebooks
  • Sources Management: Add and manage content sources (links, uploads, text)
  • Notes Management: Create and organize notes within notebooks
  • Search & AI: Search content using vector/text search and ask questions
  • Models Management: Configure and manage AI models
  • Chat Sessions: Create and manage chat conversations
  • Settings: Access and update application settings
  • Progressive Disclosure: Efficient tool discovery with search_capabilities

Installation

Using uv (recommended)

bash
# Clone the repositorygit clone https://github.com/PiotrAleksander/open-notebook-mcp.gitcd open-notebook-mcp
# Install with uvuv sync

Using pip

bash
pip install -e .

Configuration

The server requires configuration to connect to your Open Notebook instance:

Environment Variables

Create a .env file or set these environment variables:

bash
# Required: URL of your Open Notebook instanceOPEN_NOTEBOOK_URL=http://localhost:5055
# Optional: Authentication password (if APP_PASSWORD is set in Open Notebook)OPEN_NOTEBOOK_PASSWORD=your_password_here
# Optional: Transport configuration (default: stdio)MCP_TRANSPORT=stdio  # or streamable-http for remote deployment

Example Configuration

For local development with default Open Notebook settings:

bash
# .envOPEN_NOTEBOOK_URL=http://localhost:5055

If you've configured authentication in Open Notebook:

bash
# .envOPEN_NOTEBOOK_URL=http://localhost:5055OPEN_NOTEBOOK_PASSWORD=my_secure_password

Usage

Running the Server

Development Mode (STDIO)

For local use with AI assistants:

bash
uv run open-notebook-mcp

Or using the MCP CLI:

bash
mcp dev src/open_notebook_mcp/server.py
Production Mode (Streamable HTTP)

For remote deployment:

bash
MCP_TRANSPORT=streamable-http HOST=0.0.0.0 PORT=8000 uv run open-notebook-mcp

Using with Claude Desktop

Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

json
{  "mcpServers": {    "open-notebook": {      "command": "uv",      "args": [        "run",        "--directory",        "/path/to/open-notebook-mcp",        "open-notebook-mcp"      ],      "env": {        "OPEN_NOTEBOOK_URL": "http://localhost:5055",        "OPEN_NOTEBOOK_PASSWORD": "your_password_if_needed"      }    }  }}

Discovering Available Tools

The server implements progressive disclosure. Use the search_capabilities tool to discover available functionality:

python
# Get a summary of all toolssearch_capabilities(query="", detail="summary", limit=50)
# Search for specific functionalitysearch_capabilities(query="notebook", detail="summary", limit=10)
# Get full details for a specific toolsearch_capabilities(query="create_notebook", detail="full", limit=1)

Example Workflows

Creating and Managing Notebooks
python
# Create a new notebookresult = create_notebook(    name="AI Research",    description="Research on AI applications")notebook_id = result["notebook"]["id"]
# List all notebooksnotebooks = list_notebooks(archived=False, limit=20)
# Update a notebookupdate_notebook(    notebook_id=notebook_id,    name="AI Research (Updated)")
# Get a specific notebooknotebook = get_notebook(notebook_id=notebook_id)
Adding Sources
python
# Add a web sourcesource = create_source(    notebook_id=notebook_id,    type="link",    url="https://example.com/ai-article",    title="AI Research Article",    embed=True  # Generate embeddings)
# List sources in a notebooksources = list_sources(notebook_id=notebook_id, limit=20)
Creating Notes
python
# Create a notenote = create_note(    notebook_id=notebook_id,    title="Key Findings",    content="Important insights about AI applications...",    topics=["AI", "Research"])
# Update a noteupdate_note(    note_id=note["note"]["id"],    content="Updated insights...")
Searching and Asking Questions
python
# Search contentresults = search(    query="artificial intelligence",    type="vector",    notebook_id=notebook_id,    limit=10)
# List available models firstmodels = list_models(limit=50)model_id = models["models"][0]["id"]
# Ask a questionanswer = ask_simple(    question="What are the main AI applications mentioned?",    strategy_model=model_id,    answer_model=model_id,    final_answer_model=model_id,    notebook_id=notebook_id)
Chat Sessions
python
# Create a chat sessionsession = create_chat_session(    notebook_id=notebook_id,    title="Research Discussion")session_id = session["session"]["id"]
# Build contextcontext = get_chat_context(notebook_id=notebook_id)
# Send a messageresponse = execute_chat(    session_id=session_id,    message="What are the key insights from my research?",    context=context["context"])
# Get session historyhistory = get_chat_session(session_id=session_id)

Available Tools

The server provides 39 tools across multiple categories:

Meta Tools

  • search_capabilities - Progressive tool discovery

Notebooks (5 tools)

  • list_notebooks, get_notebook, create_notebook, update_notebook, delete_notebook

Sources (5 tools)

  • list_sources, get_source, create_source, update_source, delete_source

Notes (5 tools)

  • list_notes, get_note, create_note, update_note, delete_note

Search (3 tools)

  • search, ask_question, ask_simple

Models (5 tools)

  • list_models, get_model, create_model, delete_model, get_default_models

Chat (7 tools)

  • list_chat_sessions, create_chat_session, get_chat_session, update_chat_session, delete_chat_session, execute_chat, get_chat_context

Settings (2 tools)

  • get_settings, update_settings

Architecture

This server follows MCP best practices:

  • Progressive Disclosure: Use search_capabilities to minimize context usage
  • Context Efficiency: Small outputs by default, with limit parameters
  • Dual Transport: Supports both STDIO (local) and Streamable HTTP (remote)
  • Error Handling: Structured error messages with actionable hints
  • Timeouts: 30-second default timeout for all API requests
  • Authentication: Optional Bearer token authentication

Development

Project Structure

open-notebook-mcp/├── src/│   └── open_notebook_mcp/│       ├── __init__.py│       └── server.py          # Main MCP server implementation├── tests/                      # (to be added)├── pyproject.toml├── README.md└── .env.example

Testing

Test the server using the MCP Inspector:

bash
mcp dev src/open_notebook_mcp/server.py

or

bash
npx @modelcontextprotocol/inspector uv --directory ./src/open_notebook_mcp "run" "server.py"

This opens an interactive inspector where you can:

  1. Browse available tools
  2. Test tool calls
  3. Inspect responses
  4. Debug errors

Adding New Tools

To add new tools:

  1. Add a Capability entry to the CAPABILITIES tuple
  2. Implement the tool function with @mcp.tool() decorator
  3. Follow naming conventions: verb_noun (e.g., list_notebooks)
  4. Include proper docstrings and type hints
  5. Return structured responses with request_id

Requirements

  • Python 3.12+
  • Open Notebook instance (local or remote)
  • Dependencies: mcp[cli]>=1.23.2, httpx>=0.28.1

Contributing

Contributions are welcome! Please ensure:

  • Follow the existing code structure and patterns
  • Add tools to the CAPABILITIES index
  • Include proper type hints and docstrings
  • Test with MCP Inspector before submitting

License

See LICENSE file for details.

Links

Support

For issues related to:

Source: README.md at commit a2cddbf

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.1LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts