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) │
└──────────────────────────────────────────┘先决条件
- Fly.io命令行界面 (
flyctl) - 码头工人 (用于本地测试)
- 22+(用于初始身份验证令牌)
- 一 黑曜石同步 订阅
首次身份验证设置
黑曜石需要交互式登录才能获得身份验证令牌。在本地执行一次:
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 --size 13.设定秘密
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://.fly.dev"
fly secrets set MCP_AUTH_USERS="user:password"
fly secrets set OBSIDIAN_VAULT_PASSWORD="your-e2ee-password" # optional, only if E2E encrypted4.部署
fly deploy5.验证
curl "https://.fly.dev/.well-known/oauth-protected-resource"连接Claude.ai
添加 https://.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 |
