Outline Wiki MCP 服务器

一个提供对 Outline Wiki 实例访问权限的 MCP 服务器,支持文档的列出、搜索、检索和创建/更新。

  • by dexrobo
  • JavaScript
  • 混合部署
  • 更新于
在 GitHub 查看 dexrobo/outline-mcp-server

使用说明

Wiki MCP服务器概述

这是一个模型上下文协议(MCP)服务器,提供对 大纲Wiki 例子它允许AI代理列出、搜索、检索和创建/更新文档。

特性

  • 标准化: 与官方合作建造 @modelcontextprotocol/sdk.
  • 多种运输方式: 支持两者 stdio (当地)和 SSE (远程/快递)运输。
  • 安全: 从日志中删除敏感令牌,并确保凭据永远不会被硬编码。
  • 沙盒创建: 强制新文档进入特定的集合和父页面,以防止混乱。

配置

服务器按以下顺序查找环境变量:

  1. 进程环境 (例如通过shell或CLI标志设置)。
  2. 本地 .env 文件 在当前工作目录中。
  3. 全局回退文件 在 ~/.outline-mcp.env.

环境变量参考

变量 描述
OUTLINE_URL Outline实例的基本URL(例如。, https://wiki.example.com)
OUTLINE_API_TOKEN 您的大纲API令牌(需要追加销售的写入访问权限)
OUTLINE_DEFAULT_COLLECTION_ID 新文档的目标集合的UUID、URL或短ID。如果设置了父ID,则可选。
OUTLINE_DEFAULT_PARENT_DOCUMENT_ID 默认父文档的UUID、URL或短ID。如果没有明确设置,则会从该文档中自动推断出目标集合。
LOG_LEVEL 日志记录级别(info, debug, error).默认为 info.

URL和短ID支持

所有ID字段(包括环境变量和工具参数)都接受完整的Outline URL(例如。, https://.../doc/title-k2KatQyCbK),短ID(k2KatQyCbK),或标准UUID。服务器会自动提取这些标识符并将其解析为正确的内部标识符。

快速入门(推荐)

为了避免在项目之间重复配置,您可以在主目录中创建一个配置文件:

1.创建全局配置文件

# Create the global config file
cat <<EOF > ~/.outline-mcp.env
OUTLINE_URL=https://your-wiki.getoutline.com
OUTLINE_API_TOKEN=your_api_token
OUTLINE_DEFAULT_COLLECTION_ID=collection_uuid
OUTLINE_DEFAULT_PARENT_DOCUMENT_ID=parent_doc_uuid
EOF

2.添加到您的AI工具

替换 <tool> 使用您首选的CLI(克劳德, 法典,或 双子座):

<tool> mcp add outline npx -y github:dexrobo/outline-mcp-server

克劳德桌面: 将此添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "outline": {
      "command": "npx",
      "args": ["-y", "github:dexrobo/outline-mcp-server"]
    }
  }
}

替代设置(CLI标志)

如果您不想使用配置文件,请替换 <tool> 随着 克劳德, 法典,或 双子座:

<tool> mcp add outline npx -y github:dexrobo/outline-mcp-server \
  --env OUTLINE_URL=... \
  --env OUTLINE_API_TOKEN=... \
  --env OUTLINE_DEFAULT_COLLECTION_ID=... \
  --env OUTLINE_DEFAULT_PARENT_DOCUMENT_ID=...

克劳德桌面:

{
  "mcpServers": {
    "outline": {
      "command": "npx",
      "args": ["-y", "github:dexrobo/outline-mcp-server"],
      "env": {
        "OUTLINE_URL": "...",
        "OUTLINE_API_TOKEN": "...",
        "OUTLINE_DEFAULT_COLLECTION_ID": "...",
        "OUTLINE_DEFAULT_PARENT_DOCUMENT_ID": "..."
      }
    }
  }
}

警告与警示

  • API令牌范围: 服务器在以下权限下运行 OUTLINE_API_TOKEN。如果可能的话,强烈建议使用具有受限访问权限的服务帐户或令牌。
  • 沙盒:
    • 执行: 服务器严格要求所有文档创建和更新都发生在 OUTLINE_DEFAULT_COLLECTION_ID.
    • 创造: 这 documents-upsert 工具 力量 将所有新文档添加到配置的集合中。AI代理可以指定 parentDocumentId;如果省略,则默认为 OUTLINE_DEFAULT_PARENT_DOCUMENT_ID (如果已设置),或者它们可以在集合的顶层创建。任何指定的父级都必须属于沙盒集合。
    • 更新: 如果A id 提供给 documents-upsert,服务器在允许更新之前验证文档是否属于沙盒集合。
    • 读取权限: documents-list, documents-get,以及 documents-search 可以访问API令牌可以看到的任何文档。
  • 费率限制: Outline API调用受Outline实例的速率限制。
  • 无删除: 为了安全起见,此MCP服务器当前不公开任何删除工具。

用法

本地(通过npx)

您可以直接使用以下命令运行服务器 npx:

OUTLINE_URL=... OUTLINE_API_TOKEN=... npx github:dexrobo/outline-mcp-server

远程(SSE/HTTP)

以SSE模式启动服务器(对远程部署很有用):

OUTLINE_URL=... OUTLINE_API_TOKEN=... npx github:dexrobo/outline-mcp-server --transport sse --port 3000

发现URL将是 http://localhost:3000/mcp.

可用工具

  • documents-list:列出集合中的文档。
  • documents-get:按ID检索完整文档内容。
  • documents-search:按查询字符串搜索文档。
  • documents-upsert:创建或更新文档(严格沙盒)。
    • 附件: 支持上传图像、PDF、视频和其他文件。
      • 流动: 大文件直接从本地路径流式传输(使用 path 现场)。
      • Base64: 小文件可以作为base64内容提供。
      • Markdown集成: 你可以使用标准的Markdown语法链接到附件,比如 ![Alt text](local/path/to/image.png) 或 [Download](filename.pdf)。服务器将自动用正确的附件ID替换这些ID。
      • 显式占位符: 或者,使用 {{attachment:filename}} 仅获取附件ID。

发展

如果您想贡献或修改服务器:

  1. 克隆仓库: git clone https://github.com/dexrobo/outline-mcp-server.git
  2. 安装依赖项: npm install
  3. 运行linting: npm run lint
  4. 运行格式化: npm run format
  5. 运行测试: npm test

本地开发和测试

您可以使用提供的冒烟测试实用程序在本地测试MCP服务器的端到端流(包括标准MCP握手),而无需使用完整的MCP主机:

# Verify the MCP protocol and tool routing locally
npm run test:mcp

# CI-safe wrapper with an outer hard timeout (45s)
npm run test:mcp:ci

此实用程序处理标准JSON-RPC握手,列出可用工具,并对以下对象执行测试调用 documents-list 以确保所有东西都连接正确。

安全通告

此服务器使用 pino 用于自动编辑日志 OUTLINE_API_TOKEN 和 Authorization 标题。切勿共享环境变量或将其提交给源代码管理。