关于 MCP Outline Server
MCP Outline Server 将 Outline 文档管理功能提供给 AI 助手和 MCP 客户端,支持搜索、编辑、协作及资源读取。它涵盖文档与集合的批量管理,并可按配置限制写入操作。
主要功能
- 01搜索、读取和编辑文档
- 02管理集合与文档层级
- 03评论、回复及反向链接
- 04批量创建、更新和移动
- 05通过 URI 暴露资源
- 06速率限制与重试处理
适用场景
- 01查找并阅读 Outline 文档
- 02更新或整理文档集合
- 03在文档中添加评论并查看讨论
- 04批量归档或导出文档
MCP 相关
该 MCP 服务向 MCP 客户端提供 Outline 文档、集合、评论和批量操作工具,并通过 outline:// URI 提供资源。支持本地 stdio 以及 SSE 和 streamable HTTP 传输。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
38收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | integer | 否 | |
| query | string | 是 | |
| offset | integer | 否 | |
| collection_id | any | 否 | |
| status_filter | any | 否 |
详细介绍
MCP Outline 服务
📢 Outline 官方 MCP 服务现已推出
Outline 现已提供官方 MCP 服务——我们建议使用该服务。 阅读文档。
一个用于与 Outline 文档管理系统交互的模型上下文协议服务。
功能
- 文档操作:搜索、读取、创建、编辑和归档文档
- 集合:列出、创建和管理文档层级结构
- 评论:添加和查看串联评论
- 反向链接:查找引用特定文档的文档
- MCP 资源:通过 URI 直接访问内容(outline://document/{id}、outline://collection/{id} 等)
- 自动速率限制:透明处理 API 限制并提供重试逻辑
前提条件
使用此 MCP 服务前,你需要:
- 一个 Outline 账户(云托管或可自托管)
- 从 Outline Web 界面获取 API 密钥:设置 → API 密钥 → 创建新密钥
- Python 3.10+(非 Docker 安装时)
获取 API 密钥:登录 Outline → 点击个人资料 → 设置 → API 密钥 → “新建 API 密钥”。复制生成的令牌。
快速开始
一键安装
点击按钮,通过交互式提示输入 API 密钥并安装:
手动安装
使用 uv(推荐)、pip 或 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
然后添加到 MCP 客户端配置中(适用于 VS Code、Claude Desktop、Cursor 等):
{
"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 Code
claude mcp add mcp-outline uvx mcp-outline
也可以将此仓库安装为插件,它还会一并提供
outline-explorer Agent(用于快速只读探索 Wiki)和
outline 技能(Outline 约定:mermaidjs 围栏、文档
结构和编辑工作流)。
Claude Desktop
添加到 ~/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>"
}
}
}
}
更多客户端的设置指南:Docker (HTTP)、Cline、Codex、Windsurf 等
配置
| 变量 | 必需 | 默认值 | 说明 |
|---|---|---|---|
OUTLINE_API_KEY | 是* | - | 工具调用成功所必需。对于 SSE/HTTP,也可以通过每次请求中的 x-outline-api-key 标头提供(详情) |
OUTLINE_API_URL | 否 | https://app.getoutline.com/api | 自托管时:https://your-domain/api |
OUTLINE_VERIFY_SSL | 否 | true | 使用自签名证书时设为 false |
OUTLINE_READ_ONLY | 否 | false | true = 禁用所有写入操作(详情) |
OUTLINE_DISABLE_DELETE | 否 | false | true = 仅禁用删除操作(详情) |
OUTLINE_DISABLE_AI_TOOLS | 否 | false | true = 禁用 AI 工具(适用于未配置 OpenAI 的 Outline 实例) |
OUTLINE_DISABLE_RECENT_DOCUMENTS | 否 | false | true = 禁用 list_recently_updated_documents 工具 |
OUTLINE_DYNAMIC_TOOL_LIST | 否 | false | true = 根据角色/API 密钥权限启用按用户筛选工具(详情) |
OUTLINE_MAX_CONNECTIONS | 否 | 100 | 连接池中的最大并发连接数 |
OUTLINE_MAX_KEEPALIVE | 否 | 20 | 连接池中的最大空闲连接数 |
OUTLINE_TIMEOUT | 否 | 30.0 | 读取超时时间,单位为秒 |
OUTLINE_CONNECT_TIMEOUT | 否 | 5.0 | 连接超时时间,单位为秒 |
OUTLINE_WRITE_TIMEOUT | 否 | 30.0 | 写入超时时间,单位为秒 |
OUTLINE_CACHE_TTL | 否 | 30 | 文档缓存 TTL,单位为秒。较短的默认值可吸收同一任务中的集中读取请求,避免给 Outline API 带来压力;设为 0 可禁用缓存(始终读取最新内容),也可设为更高的值(如 300)以进一步节省 API 调用。无论采用哪种设置,暂存编辑都能正常工作 |
OUTLINE_CACHE_MAX_SIZE | 否 | 100 | 缓存文档的最大数量 |
MCP_TRANSPORT | 否 | stdio | 传输模式:stdio(本地)、sse 或 streamable-http(远程) |
MCP_HOST | 否 | 127.0.0.1 | 服务主机。在 Docker 中使用 0.0.0.0 以接受外部连接 |
MCP_PORT | 否 | 3000 | HTTP 服务端口(仅用于 sse 和 streamable-http 模式) |
访问控制
| 功能 | 环境变量 | 效果 |
|---|---|---|
| 只读模式 | OUTLINE_READ_ONLY=true | 禁用所有写入操作——仅提供搜索、读取和导出工具 |
| 禁用删除 | OUTLINE_DISABLE_DELETE=true | 仅禁用删除操作,其他写入操作均可用 |
| 禁用最近变更工具 | OUTLINE_DISABLE_RECENT_DOCUMENTS=true | 仅禁用 list_recently_updated_documents 工具 |
| 动态工具列表 | OUTLINE_DYNAMIC_TOOL_LIST=true | 根据 Outline 角色和 API 密钥权限按用户筛选工具 |
| 每位用户使用独立的 Outline API 密钥 | x-outline-api-key 标头 | 在多用户设置中,每位用户通过 HTTP 模式传入自己的 Outline API 密钥 |
只读模式的优先级高于禁用删除。详情请参阅配置指南。
工具
注意:工具是否可用取决于你的访问控制设置。
搜索与发现
search_documents(query, collection_id?, limit?, offset?, statusFilter?)- 按关键字搜索文档,支持分页。默认搜索已发布的文档;传入statusFilter以及draft、archived和/或published,即可包含其他状态的文档list_recently_updated_documents(date_filter?, collection_id?, status_filter?, limit?, offset?)- 按最近变更时间列出文档,最新的排在前面(例如“本周有哪些变更”)。date_filter按最后变更时间筛选:day/week/month/year(默认值为week)。默认仅列出已发布的文档list_collections()- 列出所有集合get_collection_structure(collection_id)- 获取集合中的文档层级结构get_document_id_from_title(query, collection_id?)- 按标题搜索查找文档 ID
文档阅读
read_document(document_id, offset?, limit?)- 获取文档内容,支持按行范围分页export_document(document_id)- 将文档导出为 Markdown
文档导航
get_document_toc(document_id)- 获取包含标题结构和行号的目录read_document_section(document_id, heading)- 根据标题匹配(不区分大小写的子字符串)读取特定章节
文档管理
create_document(title, collection_id, text?, parent_document_id?, publish?)- 创建新文档update_document(document_id, title?, text?, append?)- 替换整个文档内容(可使用追加模式)
文档编辑
edit_document(document_id, edits, save?)- 通过字符串匹配批量替换来编辑;save=False会在本地暂存更改,最后一次调用时使用save=True提交所有更改move_document(document_id, collection_id?, parent_document_id?)- 将文档移至其他集合或父文档下
文档生命周期
archive_document(document_id)- 归档文档unarchive_document(document_id)- 从归档中恢复文档delete_document(document_id, permanent?)- 删除文档(或移至回收站)restore_document(document_id)- 从回收站恢复文档list_archived_documents()- 列出所有已归档文档list_trash()- 列出回收站中的所有文档
评论与协作
add_comment(document_id, text, parent_comment_id?)- 向文档添加评论(支持线程式回复)list_document_comments(document_id, include_anchor_text?, limit?, offset?)- 分页查看文档评论get_comment(comment_id, include_anchor_text?)- 获取特定评论的详细信息get_document_backlinks(document_id)- 查找链接到此文档的文档
集合管理
create_collection(name, description?, color?)- 创建新集合update_collection(collection_id, name?, description?, color?)- 更新集合属性delete_collection(collection_id)- 删除集合export_collection(collection_id, format?)- 导出集合(默认:outline-markdown)export_all_collections(format?)- 导出所有集合
批量操作
batch_create_documents(documents)- 一次创建多个文档batch_update_documents(updates)- 一次更新多个文档batch_move_documents(document_ids, collection_id?, parent_document_id?)- 移动多个文档batch_archive_documents(document_ids)- 归档多个文档batch_delete_documents(document_ids, permanent?)- 删除多个文档
AI 驱动
ask_ai_about_documents(question, collection_id?, document_id?)- 使用自然语言询问有关文档的问题
资源
outline://collection/{id}- 集合元数据(名称、描述、颜色、文档数量)outline://collection/{id}/tree- 文档的层级树结构outline://collection/{id}/documents- 集合中的文档平铺列表outline://document/{id}- 完整文档内容(Markdown)outline://document/{id}/backlinks- 链接到此文档的文档
开发
git clone https://github.com/Vortiago/mcp-outline.git
cd mcp-outline
uv sync --group dev
uv run poe test-unit # unit tests
uv run poe test-integration # integration tests (starts MCP server via stdio)
uv run poe test-e2e # E2E tests (requires Docker)
有关可自托管的 Outline 设置、MCP Inspector 等内容,请参阅开发指南。
故障排除
服务无法连接? 测试你的 API 密钥:
curl -H "Authorization: Bearer YOUR_API_KEY" YOUR_OUTLINE_URL/api/auth.info
有关工具、速率限制和 Docker 的常见问题,请参阅故障排除指南。
贡献
欢迎贡献!请参阅 CONTRIBUTING.md 了解设置说明。
许可证
本项目采用 MIT 许可证授权,详情请参阅 LICENSE 文件。
致谢
- 基于 MCP Python SDK 构建
- 使用 Outline API 管理文档
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。