Token导航 LogoToken导航TokenDH.com
Obsidian Remote MCP logo
AI代理未说明官方级别未说明来源级核验

Obsidian Remote MCP

MCP Server

一个自托管的MCP服务器,为无头Obsidian库提供远程AI客户端的读写访问,无需在本地运行Obsidian桌面应用。

工具数

14

提示词数

0

GitHub Stars

2

资源数

0
自托管远程访问TypeScriptClaudeClaudeCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

nweii

提供方

nweii

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

黑曜岩远程mcp

自托管 主控程序 无头黑曜石金库服务器。它允许远程AI客户端通过HTTPS对保险库进行读写访问 无需在同一台机器上运行Obsidian桌面应用程序。

它直接从磁盘上的vault文件工作,不需要黑曜石应用程序或同步服务。这适用于服务器环境:家庭服务器、NAS机箱、VPS和其他设置,其中您的保险库位于磁盘上,您希望通过Claude.ai等应用程序的远程MCP端点公开它。

安全性和范围

远程MCP是对保险库的强大访问——使用HTTPS,并考虑服务监听的位置。

内置保护措施:

  • OAuth 2.1+PKCE 可选 MCP_CLIENT_SECRET 论代币交换
  • 固定不记名代币 (MCP_STATIC_BEARER_TOKEN)对于跳过浏览器身份验证的客户端
  • CORS分配 (CORS_ALLOWED_ORIGINS)适用于基于浏览器的客户端
  • Vault路径沙盒 --针对vault根目录验证的所有路径
  • .mcpignore 阻止MCP访问的特定路径
  • VAULT_READ_ONLY 阻止所有写入的模式

它包括什么

服务器当前公开了这些工具:

工具说明
vault_context阅读由配置的vault指导说明 VAULT_CONTEXT_PATH,或回退到 AGENTS.md / CLAUDE.md
vault_read完整注释文本(mode 完整、默认)或列出一个文件夹级别(mode list; path "" =保险库根)
vault_outline全部 # 注释中的标题(每行一个);使用前 vault_read_section
vault_read_section正文在一个标题下(heading =无文本 #不区分大小写
vault_frontmatter从笔记中读取YAML frontmatter;可选的 property 对于单个密钥
vault_links阅读外发维基链接和可选反向链接
vault_create创建新笔记
vault_update替换笔记的全部内容
vault_set_frontmatter_property在不重写注释体的情况下设置一个frontmatter属性
vault_edit在注释中添加、预置或替换精确的文本
vault_trash将笔记移动到 .trash
vault_search_title按文件名查找笔记(部分或精确);返回路径 vault_read
vault_search_content注释体中的正则表达式搜索;可选的 folder 查看大型保险库
vault_daily_note使用可配置的路径模板阅读或创建每日笔记

快速开始

运行时间。 服务器是TypeScript 包子。正常使用时没有单独的构建步骤:Bun运行 src/server.ts 直接。安装依赖项 bun install (Express、MCP SDK和一些库——请参阅 package.json).

磁盘上的保险库。 将服务器指向vault根目录 VAULT_PATH,或者不设置它并使用黑曜石 obsidian.json 发现(详细信息请参见 保险库路径 在......下面

git clone https://github.com/nweii/obsidian-remote-mcp.git
cd obsidian-remote-mcp
bun install
export VAULT_PATH=/absolute/path/to/your/vault
export MCP_CLIENT_ID=dev
bun run src/server.ts

bun start 运行相同的入口点(package.json 将其映射到 bun run src/server.ts).

进程侦听端口 3456 默认情况下。MCP端点为 POST /mcp 在该港口;OAuth元数据在以下目录下提供 /.well-known/oauth-authorization-server.

要使服务器可从互联网访问(Claude.ai和其他远程客户端需要),请参阅 部署 在......下面

部署

码头工人

将此另存为 docker-compose.yml 在克隆的repo目录中:

services:
  obsidian-remote-mcp:
    image: oven/bun:1              # pre-built Bun runtime — no local Bun install needed
    working_dir: /app
    restart: unless-stopped
    environment:
      MCP_CLIENT_ID: your-client-id
      MCP_CLIENT_SECRET: your-client-secret     # optional
      MCP_BASE_URL: https://mcp.example.com
      VAULT_PATH: /vault                         # path inside the container (mapped by volumes below)
      CORS_ALLOWED_ORIGINS: https://claude.ai
      PORT: 3456
      # TOKEN_STORE_PATH: /app/data/tokens.json  # uncomment to persist OAuth sign-ins across restarts
    volumes:
      - ./:/app                                  # mounts the repo into the container
      - /path/to/your/vault:/vault               # left = path on your machine, right = path inside container
      # - ./data:/app/data                       # uncomment to persist TOKEN_STORE_PATH on the host
    command: ["bun", "run", "src/server.ts"]
    ports:
      - "3456:3456"                              # host:container — access on http://localhost:3456
docker compose up -d      # start in background
docker compose logs -f    # watch output

HTTPS和 MCP_BASE_URL

远程MCP和OAuth需要 超文本传输安全协议.使用反向代理(Caddy、nginx、Cloudflare Tunnel等)在应用程序前处理TLS,并公开一个公共URL,如 https://mcp.example.com.Set MCP_BASE_URL 在该源的服务器上 没有/mcp 路径——它必须与用户在浏览器栏中看到的内容相匹配。

如果您使用Cloudflare Zero Trust,一个实用的模式是设置身份门 /authorize,因此用户登录以批准访问 /.well-known/*, /oauth/token,以及 /mcp 保持与协议的联系。

环境变量

在服务器进程上设置这些(编写 environment:、Portainer、外壳 export等等):

MCP_CLIENT_ID=your-client-id
MCP_CLIENT_SECRET=your-client-secret   # optional
MCP_BASE_URL=https://mcp.example.com
MCP_ALLOWED_REDIRECT_URIS=https://claude.ai/api/mcp/auth_callback # optional
VAULT_PATH=/path/to/your/vault         # optional if obsidian.json is available
OBSIDIAN_VAULT_ID=personal             # optional when obsidian.json contains multiple vaults
VAULT_DISPLAY_NAME=Personal            # optional; defaults to the vault directory name
VAULT_CONTEXT_PATH=AGENTS.md           # optional; defaults to AGENTS.md, then CLAUDE.md
DAILY_NOTE_PATH_TEMPLATE=Daily/{YYYY}-{MM}-{DD}.md
CORS_ALLOWED_ORIGINS=https://claude.ai # optional; defaults to *
TOKEN_STORE_PATH=./tokens.json         # optional
MCP_STATIC_BEARER_TOKEN=               # optional; fixed Bearer for /mcp (e.g. mcp-remote + Antigravity)
VAULT_READ_ONLY=true                   # optional
PORT=3456

VAULT_PATH, VAULT_CONTEXT_PATH,以及 DAILY_NOTE_PATH_TEMPLATE 也记录在 保险库路径, Vault上下文注释,以及 每日笔记路径 在本自述的后面。

验证到 /mcp

POST /mcp 请求必须发送 Authorization: Bearer ….你可以提供 OAuth, 固定支座,或 两者;然后,每个客户端使用它支持的任何路径。

OAuth(浏览器)

适用于用户可以打开浏览器的客户端。服务器使用 OAuth 2.1:批准日期 /authorize,在以下位置交换短命代码 POST /oauth/token,然后将颁发的访问令牌发送到 Authorization/mcp.

服务器: MCP_CLIENT_ID 是必需的。 MCP_CLIENT_SECRET 是可选的;如果在服务器上设置它,请在每个OAuth客户端中配置相同的值,以便它们在 POST /oauth/token。如果未设置,则该步骤不使用共享密钥——使用HTTPS并限制可以联系到的人 /authorize. MCP_BASE_URL 必须与公共网站来源匹配(否 /mcp). MCP_ALLOWED_REDIRECT_URIS 是一个可选的逗号分隔列表;默认情况下允许Claude的回调。

持续登录: TOKEN_STORE_PATH (默认值 ./tokens.json)在登录后存储OAuth颁发的令牌,以便客户端在服务器重启后幸存下来。

添加为Claude的远程MCP连接器 (仅限付费计划):使用您的基本URL /mcp 包括。在高级设置下,将OAuth客户端ID设置为 MCP_CLIENT_ID,可选地将OAuth客户端密钥发送给您的 MCP_CLIENT_SECRET (如果服务器配置了密钥,则在令牌交换时需要)。在服务器上,设置 MCP_BASE_URL 指向与连接器URL相同的源,没有 /mcp.

光标 mcp.json:

{
  "mcpServers": {
    "obsidian-vault": {
      "url": "https://your-host/mcp",
      "auth": {
        "CLIENT_ID": "your-mcp-client-id",
        "CLIENT_SECRET": "your-mcp-client-secret (optional)"
      }
    }
  }
}

游标使用重定向URI cursor://anysphere.cursor-mcp/oauth/callback。将其添加到 MCP_ALLOWED_REDIRECT_URIS 在服务器上(逗号与任何其他客户端分隔,例如Claude的回调)。

固定承载(非浏览器)

对于脚本,Antigravity+ mcp-remote,或任何无法运行浏览器流的客户端。不要同时设置这两个 authheaders 在同一个mcp.json条目上——选择OAuth或固定承载。

MCP_STATIC_BEARER_TOKEN 在服务器上;客户端将该字符串发送为 Authorization: Bearer … 在每一个 /mcp 请求。此跳过 /authorize, POST /oauth/token, TOKEN_STORE_PATH 对于那个客户。

反重力 mcp_config.json:

"obsidian-vault": {
  "serverUrl": "https://your-host/mcp",
  "headers": {
    "Authorization": "Bearer YOUR_MCP_STATIC_BEARER_TOKEN"
  }
}

光标 mcp.json:

{
  "mcpServers": {
    "obsidian-vault": {
      "url": "https://your-host/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_MCP_STATIC_BEARER_TOKEN"
      }
    }
  }
}

通过以下方式桥接stdio mcp-remote:

"obsidian-vault": {
  "command": "bunx",
  "args": ["-y", "mcp-remote", "https://your-host/mcp", "--transport", "http-only", "--header", "Authorization: Bearer YOUR_MCP_STATIC_BEARER_TOKEN"]
}

跨域资源共享

CORS_ALLOWED_ORIGINS 限制哪些 浏览器来源 可以从JavaScript调用API。它与OAuth和 MCP_STATIC_BEARER_TOKEN默认值为 * (允许所有人)。要限制:

CORS_ALLOWED_ORIGINS=https://claude.ai
CORS_ALLOWED_ORIGINS=https://claude.ai,http://localhost:3000

设置后,只有列出的来源才会得到反映 Access-Control-Allow-Origin;其他浏览器预检失败。

保险库路径

服务器按以下顺序解析vault根:

  1. VAULT_PATH,如果已设置
  2. .config/obsidian/obsidian.json,从当前工作目录或包目录向上查找

如果 obsidian.json 包含多个Vault,集 OBSIDIAN_VAULT_ID 转到要使用的vault条目。

OAuth审批页面中使用的显示名称默认为解析的vault目录名称。你可以用以下命令覆盖它 VAULT_DISPLAY_NAME.

无头/未安装黑曜石

大多数用户只需设置 VAULT_PATH 跳过这个。如果您更喜欢在没有Obsidian的机器上自动发现路径,请自己创建配置文件:

mkdir -p ~/.config/obsidian

~/.config/obsidian/obsidian.json:

{
  "vaults": {
    "personal": {
      "path": "/home/user/vaults/personal"
    }
  }
}

使用多个Vault,添加更多条目并设置 OBSIDIAN_VAULT_ID 到你想要的那个。使用绝对路径-- ~ 内部未膨胀 obsidian.json.

Vault上下文注释

vault_context 旨在帮助特工在开始写作之前了解你的保险库结构。默认情况下,它会查找 AGENTS.mdCLAUDE.md.

如果您的vault使用不同的引导文件,请设置 VAULT_CONTEXT_PATH 指向您希望工具读取的相对路径。

如果你不想维护一个,服务器仍然可以在没有它的情况下工作。

每日笔记路径

vault_daily_note 用途 DAILY_NOTE_PATH_TEMPLATE,默认为:

Daily/{YYYY}-{MM}-{DD}.md

这只是一个方便的工具。许多保管库使用不同的每日笔记布局,因此您可能希望覆盖它。

支持的令牌:

  • {YYYY}:4位数年份
  • {YY}:2位数年份
  • {MM}:2位数月份
  • {M}:没有零填充的月份
  • {DD}:2位数日
  • {D}:没有零填充的日子
  • {MMM}:短月份名称,如 Mar
  • {MMMM}:完整月份名称,如 March
  • {dd}:简短的工作日名称,如 Th
  • {ddd}:简短的工作日名称,如 Mon
  • {dddd}:完整的工作日名称,如 Monday

示例:

DAILY_NOTE_PATH_TEMPLATE=Daily/{YYYY}/{YYYY}-{MM}-{DD}.md
DAILY_NOTE_PATH_TEMPLATE=Journal/{YYYY}-{MM}-{DD}-{dddd}.md
DAILY_NOTE_PATH_TEMPLATE=Journal/{YYYY}/{MMM}/{D}-{ddd}.md

备注

MCP和HTTP

  • GET /mcp 回报 405,不 404,因此可流式传输的HTTP客户端知道服务器只接受MCP POST.

Vault访问和工具默认值

  • 所有vault路径都会根据解析的vault根进行验证,以防止目录遍历。
  • .mcpignore 在vault根目录中,可以阻止所有MCP访问的路径。
  • VAULT_READ_ONLY=true 阻止所有写入操作。
  • vault_search_title 默认为 limit=50; vault_search_content 默认为 limit=20.限值可调; 0 意味着没有限制。
  • vault_frontmattervault_set_frontmatter_property 让代理使用frontmatter属性,而无需读取或重写整个音符体。

测试

bun test

目录标签

目录标签

自托管远程访问TypeScriptClaude本地部署ObsidianMCP协议AI集成

支持客户端

ClaudeCursor

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

oauth

工具数量(toolCount,工具数)

14

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明oauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP