MCP Outline Server

MCP Outline Server

A Model Context Protocol server that enables AI assistants like Claude to interact with Outline document services, supporting document searching, reading, creation, editing, and comment management.

Vortiago

Research & Data
Visit Server

Tools

list_trash

Displays all documents currently in the trash. Use this tool when you need to: - Find deleted documents that can be restored - Review what documents are pending permanent deletion - Identify documents to restore from trash - Verify if specific documents were deleted Returns: Formatted string containing list of documents in trash

search_documents

Searches for documents using keywords or phrases across your knowledge base. IMPORTANT: The search performs full-text search across all document content and titles. Results are ranked by relevance, with exact matches and title matches typically ranked higher. The search will return snippets of content (context) where the search terms appear in the document. You can limit the search to a specific collection by providing the collection_id. Use this tool when you need to: - Find documents containing specific terms or topics - Locate information across multiple documents - Search within a specific collection using collection_id - Discover content based on keywords Args: query: Search terms (e.g., "vacation policy" or "project plan") collection_id: Optional collection to limit the search to Returns: Formatted string containing search results with document titles and contexts

list_collections

Retrieves and displays all available collections in the workspace. Use this tool when you need to: - See what collections exist in the workspace - Get collection IDs for other operations - Explore the organization of the knowledge base - Find a specific collection by name Returns: Formatted string containing collection names, IDs, and descriptions

get_collection_structure

Retrieves the hierarchical document structure of a collection. Use this tool when you need to: - Understand how documents are organized in a collection - Find document IDs within a specific collection - See the parent-child relationships between documents - Get an overview of a collection's content structure Args: collection_id: The collection ID to examine Returns: Formatted string showing the hierarchical structure of documents

get_document_id_from_title

Locates a document ID by searching for its title. IMPORTANT: This tool first checks for exact title matches (case-insensitive). If none are found, it returns the best partial match instead. This is useful when you're not sure of the exact title but need to reference a document in other operations. Results are more accurate when you provide more of the actual title in your query. Use this tool when you need to: - Find a document's ID when you only know its title - Get the document ID for use in other operations - Verify if a document with a specific title exists - Find the best matching document if exact title is unknown Args: query: Title to search for (can be exact or partial) collection_id: Optional collection to limit the search to Returns: Document ID if found, or best match information

read_document

Retrieves and displays the full content of a document. Use this tool when you need to: - Access the complete content of a specific document - Review document information in detail - Quote or reference document content - Analyze document contents Args: document_id: The document ID to retrieve Returns: Formatted string containing the document title and content

export_document

Exports a document as plain markdown text. Use this tool when you need to: - Get clean markdown content without formatting - Extract document content for external use - Process document content in another application - Share document content outside Outline Args: document_id: The document ID to export Returns: Document content in markdown format without additional formatting

create_document

Creates a new document in a specified collection. Use this tool when you need to: - Add new content to a knowledge base - Create documentation, guides, or notes - Add a child document to an existing parent - Start a new document thread or topic Args: title: The document title collection_id: The collection ID to create the document in text: Optional markdown content for the document parent_document_id: Optional parent document ID for nesting publish: Whether to publish the document immediately (True) or save as draft (False) Returns: Result message with the new document ID

update_document

Modifies an existing document's title or content. IMPORTANT: This tool replaces the document content rather than just adding to it. To update a document with changed data, you need to first read the document, add your changes to the content, and then send the complete document with your changes. Use this tool when you need to: - Edit or update document content - Change a document's title - Append new content to an existing document - Fix errors or add information to documents Args: document_id: The document ID to update title: New title (if None, keeps existing title) text: New content (if None, keeps existing content) append: If True, adds text to the end of document instead of replacing Returns: Result message confirming update

add_comment

Adds a comment to a document or replies to an existing comment. Use this tool when you need to: - Provide feedback on document content - Ask questions about specific information - Reply to another user's comment - Collaborate with others on document development Args: document_id: The document to comment on text: The comment text (supports markdown) parent_comment_id: Optional ID of a parent comment (for replies) Returns: Result message with the new comment ID

move_document

Relocates a document to a different collection or parent document. IMPORTANT: When moving a document that has child documents (nested documents), all child documents will move along with it, maintaining their hierarchical structure. You must specify either collection_id or parent_document_id (or both). Use this tool when you need to: - Reorganize your document hierarchy - Move a document to a more relevant collection - Change a document's parent document - Restructure content organization Args: document_id: The document ID to move collection_id: Target collection ID (if moving between collections) parent_document_id: Optional parent document ID (for nesting) Returns: Result message confirming the move operation

archive_document

Archives a document to remove it from active use while preserving it. IMPORTANT: Archived documents are removed from collections but remain searchable in the system. They won't appear in normal collection views but can still be found through search or the archive list. Use this tool when you need to: - Remove outdated or inactive documents from view - Clean up collections while preserving document history - Preserve documents that are no longer relevant - Temporarily hide documents without deleting them Args: document_id: The document ID to archive Returns: Result message confirming archival

unarchive_document

Restores a previously archived document to active status. Use this tool when you need to: - Restore archived documents to active use - Access or reference previously archived content - Make archived content visible in collections again - Update and reuse archived documents Args: document_id: The document ID to unarchive Returns: Result message confirming restoration

delete_document

Moves a document to trash or permanently deletes it. IMPORTANT: When permanent=False (the default), documents are moved to trash and retained for 30 days before being permanently deleted. During this period, they can be restored using the restore_document tool. Setting permanent=True bypasses the trash and immediately deletes the document without any recovery option. Use this tool when you need to: - Remove unwanted or unnecessary documents - Delete obsolete content - Clean up workspace by removing documents - Permanently remove sensitive information (with permanent=True) Args: document_id: The document ID to delete permanent: If True, permanently deletes the document without recovery option Returns: Result message confirming deletion

restore_document

Recovers a document from the trash back to active status. Use this tool when you need to: - Retrieve accidentally deleted documents - Restore documents from trash to active use - Recover documents deleted within the last 30 days - Access content that was previously trashed Args: document_id: The document ID to restore Returns: Result message confirming restoration

list_archived_documents

Displays all documents that have been archived. Use this tool when you need to: - Find specific archived documents - Review what documents have been archived - Identify documents for possible unarchiving - Check archive status of workspace content Returns: Formatted string containing list of archived documents

list_document_comments

Retrieves comments on a specific document with pagination support. IMPORTANT: By default, this returns up to 25 comments at a time. If there are more than 25 comments on the document, you'll need to make multiple calls with different offset values to get all comments. The response will indicate if there are more comments available. Use this tool when you need to: - Review feedback and discussions on a document - See all comments from different users - Find specific comments or questions - Track collaboration and input on documents Args: document_id: The document ID to get comments from include_anchor_text: Whether to include the document text that comments refer to limit: Maximum number of comments to return (default: 25) offset: Number of comments to skip for pagination (default: 0) Returns: Formatted string containing comments with author, date, and optional anchor text

get_comment

Retrieves a specific comment by its ID. Use this tool when you need to: - View details of a specific comment - Reference or quote a particular comment - Check comment content and metadata - Find a comment mentioned elsewhere Args: comment_id: The comment ID to retrieve include_anchor_text: Whether to include the document text that the comment refers to Returns: Formatted string with the comment content and metadata

get_document_backlinks

Finds all documents that link to a specific document. Use this tool when you need to: - Discover references to a document across the workspace - Identify dependencies between documents - Find documents related to a specific document - Understand document relationships and connections Args: document_id: The document ID to find backlinks for Returns: Formatted string listing all documents that link to the specified document

create_collection

Creates a new collection for organizing documents. Use this tool when you need to: - Create a new section or category for documents - Set up a workspace for a new project or team - Organize content by department or topic - Establish a separate space for related documents Args: name: Name for the collection description: Optional description of the collection's purpose color: Optional hex color code for visual identification (e.g. #FF0000) Returns: Result message with the new collection ID

update_collection

Modifies an existing collection's properties. Use this tool when you need to: - Rename a collection - Update a collection's description - Change a collection's color coding - Refresh collection metadata Args: collection_id: The collection ID to update name: Optional new name for the collection description: Optional new description color: Optional new hex color code (e.g. #FF0000) Returns: Result message confirming update

delete_collection

Permanently removes a collection and all its documents. Use this tool when you need to: - Remove an entire section of content - Delete obsolete project collections - Remove collections that are no longer needed - Clean up workspace organization WARNING: This action cannot be undone and will delete all documents within the collection. Args: collection_id: The collection ID to delete Returns: Result message confirming deletion

export_collection

Exports all documents in a collection to a downloadable file. IMPORTANT: This tool starts an asynchronous export operation which may take time to complete. The function returns information about the operation, including its status. When the operation is complete, the file can be downloaded or accessed via Outline's UI. The export preserves the document hierarchy and includes all document content and structure in the specified format. Use this tool when you need to: - Create a backup of collection content - Share collection content outside of Outline - Convert collection content to other formats - Archive collection content for offline use Args: collection_id: The collection ID to export format: Export format ("outline-markdown", "json", or "html") Returns: Information about the export operation and how to access the file

export_all_collections

Exports the entire workspace content to a downloadable file. IMPORTANT: This tool starts an asynchronous export operation which may take time to complete, especially for large workspaces. The function returns information about the operation, including its status. When the operation is complete, the file can be downloaded or accessed via Outline's UI. The export includes all collections, documents, and their hierarchies in the specified format. Use this tool when you need to: - Create a complete backup of all workspace content - Migrate content to another system - Archive all workspace documents - Get a comprehensive export of knowledge base Args: format: Export format ("outline-markdown", "json", or "html") Returns: Information about the export operation and how to access the file

ask_ai_about_documents

Queries document content using natural language questions. Use this tool when you need to: - Find specific information across multiple documents - Get direct answers to questions about document content - Extract insights from your knowledge base - Answer questions like "What is our vacation policy?" or "How do we onboard new clients?" Args: question: The natural language question to ask collection_id: Optional collection to limit the search to document_id: Optional document to limit the search to Returns: AI-generated answer based on document content with sources

README

MCP Outline Server

A Model Context Protocol (MCP) server enabling AI assistants to interact with Outline (https://www.getoutline.com)

Overview

This project implements a Model Context Protocol (MCP) server that allows AI assistants (like Claude) to interact with Outline document services, providing a bridge between natural language interactions and Outline's document management capabilities.

Features

Currently implemented:

  • Document Search: Search for documents by keywords
  • Collection Management: List collections and view document structure
  • Document Reading: Read document content, export as markdown
  • Comment Management: View and add comments on documents
  • Document Creation: Create new documents in collections
  • Document Editing: Update document content and move documents
  • Backlink Management: View documents that link to a specific document

Getting Started

Prerequisites

  • Python 3.10+
  • Outline account with API access
  • Outline API key (get this from your Outline account settings)

Installation

# Clone the repository
git clone https://github.com/Vortiago/mcp-outline.git
cd mcp-outline

# Install in development mode
uv pip install -e ".[dev]"

Configuration

Create a .env file in the project root with the following variables:

# Outline API Configuration
OUTLINE_API_KEY=your_outline_api_key_here

# For cloud-hosted Outline (default)
# OUTLINE_API_URL=https://app.getoutline.com/api

# For self-hosted Outline
# OUTLINE_API_URL=https://your-outline-instance.example.com/api

Running the Server

# Development mode with the MCP Inspector
mcp dev src/mcp_outline/server.py

# Or use the provided script
./start_server.sh

# Install in Claude Desktop (if available)
mcp install src/mcp_outline/server.py --name "Document Outline Assistant"

Usage Examples

Search for Documents

Search for documents containing "project planning"

List Collections

Show me all available collections

Read a Document

Get the content of document with ID "docId123"

Create a New Document

Create a new document titled "Research Report" in collection "colId456" with content "# Introduction\n\nThis is a research report..."

Add a Comment

Add a comment to document "docId123" saying "This looks great, but we should add more details to the methodology section."

Move a Document

Move document "docId123" to collection "colId789"

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Development

# Run tests
uv run pytest tests/

# Format code
uv run ruff format .

License

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

Acknowledgments

Recommended Servers

Crypto Price & Market Analysis MCP Server

Crypto Price & Market Analysis MCP Server

A Model Context Protocol (MCP) server that provides comprehensive cryptocurrency analysis using the CoinCap API. This server offers real-time price data, market analysis, and historical trends through an easy-to-use interface.

Featured
TypeScript
MCP PubMed Search

MCP PubMed Search

Server to search PubMed (PubMed is a free, online database that allows users to search for biomedical and life sciences literature). I have created on a day MCP came out but was on vacation, I saw someone post similar server in your DB, but figured to post mine.

Featured
Python
dbt Semantic Layer MCP Server

dbt Semantic Layer MCP Server

A server that enables querying the dbt Semantic Layer through natural language conversations with Claude Desktop and other AI assistants, allowing users to discover metrics, create queries, analyze data, and visualize results.

Featured
TypeScript
mixpanel

mixpanel

Connect to your Mixpanel data. Query events, retention, and funnel data from Mixpanel analytics.

Featured
TypeScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

This server facilitates structured problem-solving by breaking down complex issues into sequential steps, supporting revisions, and enabling multiple solution paths through full MCP integration.

Featured
Python
Nefino MCP Server

Nefino MCP Server

Provides large language models with access to news and information about renewable energy projects in Germany, allowing filtering by location, topic (solar, wind, hydrogen), and date range.

Official
Python
Vectorize

Vectorize

Vectorize MCP server for advanced retrieval, Private Deep Research, Anything-to-Markdown file extraction and text chunking.

Official
JavaScript
Mathematica Documentation MCP server

Mathematica Documentation MCP server

A server that provides access to Mathematica documentation through FastMCP, enabling users to retrieve function documentation and list package symbols from Wolfram Mathematica.

Local
Python
kb-mcp-server

kb-mcp-server

An MCP server aimed to be portable, local, easy and convenient to support semantic/graph based retrieval of txtai "all in one" embeddings database. Any txtai embeddings db in tar.gz form can be loaded

Local
Python
Research MCP Server

Research MCP Server

The server functions as an MCP server to interact with Notion for retrieving and creating survey data, integrating with the Claude Desktop Client for conducting and reviewing surveys.

Local
Python