Connects Claude to a self-hosted Open Notebook instance for managing research and knowledge bases. Exposes 39 tools across notebooks, sources, notes, vector search, and chat sessions. You can create notebooks, ingest content from URLs or text, generate embeddings, ask questions against your knowledge base using configurable AI models, and manage multi-turn chat conversations. Implements progressive disclosure through a search_capabilities tool to minimize context usage. Supports both local stdio and remote HTTP deployment. Requires pointing it at your Open Notebook API endpoint, with optional password auth if you've locked down your instance.
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.
search_capabilities# Clone the repository
git clone https://github.com/PiotrAleksander/open-notebook-mcp.git
cd open-notebook-mcp
# Install with uv
uv sync
pip install -e .
The server requires configuration to connect to your Open Notebook instance:
Create a .env file or set these environment variables:
# Required: URL of your Open Notebook instance
OPEN_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
For local development with default Open Notebook settings:
# .env
OPEN_NOTEBOOK_URL=http://localhost:5055
If you've configured authentication in Open Notebook:
# .env
OPEN_NOTEBOOK_URL=http://localhost:5055
OPEN_NOTEBOOK_PASSWORD=my_secure_password
For local use with AI assistants:
uv run open-notebook-mcp
Or using the MCP CLI:
mcp dev src/open_notebook_mcp/server.py
For remote deployment:
MCP_TRANSPORT=streamable-http HOST=0.0.0.0 PORT=8000 uv run open-notebook-mcp
Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"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"
}
}
}
}
The server implements progressive disclosure. Use the search_capabilities tool to discover available functionality:
# Get a summary of all tools
search_capabilities(query="", detail="summary", limit=50)
# Search for specific functionality
search_capabilities(query="notebook", detail="summary", limit=10)
# Get full details for a specific tool
search_capabilities(query="create_notebook", detail="full", limit=1)
# Create a new notebook
result = create_notebook(
name="AI Research",
description="Research on AI applications"
)
notebook_id = result["notebook"]["id"]
# List all notebooks
notebooks = list_notebooks(archived=False, limit=20)
# Update a notebook
update_notebook(
notebook_id=notebook_id,
name="AI Research (Updated)"
)
# Get a specific notebook
notebook = get_notebook(notebook_id=notebook_id)
# Add a web source
source = 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 notebook
sources = list_sources(notebook_id=notebook_id, limit=20)
# Create a note
note = create_note(
notebook_id=notebook_id,
title="Key Findings",
content="Important insights about AI applications...",
topics=["AI", "Research"]
)
# Update a note
update_note(
note_id=note["note"]["id"],
content="Updated insights..."
)
# Search content
results = search(
query="artificial intelligence",
type="vector",
notebook_id=notebook_id,
limit=10
)
# List available models first
models = list_models(limit=50)
model_id = models["models"][0]["id"]
# Ask a question
answer = 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
)
# Create a chat session
session = create_chat_session(
notebook_id=notebook_id,
title="Research Discussion"
)
session_id = session["session"]["id"]
# Build context
context = get_chat_context(notebook_id=notebook_id)
# Send a message
response = execute_chat(
session_id=session_id,
message="What are the key insights from my research?",
context=context["context"]
)
# Get session history
history = get_chat_session(session_id=session_id)
The server provides 39 tools across multiple categories:
search_capabilities - Progressive tool discoverylist_notebooks, get_notebook, create_notebook, update_notebook, delete_notebooklist_sources, get_source, create_source, update_source, delete_sourcelist_notes, get_note, create_note, update_note, delete_notesearch, ask_question, ask_simplelist_models, get_model, create_model, delete_model, get_default_modelslist_chat_sessions, create_chat_session, get_chat_session, update_chat_session, delete_chat_session, execute_chat, get_chat_contextget_settings, update_settingsThis server follows MCP best practices:
search_capabilities to minimize context usageopen-notebook-mcp/
├── src/
│ └── open_notebook_mcp/
│ ├── __init__.py
│ └── server.py # Main MCP server implementation
├── tests/ # (to be added)
├── pyproject.toml
├── README.md
└── .env.example
Test the server using the MCP Inspector:
mcp dev src/open_notebook_mcp/server.py
or
npx @modelcontextprotocol/inspector uv --directory ./src/open_notebook_mcp "run" "server.py"
This opens an interactive inspector where you can:
To add new tools:
Capability entry to the CAPABILITIES tuple@mcp.tool() decoratorverb_noun (e.g., list_notebooks)request_idmcp[cli]>=1.23.2, httpx>=0.28.1Contributions are welcome! Please ensure:
CAPABILITIES indexSee LICENSE file for details.
For issues related to:
OPEN_NOTEBOOK_URL*URL of your Open Notebook instance
OPEN_NOTEBOOK_PASSWORDsecretAuthentication password (if APP_PASSWORD is set in Open Notebook)
csoai-org/pdf-document-mcp
xt765/mcp-document-converter
io.github.xjtlumedia/markdown-formatter
io.github.ai-aviate/better-notion
suekou/mcp-notion-server
meterlong/mcp-doc