Back to all posts

Outline MCP Server: Complete Setup Guide (2026)

There are now two ways to connect an AI agent to your Outline knowledge base: the official MCP server that Outline shipped into every workspace in early 2026, and the community vortiago/mcp-outline server that predates it and still has reasons to exist. This guide covers what the Outline MCP server does, which of the two to pick, how to install both (cloud and self-hosted), the tools they expose, and the gotchas — starting with the OAuth token that expires every hour.

Updated June 2026 ~13 min read3,000 words
Editorial illustration: a central luminous teal document-stack glyph representing an Outline knowledge base at the geometric center, split by a soft vertical seam into two halves — one half wrapped in an orbital OAuth-lock ring, the other linked by a glowing API-key thread — surrounded by smaller orbiting MCP-client glyphs connected by softly glowing query arcs on a deep midnight navy backdrop.

TL;DR + what you actually need

Outline is an open-source team wiki and knowledge base. An Outline MCP server lets an AI agent search, read, write, and organize the documents in your workspace without you copy-pasting context. The headline news for 2026: you almost certainly do not need to install anything.

  • Official server (recommended default): built into every Outline workspace. Endpoint: https://<your-subdomain>.getoutline.com/mcp. Enable under Settings → AI. OAuth by default; API-key auth optional.
  • Community server: vortiago/mcp-outline — a Python package you run with uvx mcp-outline. Uses an OUTLINE_API_KEY. Worth it for headless automation, granular access control, and self-hosted edge cases.
  • Self-hosted Outline: both work. Swap the cloud subdomain for your own domain (/mcp for the official server, OUTLINE_API_URL for the community one).

The fastest official install, if you came here for the one-liner:

claude mcp add --transport http outline https://<yoursubdomain>.getoutline.com/mcp

Then type /mcp in Claude Code and finish the OAuth login in your browser. The rest of this guide explains the official-versus-community decision (the part most setup guides skip), walks the tools, and ends with the troubleshooting that bites people most often.

What the Outline MCP server actually does

The problem it solves is context switching. Your team’s runbooks, specs, onboarding docs, and meeting notes live in Outline. Your AI agent lives in Claude, Cursor, or a terminal. Without MCP, you paste doc text into a chat window by hand, the agent answers, and nothing it writes makes it back into the wiki. The Outline MCP server closes that loop: the agent queries Outline directly, grounds its answer in your real docs, and can write the result straight back as a new or edited document.

Outline describes it plainly in its own changelog: MCP lets AI assistants “directly search, read, create, and edit documents in your Outline workspace” so they become “an extension of your knowledge-base.” That framing matters because it’s a two-way integration — read and write — not a read-only search box. An agent can find the stale deployment doc, update it with the new steps, and leave a comment explaining why.

Both the official and community servers talk to the same Outline API. The difference is in how they authenticate, where they run, and how much control they hand you. That’s the next section, and it’s the decision that actually matters.

You can browse the community server’s catalog entry, badges, and live config on its Outline server page — that’s the canonical reference for its install snippets, which stay in sync with this post.

Official vs community: the honest comparison

Outline shipped its official MCP server on February 18, 2026. The announcement is blunt about the goal:

Each Outline workspace now comes with an MCP server built-in, so you can connect your AI assistants in just a minute of setup.

Outline changelog · Blog

Outline product changelog — MCP launch, Feb 18, 2026

Source

For most people that ends the conversation. The official server is hosted by Outline, needs no local install, and authenticates with OAuth — you paste the URL into your client and a login window appears. Two community servers predate it: mmmeff/outline-mcp-server (now explicitly deprecated, its README points everyone at the official server) and Vortiago/mcp-outline, which is still maintained and still recommends the official server in its own README.

So why would you reach for the community server? One word that the OAuth-by-default design surfaces: expiry. OAuth access tokens issued by the official server are short-lived, and that became a real friction point. A user raised it directly with the maintainers:

OAuth tokens expire every 60 minutes and require a browser to authenticate. For headless servers, automations, and stability over long term, only allowing OAuth doesn't make sense.

bottledpills (GitHub Discussion #11797) · Hacker News

Outline GitHub Discussion #11797 — request for API-key auth

Source

Outline’s founder agreed and shipped API-key auth shortly after — so the official server now accepts an Authorization: Bearer <key> header too. That closes most of the gap. What remains is control: the community server exposes knobs the hosted one doesn’t — read-only mode, disable-delete, per-user API keys in HTTP mode, dynamic per-role tool filtering, batch operations, and tunable connection pools and cache TTLs. If you’re wiring Outline into an unattended pipeline or want to hand an agent a deliberately narrow set of permissions, those knobs are the reason to run it yourself.

Our take, before the details: start with the official server; reach for vortiago/mcp-outline when OAuth’s hourly login or its all-or-nothing permissions get in your way.

Install (official + community)

Official server (cloud)

First, enable MCP for the workspace: an admin opens Settings → AI and toggles MCP on. (If connections fail with no error, this toggle being off is the usual reason.) Then connect your client to https://<yoursubdomain>.getoutline.com/mcp. Outline only supports the Streamable HTTP transport, so older stdio-only clients need a proxy (covered below).

Claude Code:

claude mcp add --transport http outline https://<yoursubdomain>.getoutline.com/mcp

Then run /mcp inside Claude Code to trigger the OAuth flow. For Claude Code and other clients, the install paths are catalogued at mcp.directory/clients.

Cursor: open Cursor Settings → MCP → Add new global MCP server and paste:

{
  "mcpServers": {
    "outline": {
      "url": "https://<yoursubdomain>.getoutline.com/mcp"
    }
  }
}

Claude Desktop: open Settings → Connectors → Add Connector and enter the same /mcp URL.

stdio-only clients: if your app only speaks local stdio, bridge to the remote endpoint with the mcp-remote proxy:

{
  "mcpServers": {
    "outline": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://<yoursubdomain>.getoutline.com/mcp"]
    }
  }
}

For API-key auth instead of OAuth, generate a key in Outline (Settings → API Keys) and add it to your client’s MCP header config as Authorization: Bearer <your-api-key>. Prefer this for anything headless.

Community server (vortiago/mcp-outline)

The community server runs locally as a Python process. Get an API key first (Settings → API Keys → New API Key), then the one-line Claude Code install:

claude mcp add mcp-outline uvx mcp-outline

Set OUTLINE_API_KEY in your shell profile (~/.zshrc or ~/.bashrc) before you start the client; if it’s missing, every tool call returns an error with setup instructions. The manual JSON form, which works in Claude Desktop, Cursor, VS Code, Cline, and most other clients:

{
  "mcpServers": {
    "mcp-outline": {
      "command": "uvx",
      "args": ["mcp-outline"],
      "env": {
        "OUTLINE_API_KEY": "<YOUR_API_KEY>",
        "OUTLINE_API_URL": "<optional, for self-hosted>"
      }
    }
  }
}

Prefer not to use uvx? The package also installs via pip install mcp-outline, and a Docker image at ghcr.io/vortiago/mcp-outline runs it in HTTP mode for remote access. The install panel below pulls the community server’s configs straight from our catalog, so it stays current as the package ships new client integrations.

One-line install · Outline

Open server page

Install

Self-hosted Outline

Running your own Outline instance changes one thing: the URL. For the official server, replace the cloud subdomain with your installation domain and append /mcp — for example https://wiki.yourcompany.com/mcp. For the community server, set the API base explicitly:

{
  "mcpServers": {
    "mcp-outline": {
      "command": "uvx",
      "args": ["mcp-outline"],
      "env": {
        "OUTLINE_API_KEY": "<YOUR_API_KEY>",
        "OUTLINE_API_URL": "https://your-domain/api"
      }
    }
  }
}

Two self-hosted footguns worth flagging now. If your instance uses a self-signed TLS certificate, set OUTLINE_VERIFY_SSL=false on the community server (and only then). And if your self-hosted Outline has no OpenAI integration configured, the AI tools will fail — set OUTLINE_DISABLE_AI_TOOLS=true so the agent doesn’t try to call them.

The tools, walked through

The community vortiago/mcp-outline server exposes the larger, more granular tool set, so it’s the clearest one to walk. The official server covers the same core operations through the same API; tool naming differs but the capabilities overlap.

Find & read

Search and navigation

search_documents, list_collections, get_collection_structure, read_document, get_document_toc, and read_document_section — the last reads a single heading’s section instead of pulling a whole long doc into context.

Write & edit

Create, edit, manage

create_document, update_document, edit_document (string-match edits, with a stage-then-save flag), move_document, plus archive, delete, and restore. Collection CRUD and exports round it out.

Two tools are worth calling out because they change how the agent behaves. edit_document takes batched string-match replacements and a save flag: with save=False it stages edits locally, and only the final call with save=True pushes everything to Outline. That lets an agent assemble a multi-part edit and commit it once, instead of hammering the API per change. And read_document_section means the agent can pull just the “Rollback” heading out of a 2,000-line runbook rather than the entire document — a real token saver on big wikis.

There’s also ask_ai_about_documents, which routes a natural-language question through Outline’s own AI over your docs, and a full set of batch_* tools for creating, updating, moving, archiving, or deleting many documents in one call. The opinionated takeaway: the batch and staged-edit design is what makes this server usable for bulk wiki reorganization, not just one-doc Q&A.

MCP Resources via outline:// URIs

Beyond tools, the community server exposes MCP Resources — addressable content the client can read directly by URI, without a tool call. The scheme is outline://:

outline://document/{id}             # full document markdown
outline://document/{id}/backlinks   # docs that link to this one
outline://collection/{id}           # collection metadata
outline://collection/{id}/tree      # hierarchical document tree
outline://collection/{id}/documents # flat list of documents

Resources matter when a client supports attaching them as context. Instead of asking the agent to “search for the onboarding doc and read it,” you hand it outline://document/abc123 and the content is already in scope. The backlinks resource is the quiet standout: it surfaces every document that references the one you’re looking at, which is how you trace the blast radius before editing a widely-linked page.

Recipes

Five workflows where an Outline MCP server earns its keep. These assume the server is installed and connected in your client of choice.

Recipe 1 — Answer from the wiki, not from training data

Ask: “What’s our incident escalation process? Check Outline.” The agent runs search_documents, reads the matching runbook, and answers grounded in your actual process — not a plausible-sounding guess. The whole point of a knowledge-base MCP is replacing the model’s imagination with your documents.

Recipe 2 — Draft a doc and file it correctly

After a design review: “Write up these decisions as a doc in the Architecture collection.” The agent calls list_collections to find the right collection ID, then create_document with the content. The doc lands where your team expects it, not in a random location.

Recipe 3 — Keep a runbook current

You changed the deploy steps: “Update the deployment runbook — the migration step now runs before the build.” The agent finds the doc, uses read_document_section to pull just the deploy steps, and edit_document to splice in the change. Stale runbooks are how outages happen; this shortens the gap between “process changed” and “doc reflects it.”

Recipe 4 — Reorganize a messy collection

A collection has grown into a swamp. “Archive every doc in Scratch that hasn’t been touched this year.” The agent lists the collection, identifies stale docs, and uses batch_archive_documents to clear them in one call instead of dozens. Read-only or disable-delete mode is your seatbelt here — see the access-control section.

Recipe 5 — Trace before you edit

Before changing a foundational doc: “What links to our API authentication doc?” The agent reads outline://document/{id}/backlinks (or calls get_document_backlinks) and lists every dependent page, so you know what you’ll break before you touch it.

What we got wrong setting this up

Two things bit us, both avoidable in hindsight.

We pointed an automation at the OAuth endpoint. The official server’s OAuth flow is great for interactive use in Claude or Cursor. We wired it into a scheduled job and the job died roughly every hour when the access token expired and there was no browser to refresh it. The fix was the API-key path — Authorization: Bearer <key> — or switching that particular workload to the community server, which is built around a static key. The 60-minute expiry is not a bug; it’s just the wrong auth mode for headless work.

We left the AI tools enabled on a self-hosted instance with no OpenAI key. The community server’s ask_ai_about_documents needs Outline to have an AI provider configured. On our self-hosted box that wasn’t set up, so those calls failed confusingly until we set OUTLINE_DISABLE_AI_TOOLS=true. If you’re self-hosting without Outline’s AI features, disable the AI tools up front.

Access control & safety

An MCP server that can delete documents is an MCP server that can delete the wrong documents. The community server takes this seriously and gives you env-var guardrails — this is one of its clearest advantages over the hosted default.

SettingEnv varEffect
Read-onlyOUTLINE_READ_ONLY=trueDisables all writes — only search, read, export
Disable deletesOUTLINE_DISABLE_DELETE=trueBlocks deletes; other writes still allowed
Per-role toolsOUTLINE_DYNAMIC_TOOL_LIST=trueFilters tools by Outline role and key scopes
Per-user keyx-outline-api-key headerEach user passes their own key in HTTP mode

Read-only mode takes precedence over disable-delete. The safe default for any agent that only needs to answer from the wiki is OUTLINE_READ_ONLY=true — turn writes on deliberately, per workflow, rather than leaving a fully-armed editor connected by default. For multi-user HTTP deployments, the x-outline-api-key header means each person’s agent acts with their own Outline permissions, instead of one shared service key that sees everything.

Troubleshooting

Connection keeps dropping / re-asking for login

OAuth access tokens from the official server expire around every 60 minutes and need a browser to refresh. Fine interactively; painful for automation. Switch to API-key auth (Authorization: Bearer <key>) or use the community server with a static OUTLINE_API_KEY.

Client can’t connect at all

Two common causes. (1) An admin hasn’t enabled MCP under Settings → AI for the workspace — that blocks every member. (2) Your client only speaks stdio; Outline’s official server is Streamable HTTP only, so bridge it with npx -y mcp-remote <url>.

No module named 'mcp_outline'

A community-server install issue seen in the repo’s GitHub issues — usually a stale or mismatched Python environment. Run it through uvx mcp-outline (which manages an isolated environment) rather than a hand-rolled global pip install.

AI tools error on self-hosted Outline

ask_ai_about_documents needs an OpenAI integration configured in Outline. If your self-hosted instance has none, set OUTLINE_DISABLE_AI_TOOLS=true so the agent stops trying to call tools that can’t succeed.

Self-signed certificate errors (self-hosted)

If the community server can’t verify your instance’s TLS certificate, set OUTLINE_VERIFY_SSL=false — but only for genuinely self-signed setups, and never against a public cloud endpoint.

The Verdict

Our Take

Use the official Outline MCP server. It’s built into your workspace, needs no install, and the one-minute OAuth setup is genuinely that fast. Switch to API-key auth the moment you point anything headless at it. Reach for the community vortiago/mcp-outline server when you need what the hosted one doesn’t give you: read-only or disable-delete guardrails, per-user keys, batch operations, or a tightly-controlled self-hosted deployment. Skip an Outline MCP server entirely if your team doesn’t actually keep its knowledge in Outline — the integration is only as good as the wiki behind it.

If you’re still deciding which knowledge base to wire your agent into, our roundup of the best knowledge base MCP servers compares Outline against Notion and Confluence. And if your notes live in a single-user vault rather than a team wiki, the Obsidian MCP guide covers that path.

Frequently Asked Questions

Is there an official Outline MCP server?

Yes. As of February 2026, every Outline workspace ships with an MCP server built in. You enable it under Settings → AI and point your client at `https://<your-subdomain>.getoutline.com/mcp`. It uses OAuth by default (a browser login window appears) and also supports API-key auth via an `Authorization: Bearer` header. Self-hosted instances use your own domain with `/mcp` appended.

Official Outline MCP server vs the vortiago/mcp-outline community server — which should I use?

Use the official server for the simplest path: OAuth, no install, hosted by Outline. Use the community `vortiago/mcp-outline` (Python, `uvx mcp-outline`) when you need an API-key-only flow for headless automation, finer access control (read-only mode, disable-delete, per-user keys), batch operations, or a self-hosted setup behind a strict proxy. The deprecated `mmmeff/outline-mcp-server` now points everyone at the official server.

How do I set up the Outline MCP server for self-hosted Outline?

For the official server, replace the cloud subdomain with your own installation domain and append `/mcp` (e.g. `https://wiki.yourcompany.com/mcp`). For the community server, set `OUTLINE_API_URL` to `https://your-domain/api` and pass `OUTLINE_API_KEY`. Use `OUTLINE_VERIFY_SSL=false` only if your instance uses a self-signed certificate.

What's the Outline MCP server setup command for Claude Code?

Official server: `claude mcp add --transport http outline https://<yoursubdomain>.getoutline.com/mcp`, then type `/mcp` in Claude Code to complete the OAuth flow. Community server: `claude mcp add mcp-outline uvx mcp-outline`, with your `OUTLINE_API_KEY` set as an environment variable in your shell profile first.

Does the Outline MCP server need an API key?

Not for the official server's default path — OAuth handles auth in the browser. You only need an Outline API key if you want header-based auth (better for headless servers, since OAuth tokens expire every 60 minutes) or if you use the community server, which authenticates with `OUTLINE_API_KEY`. Generate a key under Settings → API Keys in Outline.

What tools does the Outline MCP server expose?

The community `vortiago/mcp-outline` server exposes search, read, create, edit, archive, and delete for documents; collection management; threaded comments; backlinks; batch operations; an `ask_ai_about_documents` tool; and MCP Resources via `outline://` URIs. The official server covers the core search, read, write, and comment operations through the same Outline API.

Why does my Outline MCP connection keep needing to re-authenticate?

OAuth access tokens issued by the official server expire about every 60 minutes and need a browser to refresh. That's fine for interactive use in Claude or Cursor, but painful for headless automation. For long-running or server-side jobs, switch to API-key auth (`Authorization: Bearer <key>`) or use the community server, which is built around a static API key.

Glossary

  • Outline — open-source team wiki and knowledge base; available cloud-hosted at getoutline.com or self-hosted.
  • MCP (Model Context Protocol) — open standard that lets AI clients call external tools and read external resources over a defined wire format.
  • Official Outline MCP server — the MCP endpoint built into every Outline workspace; Streamable HTTP, OAuth or API-key auth.
  • vortiago/mcp-outline — the community Python MCP server for Outline; API-key auth, run via uvx mcp-outline.
  • OAuth — browser-based auth flow; convenient interactively, but its access tokens expire (~60 min here).
  • Streamable HTTP — the HTTP-based MCP transport the official Outline server requires; stdio clients need a proxy.
  • MCP Resource — addressable content a client reads by URI (here, outline://) without a tool call.
  • stage-then-save — the community server’s edit pattern: queue edits with save=False, commit once with save=True.
  • Read-only mode OUTLINE_READ_ONLY=true; disables every write so the agent can only search, read, and export.

Sources

Found an issue?

If something in this guide is out of date — a new auth option, a renamed tool, an official-server feature we missed — email [email protected] or read more on our about page. We keep these guides current.