An Model Context Protocol (MCP) server that connects AI assistants to your Outline knowledge base—search, create, and manage documents from MCP clients such as Cursor and Claude Desktop.
- Documents — Search, create, read, and update Outline documents
- Collections — List and browse collections
- Resources — Expose documents and collections as MCP resources (
outline://documents/{id},outline://collections/{id}) - Tools — MCP tools for AI assistants to operate Outline via a standard interface
- Go 1.21+ (for building)
- An Outline instance with API access
- API token from Outline → Settings → API Tokens
Log in to your Outline instance → Settings → API Tokens → Create a token and copy it.
git clone https://github.com/circleyu/outline-mcp.git
cd outline-mcp
go build -o outline-mcp-server ./cmd/server
# or
make buildAdd the executable path and environment variables to your MCP client config.
Cursor — Add to MCP settings (e.g. Cursor → Settings → MCP):
{
"mcpServers": {
"outline": {
"command": "/absolute/path/to/outline-mcp-server",
"env": {
"OUTLINE_BASE_URL": "https://app.getoutline.com",
"OUTLINE_API_KEY": "your-api-token-here",
"OUTLINE_MAX_RETRIES": "2",
"LOG_LEVEL": "info"
}
}
}
}- Set
commandto the absolute path of the executable (e.g./Users/you/outline-mcp/outline-mcp-server). - Set
OUTLINE_API_KEYto your Outline API token. - Restart Cursor after saving.
Claude Desktop — Use the same mcpServers structure in Claude Desktop’s config.
After restarting the client, ask the AI to use Outline (e.g. “Search in Outline for…” or “Create a new Outline document…”).
Graceful shutdown: The server listens for SIGINT/SIGTERM and exits cleanly at the next request boundary (between JSON-RPC messages).
outline-mcp/
├── cmd/server/ # Entry point
├── internal/
│ ├── mcp/ # MCP protocol, tools, resources
│ ├── outline/ # Outline API client
│ ├── config/ # Config loading
│ └── logger/ # Logging
├── test/ # Tests
├── docs/ # Cursor setup guide and examples
│ ├── CURSOR_SETUP.md
│ └── cursor-mcp-config.json.example
├── Makefile
├── Dockerfile
└── README.md # This file
| Need | Document |
|---|---|
| Set up Cursor (step-by-step, config reference, FAQ, advanced) | docs/CURSOR_SETUP.md |
| Copy Cursor MCP config example | docs/cursor-mcp-config.json.example |
| Build and deploy (systemd, Docker) | DEPLOYMENT.md |
| Cursor setup (繁體中文) | docs/CURSOR_SETUP.zh-TW.md |
Traditional Chinese: README.zh-TW.md
| Tool | Description |
|---|---|
outline_search_documents |
Full-text search |
outline_list_documents |
List documents (collection, sort, pagination) |
outline_create_document |
Create document |
outline_update_document |
Update document |
outline_get_document |
Get document by ID |
outline_delete_document |
Delete document (optional permanent) |
outline_archive_document |
Archive document |
outline_restore_document |
Restore archived/deleted document |
outline_move_document |
Move document to another collection or parent |
outline_unpublish_document |
Unpublish (revert to draft) |
outline_export_document |
Export document as Markdown |
outline_list_drafts |
List current user’s drafts |
outline_list_viewed |
List recently viewed documents |
outline_templatize_document |
Create template from document |
| Tool | Description |
|---|---|
outline_list_collections |
List collections |
outline_get_collection |
Get collection by ID |
outline_get_collection_documents |
Get collection document tree (NavigationNode) |
outline_create_collection |
Create collection |
outline_update_collection |
Update collection |
outline_delete_collection |
Delete collection |
outline_export_collection |
Trigger collection export (async) |
| Tool | Description |
|---|---|
outline_get_share |
Get share (by share ID or document ID) |
outline_list_shares |
List share links |
outline_create_share |
Create share link |
outline_update_share |
Update share (e.g. published) |
outline_revoke_share |
Revoke share |
| Tool | Description |
|---|---|
outline_auth_info |
Current auth info (user, team, groups) |
outline_get_user |
Get user by ID |
outline_list_users |
List team users |
outline_document_users |
List users with access to a document |
outline_document_memberships |
List document members |
outline_get_group |
Get group by ID |
outline_list_groups |
List team groups |
| Tool | Description |
|---|---|
outline_get_revision |
Get revision by ID |
outline_list_revisions |
List document revision history |
outline_create_comment |
Create comment |
outline_get_comment |
Get comment by ID |
outline_list_comments |
List comments (filter by document/collection) |
outline_get_file_operation |
Get import/export job status |
outline_list_file_operations |
List import/export jobs |
outline://documents/{id}— Document content (Markdown)outline://collections/{id}— Collection document tree (NavigationNode JSON)
| Variable | Required | Default | Description |
|---|---|---|---|
OUTLINE_BASE_URL |
No* | https://app.getoutline.com |
Outline instance URL |
OUTLINE_API_KEY |
Yes | — | Outline API token |
OUTLINE_MAX_RETRIES |
No | 0 |
Number of retries for 5xx errors (0 = no retry); capped at 5 |
LOG_LEVEL |
No | info |
debug, info, warn, error |
*Required when not using the default cloud URL.
# Run tests
go test ./...
# Build
make build
# Build for multiple platforms
make build-allMIT.