by Vortiago
A Model Context Protocol (MCP) server enabling AI assistants to interact with Outline documentation services.
# Add to your Claude Code skills
git clone https://github.com/Vortiago/mcp-outlineLast scanned: 5/30/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-05-30T16:06:17.829Z",
"npmAuditRan": true,
"pipAuditRan": true
}mcp-outline is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by Vortiago. A Model Context Protocol (MCP) server enabling AI assistants to interact with Outline documentation services. It has 154 GitHub stars.
Yes. mcp-outline passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/Vortiago/mcp-outline" and add it to your Claude Code skills directory (see the Installation section above).
mcp-outline is primarily written in Python. It is open-source under Vortiago on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh mcp-outline against similar tools.
No comments yet. Be the first to share your thoughts!
📢 Official Outline MCP Server Available
Outline now ships an official MCP server — we recommend using it. Read the docs.
A Model Context Protocol server for interacting with Outline document management.
Before using this MCP server, you need:
Getting your API key: Log into Outline → Click your profile → Settings → API Keys → "New API Key". Copy the generated token.
Click a button to install with interactive API key prompt:
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}"
}
}
}
}
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).
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>"
}
}
}
}
Setup guides for more clients: Docker (HTTP), Cline, Codex, Windsurf, and others
| Variable | Required | Default | Notes |
|---|---|---|---|
OUTLINE_API_KEY |
Yes* | - | Required for tool calls to succeed. For SSE/HTTP, can alternatively be provided per-request via x-outline-api-key header (details) |
OUTLINE_API_URL |
No | https://app.getoutline.com/api |
For self-hosted: https://your-domain/api |
OUTLINE_VERIFY_SSL |
No | true |
Set false for self-signed certificates |
OUTLINE_READ_ONLY |
No | false |
true = disable ALL write operations (details) |
OUTLINE_DISABLE_DELETE |
No | false |
true = disable only delete operations (details) |
OUTLINE_DISABLE_AI_TOOLS |
No | false |
true = disable AI tools (for Outline instances without OpenAI) |
OUTLINE_DISABLE_RECENT_DOCUMENTS |
No | false |
true = disable the list_recently_updated_documents tool |
OUTLINE_DYNAMIC_TOOL_LIST |
No | false |
true = enable per-user tool filtering by role/key scopes (details) |
OUTLINE_MAX_CONNECTIONS |
No | 100 |
Max concurrent connections in pool |
OUTLINE_MAX_KEEPALIVE |
No | 20 |
Max idle connections in pool |
OUTLINE_TIMEOUT |
No | 30.0 |
Read timeout in seconds |
OUTLINE_CONNECT_TIMEOUT |
No | 5.0 |
Connection timeout in seconds |
OUTLINE_WRITE_TIMEOUT |
No | 30.0 |
Write timeout in seconds |
OUTLINE_CACHE_TTL |
No | 30 |
Document 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_SIZE |
No | 100 |
Max cached documents |
MCP_TRANSPORT |
No | stdio |
Transport mode: stdio (local), sse or streamable-http (remote) |
MCP_HOST |
No | 127.0.0.1 |
Server host. Use 0.0.0.0 in Docker for external connections |
MCP_PORT |
No | 3000 |
HTTP server port (only for sse and streamable-http modes) |
| Feature | Env Var | Effect |
|---|---|---|
| Read-only mode | OUTLINE_READ_ONLY=true |
Disables all write operations — only search, read, and export tools available |
| Disable deletes | OUTLINE_DISABLE_DELETE=true |
Disables only delete operations, all other writes allowed |
| Disable recent-changes tool | OUTLINE_DISABLE_RECENT_DOCUMENTS=true |
Disables only the list_recently_updated_documents tool |
| Dynamic tool list | OUTLINE_DYNAMIC_TOOL_LIST=true |
Filters tools per-user based on Outline role and API key scopes |
| Per-user Outline API keys | x-outline-api-key header |
Each 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.
Note: Tool availability depends on your access control settings.
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 stateslist_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 documentslist_collections() - List all collectionsget_collection_structure(collection_id) - Get document hierarchy within a collectionget_document_id_from_title(query, collection_id?) - Find document ID by title searchread_document(document_id, offset?, limit?) - Get document content with optional line-range paginationexport_document(document_id) - Export document as markdownget_document_toc(document_id) - Get table of