Obsidian MCP服务器

在Fly.io上运行Obsidian vault的MCP服务器,支持AI助手通过HTTPS和OAuth 2.1认证读写和搜索vault文件。

  • by klutchell
  • Dockerfile
  • 本地部署
  • 更新于
在 GitHub 查看 klutchell/obsidian-mcp-fly

使用说明

Fly.io上的黑曜石MCP

跑一个 MCP服务器 Fly.io上的黑曜石保险库。 AI助手(Claude.AI等)可以读取、写入和搜索您的 使用OAuth 2.1身份验证通过HTTPS进行保管。

建筑

由shell入口点管理的具有两个进程的单个容器:

  • ob同步 — 黑曜石无头 保留您的本地副本 vault与Obsidian的服务器同步
  • 保险库同步 --通过MCP提供本地vault文件 使用OAuth 2.1身份验证

两者共享一个持续的容量 /data.

┌──────────────────────────────────────────┐
│  Container (node:24-bookworm-slim)       │
│  entrypoint.sh                           │
│                                          │
│  ┌─────────────┐  ┌──────────────┐       │
│  │ ob sync     │  │ vault-sync   │       │
│  │ Node.js CLI │  │ Go binary    │       │
│  └──────┬──────┘  └──────┬───────┘       │
│         └────────┬───────┘               │
│                  │                       │
│  ┌───────────────┴───────────────┐       │
│  │  Fly.io Persistent Volume     │       │
│  │  /data/vault     (vault files)│       │
│  │  /data/.vault-sync (state db) │       │
│  └───────────────────────────────┘       │
│                                          │
│  Exposed: :8090 (MCP only)               │
└──────────────────────────────────────────┘

先决条件

首次身份验证设置

黑曜石需要交互式登录才能获得身份验证令牌。在本地执行一次:

npm install -g obsidian-headless
ob login

或与 尼克斯:

nix develop
ob login

登录后,提取您的令牌:

cat ~/.obsidian-headless/auth_token

保存此值——您可以将其设置为 OBSIDIAN_AUTH_TOKEN 在Fly.io上。

部署到Fly.io

1.创建应用程序并配置fly.toml

fly apps create
cp fly.toml.example fly.toml

编辑 fly.toml 并设置 app 到您的应用程序名称和 primary_region 到你的 最近的 Fly.io地区.

2.创建卷

# single volume is fine for personal use — answer "y" to the HA warning
# region MUST match primary_region in fly.toml (machines can only mount local volumes)
fly volumes create obsidian_data --region <same-as-primary_region> --size 1

3.设定秘密

fly secrets set OBSIDIAN_AUTH_TOKEN="your-auth-token"
fly secrets set OBSIDIAN_VAULT_NAME="Your Vault Name"
fly secrets set MCP_SERVER_URL="https://<your-app-name>.fly.dev"
fly secrets set MCP_AUTH_USERS="user:password"
fly secrets set OBSIDIAN_VAULT_PASSWORD="your-e2ee-password"  # optional, only if E2E encrypted

4.部署

fly deploy

5.验证

curl "https://<your-app-name>.fly.dev/.well-known/oauth-protected-resource"

连接Claude.ai

添加 https://<your-app>.fly.dev/mcp 作为远程MCP服务器 Claude.ai设置。系统将提示您通过OAuth进行身份验证 使用中设置的凭据 MCP_AUTH_USERS.

本地测试

cp .env.example .env
# Edit .env with your credentials

docker build -t obsidian-mcp .
docker run --env-file .env -p 8090:8090 -v obsidian_data:/data obsidian-mcp

环境变量

变量 必填 默认 描述
OBSIDIAN_AUTH_TOKEN 是 -- 身份验证令牌(来自 ob login)
OBSIDIAN_VAULT_NAME 是 -- 要同步的保管库名称
OBSIDIAN_VAULT_PASSWORD 如果是E2EE -- E2E加密密码
ENABLE_SYNC 没有 false vault同步内置同步
ENABLE_MCP 没有 true 启用MCP服务器
OBSIDIAN_SYNC_DIR 没有 /data/vault vault文件的路径
MCP_SERVER_URL 是 -- 公共基础URL
MCP_AUTH_USERS 是 -- user:pass OAuth配对
MCP_CLIENT_CREDENTIALS 没有 -- id:secret 无头OAuth
MCP_API_KEYS 没有 -- user:key 用于API密钥身份验证
MCP_LOG_LEVEL 没有 info debug/info/warn/error
ENVIRONMENT 没有 production production 或 development