PluginBench
MCP Server
Active
MIT

Outline MCP Server MCP Server

io.github.Vortiago/mcp-outline

Connect AI assistants to Outline for document search, reading, and management

What is the Outline MCP Server MCP server?

The Outline MCP Server is a Model Context Protocol server that enables AI assistants to interact with Outline document management systems. It provides tools for searching, reading, creating, editing, and managing documents, collections, and comments within Outline.

This server bridges AI assistants like Claude and Cursor to your Outline knowledge base, enabling natural language document search, content retrieval, document creation and editing, and collaboration features. Use it to let AI agents explore your documentation, answer questions about your knowledge base, and help maintain documents.

How to install Outline MCP Server

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
Environment / auth
  • OUTLINE_API_KEY
    secret

    Outline API key (Settings > API). Can also be set in ~/.config/mcp-outline/.env

  • OUTLINE_API_URL

    Outline API URL for self-hosted instances

Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "mcp-outline": {
      "command": "uvx",
      "args": [
        "mcp-outline"
      ],
      "env": {
        "OUTLINE_API_KEY": "<YOUR_OUTLINE_API_KEY>",
        "OUTLINE_API_URL": "<YOUR_OUTLINE_API_URL>"
      }
    }
  }
}
Cursor
~/.cursor/mcp.json
{
  "mcpServers": {
    "mcp-outline": {
      "command": "uvx",
      "args": [
        "mcp-outline"
      ],
      "env": {
        "OUTLINE_API_KEY": "<YOUR_OUTLINE_API_KEY>",
        "OUTLINE_API_URL": "<YOUR_OUTLINE_API_URL>"
      }
    }
  }
}
Windsurf
~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "mcp-outline": {
      "command": "uvx",
      "args": [
        "mcp-outline"
      ],
      "env": {
        "OUTLINE_API_KEY": "<YOUR_OUTLINE_API_KEY>",
        "OUTLINE_API_URL": "<YOUR_OUTLINE_API_URL>"
      }
    }
  }
}
VS Code
.vscode/mcp.json
{
  "servers": {
    "mcp-outline": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "mcp-outline"
      ],
      "env": {
        "OUTLINE_API_KEY": "<YOUR_OUTLINE_API_KEY>",
        "OUTLINE_API_URL": "<YOUR_OUTLINE_API_URL>"
      }
    }
  }
}
Claude Code
claude mcp add mcp-outline --env OUTLINE_API_KEY=<YOUR_OUTLINE_API_KEY> --env OUTLINE_API_URL=<YOUR_OUTLINE_API_URL> -- uvx mcp-outline

Tools & capabilities

Tools this server exposes to the agent.

  • search_documentsSearch documents by keywords with pagination and status filtering
  • list_recently_updated_documentsList documents by most recent change with date filtering
  • list_collectionsList all collections
  • get_collection_structureGet document hierarchy within a collection
  • get_document_id_from_titleFind document ID by title search
  • read_documentGet document content with optional line-range pagination
  • export_documentExport document as markdown
  • get_document_tocGet table of contents with heading structure and line numbers
  • read_document_sectionRead a specific section by heading match
  • create_documentCreate new document in a collection
  • update_documentReplace or append to document content
  • edit_documentString-match editing with batched replacements
  • move_documentMove document to different collection or parent
  • archive_documentArchive document
  • unarchive_documentRestore document from archive
  • delete_documentDelete document or move to trash
  • restore_documentRestore document from trash
  • list_archived_documentsList all archived documents
  • list_trashList all documents in trash
  • add_commentAdd comment to document with threading support

Use cases

  • Search your Outline knowledge base and retrieve specific documents for AI analysis
  • Ask AI natural language questions about your documentation and get answers grounded in your content
  • Create and edit documents programmatically through AI assistants
  • Organize documents by moving, archiving, or managing collections
  • Collaborate by adding comments and tracking document changes through AI workflows

Outline MCP Server MCP server FAQ

What is the Outline MCP Server?

It's a Model Context Protocol server that connects AI assistants (Claude, Cursor, etc.) to Outline document management systems, enabling search, reading, creation, editing, and collaboration features.

Is it free to use?

Yes, the server is open-source under the MIT License. You need an Outline account (cloud or self-hosted) and an API key from your Outline instance.

How do I install it in Cursor or Claude?

Use the one-click install buttons in the README for Cursor or VS Code, or manually add the server config to your MCP client configuration file with your Outline API key and URL.

What authentication is required?

You need an Outline API key from your Outline web UI (Settings → API Keys → Create New) and optionally the API URL if self-hosted. The key is passed via the OUTLINE_API_KEY environment variable.

Can I use it in read-only mode?

Yes, set OUTLINE_READ_ONLY=true to disable all write operations, or OUTLINE_DISABLE_DELETE=true to disable only deletions while allowing other edits.

Does it support self-hosted Outline?

Yes, set the OUTLINE_API_URL environment variable to your self-hosted instance URL (e.g., https://your-domain/api) and optionally disable SSL verification with OUTLINE_VERIFY_SSL=false.

README (reference)

Source of truth, from the repository.

MCP Outline Server

📢 Official Outline MCP Server Available

Outline now ships an official MCP server — we recommend using it. Read the docs.


<!-- mcp-name: io.github.Vortiago/mcp-outline -->

PyPI Python 3.10+ License: MIT CI Docker

A Model Context Protocol server for interacting with Outline document management.

Features

  • Document operations: Search, read, create, edit, archive documents
  • Collections: List, create, manage document hierarchies
  • Comments: Add and view threaded comments
  • Backlinks: Find documents referencing a specific document
  • MCP Resources: Direct content access via URIs (outline://document/{id}, outline://collection/{id}, etc.)
  • Automatic rate limiting: Transparent handling of API limits with retry logic

Prerequisites

Before using this MCP server, you need:

  • An Outline account (cloud hosted or self-hosted)
  • API key from Outline web UI: Settings → API Keys → Create New
  • Python 3.10+ (for non-Docker installations)

Getting your API key: Log into Outline → Click your profile → Settings → API Keys → "New API Key". Copy the generated token.

Quick Start

One-Click Install

Click a button to install with interactive API key prompt:

Install in VS Code Install in VS Code Insiders Install in Cursor

Manual Install

Install with uv (recommended), pip, or Docker:

uvx mcp-outline          # using uv
pip install mcp-outline   # using pip
# using Docker
docker run -e OUTLINE_API_KEY=<your-key> ghcr.io/vortiago/mcp-outline:latest

Then add to your MCP client config (works with VS Code, Claude Desktop, Cursor, and others):

{
  "inputs": [
    {
      "id": "outline_api_key",
      "type": "promptString",
      "description": "Enter OUTLINE_API_KEY",
      "password": true
    },
    {
      "id": "outline_api_url",
      "type": "promptString",
      "description": "Outline API URL (optional, for self-hosted)",
      "password": false
    }
  ],
  "servers": {
    "mcp-outline": {
      "command": "uvx",
      "args": ["mcp-outline"],
      "env": {
        "OUTLINE_API_KEY": "${input:outline_api_key}",
        "OUTLINE_API_URL": "${input:outline_api_url}"
      }
    }
  }
}
<details> <summary>Claude Code</summary>
claude mcp add mcp-outline uvx mcp-outline

Installing the repo as a plugin instead also bundles the outline-explorer agent (fast read-only wiki exploration) and the outline skill (Outline conventions: mermaidjs fences, document structure, editing workflows).

</details> <details> <summary>Claude Desktop</summary>

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "mcp-outline": {
      "command": "uvx",
      "args": ["mcp-outline"],
      "env": {
        "OUTLINE_API_KEY": "<YOUR_API_KEY>",
        "OUTLINE_API_URL": "<YOUR_OUTLINE_URL>"
      }
    }
  }
}
</details>

Setup guides for more clients: Docker (HTTP), Cline, Codex, Windsurf, and others

Configuration

VariableRequiredDefaultNotes
OUTLINE_API_KEYYes*-Required for tool calls to succeed. For SSE/HTTP, can alternatively be provided per-request via x-outline-api-key header (details)
OUTLINE_API_URLNohttps://app.getoutline.com/apiFor self-hosted: https://your-domain/api
OUTLINE_VERIFY_SSLNotrueSet false for self-signed certificates
OUTLINE_READ_ONLYNofalsetrue = disable ALL write operations (details)
OUTLINE_DISABLE_DELETENofalsetrue = disable only delete operations (details)
OUTLINE_DISABLE_AI_TOOLSNofalsetrue = disable AI tools (for Outline instances without OpenAI)
OUTLINE_DISABLE_RECENT_DOCUMENTSNofalsetrue = disable the list_recently_updated_documents tool
OUTLINE_DYNAMIC_TOOL_LISTNofalsetrue = enable per-user tool filtering by role/key scopes (details)
OUTLINE_MAX_CONNECTIONSNo100Max concurrent connections in pool
OUTLINE_MAX_KEEPALIVENo20Max idle connections in pool
OUTLINE_TIMEOUTNo30.0Read timeout in seconds
OUTLINE_CONNECT_TIMEOUTNo5.0Connection timeout in seconds
OUTLINE_WRITE_TIMEOUTNo30.0Write timeout in seconds
OUTLINE_CACHE_TTLNo30Document cache TTL in seconds. The short default absorbs same-task read bursts without stressing the Outline API; set 0 to disable caching (always-fresh reads) or higher (e.g. 300) for more API savings. Staged edits work either way
OUTLINE_CACHE_MAX_SIZENo100Max cached documents
MCP_TRANSPORTNostdioTransport mode: stdio (local), sse or streamable-http (remote)
MCP_HOSTNo127.0.0.1Server host. Use 0.0.0.0 in Docker for external connections
MCP_PORTNo3000HTTP server port (only for sse and streamable-http modes)

Access Control

FeatureEnv VarEffect
Read-only modeOUTLINE_READ_ONLY=trueDisables all write operations — only search, read, and export tools available
Disable deletesOUTLINE_DISABLE_DELETE=trueDisables only delete operations, all other writes allowed
Disable recent-changes toolOUTLINE_DISABLE_RECENT_DOCUMENTS=trueDisables only the list_recently_updated_documents tool
Dynamic tool listOUTLINE_DYNAMIC_TOOL_LIST=trueFilters tools per-user based on Outline role and API key scopes
Per-user Outline API keysx-outline-api-key headerEach user passes their own Outline API key in HTTP mode for multi-user setups

Read-only mode takes precedence over disable-delete. See Configuration Guide for details.

Tools

Note: Tool availability depends on your access control settings.

Search & Discovery

  • search_documents(query, collection_id?, limit?, offset?, statusFilter?) - Search documents by keywords with pagination. Defaults to published documents; pass statusFilter with draft, archived, and/or published to include other states
  • list_recently_updated_documents(date_filter?, collection_id?, status_filter?, limit?, offset?) - List documents by most recent change, newest first (e.g. "what changed this week"). date_filter windows by last change: day/week/month/year (default week). Defaults to published documents
  • list_collections() - List all collections
  • get_collection_structure(collection_id) - Get document hierarchy within a collection
  • get_document_id_from_title(query, collection_id?) - Find document ID by title search

Document Reading

  • read_document(document_id, offset?, limit?) - Get document content with optional line-range pagination
  • export_document(document_id) - Export document as markdown

Document Navigation

  • get_document_toc(document_id) - Get table of contents with heading structure and line numbers
  • read_document_section(document_id, heading) - Read a specific section by heading match (case-insensitive substring)

Document Management

  • create_document(title, collection_id, text?, parent_document_id?, publish?) - Create new document
  • update_document(document_id, title?, text?, append?) - Replace full document content (append mode available)

Document Editing

  • edit_document(document_id, edits, save?) - String-match editing with batched replacements; save=False stages changes locally, save=True on the final call pushes all changes
  • move_document(document_id, collection_id?, parent_document_id?) - Move document to different collection or parent

Document Lifecycle

  • archive_document(document_id) - Archive document
  • unarchive_document(document_id) - Restore document from archive
  • delete_document(document_id, permanent?) - Delete document (or move to trash)
  • restore_document(document_id) - Restore document from trash
  • list_archived_documents() - List all archived documents
  • list_trash() - List all documents in trash

Comments & Collaboration

  • add_comment(document_id, text, parent_comment_id?) - Add comment to document (supports threaded replies)
  • list_document_comments(document_id, include_anchor_text?, limit?, offset?) - View document comments with pagination
  • get_comment(comment_id, include_anchor_text?) - Get specific comment details
  • get_document_backlinks(document_id) - Find documents that link to this document

Collection Management

  • create_collection(name, description?, color?) - Create new collection
  • update_collection(collection_id, name?, description?, color?) - Update collection properties
  • delete_collection(collection_id) - Delete collection
  • export_collection(collection_id, format?) - Export collection (default: outline-markdown)
  • export_all_collections(format?) - Export all collections

Batch Operations

  • batch_create_documents(documents) - Create multiple documents at once
  • batch_update_documents(updates) - Update multiple documents at once
  • batch_move_documents(document_ids, collection_id?, parent_document_id?) - Move multiple documents
  • batch_archive_documents(document_ids) - Archive multiple documents
  • batch_delete_documents(document_ids, permanent?) - Delete multiple documents

AI-Powered

  • ask_ai_about_documents(question, collection_id?, document_id?) - Ask natural language questions about your documents

Resources

  • outline://collection/{id} - Collection metadata (name, description, color, document count)
  • outline://collection/{id}/tree - Hierarchical document tree structure
  • outline://collection/{id}/documents - Flat list of documents in collection
  • outline://document/{id} - Full document content (markdown)
  • outline://document/{id}/backlinks - Documents that link to this document

Development

git clone https://github.com/Vortiago/mcp-outline.git
cd mcp-outline
uv sync --group dev

uv run poe test-unit          # unit tests
uv run poe test-integration   # integration tests (starts MCP server via stdio)
uv run poe test-e2e           # E2E tests (requires Docker)

See Development Guide for self-hosted Outline setup, MCP Inspector, and more.

Troubleshooting

Server not connecting? Test your API key:

curl -H "Authorization: Bearer YOUR_API_KEY" YOUR_OUTLINE_URL/api/auth.info

See Troubleshooting Guide for common issues with tools, rate limiting, and Docker.

Contributing

Contributions welcome! See CONTRIBUTING.md for setup instructions.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

Related MCP servers

MCP server for Tekna events and news

0
Python
MIT
View repository →