Open Notebook

io.github.PiotrAleksander由 GitHub 帳號 PiotrAleksander 發布v0.1.1更新於 Oct 24, 2026

MCP server that wraps the Open Notebook API

概覽

AI 產生的概覽

一個封裝 Open Notebook API 的本機 MCP 伺服器,讓助理在 Open Notebook 中管理筆記本、來源、筆記、搜尋、AI 模型與聊天工作階段。

可以做什麼
建立、讀取、更新與刪除筆記本及其中的來源與筆記,來源支援連結、上傳與文字並可產生嵌入。以向量或文字搜尋筆記本內容,並呼叫已設定的 AI 模型回答問題。列出、建立與刪除 AI 模型,讀取預設模型設定。建立、更新與刪除聊天工作階段,取得聊天上下文並送出訊息。透過 search_capabilities 中繼工具探索可用工具。
適用情境
當你執行 Open Notebook 實例,希望助理整理研究筆記本、新增與整理來源和筆記、檢索這些內容,或在其上進行問答與聊天而不必切換應用程式時使用。
執行需求
本機 Python 3.12+ 環境並安裝 open-notebook-mcp 套件(uv 或 pip),以及一個可連線的 Open Notebook 實例,其位址由 OPEN_NOTEBOOK_URL 設定。若實例設定了 APP_PASSWORD,對應密碼填入 OPEN_NOTEBOOK_PASSWORD。需要能連線該實例的網路。
安裝前請注意
此伺服器可建立、更新與刪除筆記本、來源、筆記、模型與聊天工作階段,刪除類呼叫會影響 Open Notebook 實例中的真實資料。它透過 OPEN_NOTEBOOK_PASSWORD 保存實例密碼,所有內容與問題都會送到該實例及其設定的 AI 模型。請只將 OPEN_NOTEBOOK_URL 指向你信任的實例。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Open Notebook,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

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:

來源:README.md,提交 a2cddbf

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.1最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分