Provides comprehensive integration with Outline knowledge base API, enabling document operations (create, read, update, delete, search, archive, move), collection management, commenting and collaboration features, AI-powered document queries, and template creation from existing documents.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Outline knowledge base MCP Serversearch for documents about API integration"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Outline MCP Server
MCP (Model Context Protocol) server for Outline API interaction with focus on simplicity, performance, and reliability.
Supports two transport modes:
STDIO — single-user, for direct integration with MCP clients (Cursor IDE, Claude Desktop, etc.)
HTTP — multi-user Streamable HTTP transport (MCP 2025-03-26 spec) with authentication, rate limiting, sessions, SSE, and CORS
Quick Start
1. Get Your Outline API Key
Outline.com: https://app.outline.com/settings/api-and-apps
Self-hosted: https://your-instance.com/settings/api-and-apps
2. Download & Install
Choose one of the installation methods:
Option 1: Download pre-built binary (Recommended)
Download from GitHub Releases
After extracting:
Linux/macOS: If needed, make executable:
chmod +x outline-mcpWindows: Since the release is not code-signed, Windows Defender may block execution. You'll need to:
Allow the executable through Windows Defender/antivirus
Add the folder to Windows Defender exclusions, or
Right-click the file > Properties > "Unblock" if downloaded from internet
Option 2: Install from crates.io
cargo install outline-mcp-rsRequires Rust toolchain. The binary will be installed to
Option 3: Build from source
git clone https://github.com/nizovtsevnv/outline-mcp-rs.git
cd outline-mcp-rs
cargo build --release
# Binary will be in target/release/outline-mcpOption 4: Nix (with reproducible environment)
nix run github:nizovtsevnv/outline-mcp-rs3. Configure your AI agent (STDIO mode)
JSON configuration for Cursor IDE, Gemini CLI:
{
"mcpServers": {
"Outline knowledge base": {
"command": "outline-mcp",
"env": {
"OUTLINE_API_KEY": "your-api-key-here",
"OUTLINE_API_URL": "https://app.getoutline.com/api"
}
}
}
}Path Notes:
cargo install: Use
"outline-mcp"(added to PATH automatically)Downloaded binary: Use full path like
"/path/to/outline-mcp"Built from source: Use
"/path/to/outline-mcp-rs/target/release/outline-mcp"
Path Requirements:
Use absolute paths - relative paths may not work correctly
No spaces in the executable file path (use underscores or hyphens instead)
ASCII characters only - avoid non-Latin characters in paths
Windows users: Use double backslashes
\\in paths (e.g.,"C:\\tools\\outline-mcp.exe")
Related MCP server: MCP-Guide
HTTP Mode (Multi-User)
HTTP mode enables a Streamable HTTP transport server where multiple users can connect, each with their own Outline API key. The server itself is protected by MCP access tokens.
Architecture
+--------------------------+
Client A ------->| |-------> Outline API
[X-MCP-Token] | MCP HTTP Server | (user A's key)
[Authorization] | |
| - Auth (X-MCP-Token) |
Client B ------->| - Rate limiting per IP |-------> Outline API
[X-MCP-Token] | - Sessions (UUID v4) | (user B's key)
[Authorization] | - SSE streaming |
| - CORS |
Client C ------->| |-------> Outline API
+--------------------------+ (user C's key)Setup
# Required: set allowed MCP access tokens (comma-separated)
export MCP_AUTH_TOKENS="token-for-alice,token-for-bob"
# Optional: configure Outline API URL (default: https://app.getoutline.com/api)
export OUTLINE_API_URL="https://your-outline.example.com/api"
# Start the server
./outline-mcp --httpClient Requests
Each request must include two credentials:
X-MCP-Tokenheader — server access token (one of the values fromMCP_AUTH_TOKENS)Authorization: Bearer <key>header — the user's own Outline API key
# Health check (no auth required)
curl http://127.0.0.1:3000/health
# Initialize session
curl -X POST http://127.0.0.1:3000/mcp \
-H "Content-Type: application/json" \
-H "X-MCP-Token: token-for-alice" \
-H "Authorization: Bearer ol_api_xxxxx" \
-d '{"jsonrpc":"2.0","method":"initialize","params":{},"id":1}'
# Response includes Mcp-Session-Id header
# List tools (with session)
curl -X POST http://127.0.0.1:3000/mcp \
-H "Content-Type: application/json" \
-H "X-MCP-Token: token-for-alice" \
-H "Authorization: Bearer ol_api_xxxxx" \
-H "Mcp-Session-Id: <id-from-init>" \
-d '{"jsonrpc":"2.0","method":"tools/list","params":{},"id":2}'
# Delete session
curl -X DELETE http://127.0.0.1:3000/mcp \
-H "X-MCP-Token: token-for-alice" \
-H "Mcp-Session-Id: <id-from-init>"HTTP Endpoints
Method | Path | Auth | Description |
GET | /health | No | Health check ( |
POST | /mcp | Yes | Process MCP JSON-RPC request |
GET | /mcp | Yes | Open SSE stream (requires |
DELETE | /mcp | Yes | Terminate session (requires |
OPTIONS | * | No | CORS preflight |
HTTP Error Responses
Status | Meaning |
401 | Missing or invalid |
413 | Request body exceeds |
415 |
|
429 | Rate limit exceeded for this IP |
Configuration
Environment Variables
Variable | Mode | Required | Default | Description |
| STDIO | Yes | — | Outline API key |
| Both | No |
| Outline instance URL |
| HTTP | Yes | — | Comma-separated MCP access tokens |
| HTTP | No |
| Bind address |
| HTTP | No |
| Port number (>= 1024) |
| HTTP | No |
| Max requests/min per IP |
| HTTP | No |
| Session TTL in seconds (30 min) |
| HTTP | No |
| Max request body in bytes (1 MB) |
| Both | No |
| Log level |
STDIO Mode (Default)
export OUTLINE_API_KEY="your-key-here"
./outline-mcpHTTP Mode
export MCP_AUTH_TOKENS="my-secret-token"
./outline-mcp --httpSupported Tools (25)
Complete coverage of Outline API functionality:
Document Operations (12)
create_document- Create new documentget_document- Retrieve document by IDupdate_document- Update existing documentdelete_document- Delete documentlist_documents- List documents with filteringsearch_documents- Search documents by queryarchive_document- Archive documentrestore_document- Restore document from trashunarchive_document- Unarchive documentmove_document- Move document between collectionslist_drafts- List draft documentscreate_template_from_document- Create reusable templates
Collection Management (6)
create_collection- Create new collectionget_collection- Retrieve collection detailsupdate_collection- Update collection metadatadelete_collection- Delete collectionlist_collections- List all collectionsget_collection_documents- Get document structure of a collection
Comments & Collaboration (5)
create_comment- Add comment to documentget_comment- Get comment by IDupdate_comment- Modify existing commentdelete_comment- Remove commentlist_document_comments- List comments for a document
User Management (2)
list_users- List team membersget_user- Get user by ID
Architecture
┌─────────────────┐ ┌──────────────────────────────┐ ┌─────────────────┐
│ MCP Client │────│ Transport Layer │────│ Outline API │
│ (Claude/Cursor) │ │ STDIO | Streamable HTTP │ │ (REST/JSON) │
└─────────────────┘ └──────────────────────────────┘ └─────────────────┘Source Layout
src/
├── main.rs # Entry point, logging init
├── lib.rs # run_stdio(), run_http()
├── cli.rs # CLI argument parsing
├── config.rs # Environment variable configuration
├── error.rs # Centralized error types
├── mcp.rs # MCP JSON-RPC 2.0 protocol handler
├── outline.rs # Outline API HTTP client
├── tools/ # MCP tool implementations
│ ├── mod.rs # Tool registry & dispatcher
│ ├── common.rs # Shared tool utilities
│ ├── documents.rs # Document operations (12 tools)
│ ├── collections.rs # Collection operations (6 tools)
│ ├── comments.rs # Comment operations (5 tools)
│ └── users.rs # User operations (2 tools)
└── http/ # Streamable HTTP transport
├── mod.rs # HttpBody enum, module declarations
├── server.rs # HttpServer, AppState, graceful shutdown
├── router.rs # Request routing by method + path
├── handler.rs # MCP POST/GET/DELETE handlers
├── auth.rs # Token validation + rate limiting
├── session.rs # UUID v4 session management with TTL
├── sse.rs # SSE body + keepalive encoding
├── cors.rs # CORS header management
├── request.rs # Request validation (Content-Type, size)
├── response.rs # HTTP response builders (status codes)
└── health.rs # GET /health endpointProject Principles
Performance
Static builds with musl/glibc - single file without dependencies
< 5MB binary with full functionality
< 10ms startup time to ready state
< 10MB memory usage
Reliability
Zero dependencies at runtime (static linking)
Explicit error handling - no panics in production
Type safety - leveraging Rust's ownership system
Comprehensive testing - unit and integration tests
Simplicity
Minimal code - only essential functionality
Clear architecture - easy to understand and modify
Single binary - simple deployment
Environment configuration - no config files
Development
Requirements
Nix (recommended) - handles all dependencies automatically
OR manually: Rust 1.75+, OpenSSL development libraries
Build Commands
# Development environments
nix develop # Native development with tools
nix develop .#musl # musl static build environment
nix develop .#windows # Windows cross-compilation
nix develop .#macos # macOS development (Darwin only)
# Package building
nix build # Native build (Linux/macOS auto-detect)
nix build .#musl # Static musl build (portable Linux)
nix build .#glibc-optimized # Optimized glibc build
nix build .#windows # Windows cross-compilation
nix build .#macos-x86_64 # macOS Intel
nix build .#macos-arm64 # macOS Apple SiliconTesting
# Run all tests
nix develop -c cargo test
# Integration tests
nix develop -c cargo test --test http_transport_tests
nix develop -c cargo test --test mcp_testsDevelopment Workflow
nix develop
cargo fmt
cargo clippy -- -D warnings
cargo test
cargo build --releaseContributing
Fork the repository
Create feature branch (
git checkout -b feature/amazing-feature)Make changes with tests
Ensure all checks pass:
cargo fmt && cargo clippy -- -D warnings && cargo testSubmit pull request
License
MIT License - see LICENSE file for details.
Acknowledgments
Outline team for excellent API documentation
Anthropic for MCP protocol specification
Rust community for outstanding tooling and libraries
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.