mcp黑曜石桥
通过流式HTTP+OAuth+ngrok将本地stdio MCP服务器连接到Claude.ai和Claude mobile。
它的作用
Claude.ai支持通过OAuth的Streamable HTTP远程MCP服务器(“自定义连接器”)。大多数本地MCP服务器,如 黑曜石MCP --使用stdio。该方案弥合了这一差距:
Claude.ai / Claude mobile
↓ (HTTPS)
ngrok tunnel
↓ (localhost)
mcp-obsidian-bridge (OAuth + HTTP → stdio translation)
↓ (stdin/stdout)
Local MCP server (e.g. mcp-obsidian)先决条件
- Node.js 18+
- ngrok帐户 (免费): 在这里注册
- 黑曜石 随着 本地REST API插件 启用
快速开始
1.运行安装向导
npx mcp-obsidian-bridge setup这将要求:
- 你的 ngrok授权令牌 (从 ngrok仪表板)
- 你的 黑石API密钥 (来自Obsidian中的本地REST API插件设置)
- A. 个人识别码 您将使用它来授权Claude.ai
2.启动桥梁
npx mcp-obsidian-bridge start大桥将:
- 将Obsidian MCP服务器作为子进程生成
- 使用OAuth和MCP端点启动HTTP服务器
- 打开一条ngrok隧道
- 打印公共URL
3.从Claude.ai连接
- 首选 Claude.ai→ 设置→ 集成→ 添加自定义连接器
- 输入网桥显示的ngrok URL
- 当授权页面打开时,输入您的PIN
- 完成——Claude.ai现在可以访问你的黑曜石金库了
CLI命令
| 命令 | 描述 |
|---|---|
mcp-bridge setup | 交互式首次运行配置 |
mcp-bridge start | 启动网桥服务器 |
mcp-bridge start -s | 从特定的服务器配置开始 |
mcp-bridge status | 显示当前配置 |
mcp-bridge add-server -c -a -e KEY=VAL | 添加自定义MCP服务器 |
与其他MCP服务器一起使用
该网桥是通用的——它适用于任何stdio MCP服务器。添加自定义服务器:
# Example: bridge a filesystem MCP server
mcp-bridge add-server filesystem -c npx -a -y @anthropic/mcp-server-filesystem /path/to/dir或编辑 ~/.mcp-bridge/config.json 直接:
{
"servers": {
"obsidian": {
"command": "npx",
"args": ["-y", "mcp-obsidian"],
"env": {
"OBSIDIAN_API_KEY": "your-key",
"OBSIDIAN_HOST": "127.0.0.1",
"OBSIDIAN_PORT": "27123"
}
},
"filesystem": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-server-filesystem", "/home/user/documents"]
}
},
"activeServer": "obsidian",
"port": 3456
}然后开始: mcp-bridge start -s filesystem
运作原理
OAuth2流
Claude.ai要求OAuth用于自定义连接器。该网桥通过PKCE和动态客户端注册(DCR)实现了最低限度的OAuth2授权码授予:
- Claude.ai通过以下方式发现端点
/.well-known/oauth-authorization-server - Claude.ai通过以下方式注册
/register(DCR) - 用户被重定向到
/authorize并输入他们的PIN - 授权码在以下地址兑换代币
/token - 代币有效期为30天,支持刷新
MCP翻译
该桥在HTTP和stdio之间进行转换:
- 进来的:
POST /mcp使用JSON-RPC→ 写入子进程stdin - 传出:读取子进程stdout→ JSON-RPC HTTP响应
- 会话通过以下方式跟踪
Mcp-Session-Id头球
配置
配置存储在 ~/.mcp-bridge/config.json敏感值(PIN哈希、OAuth签名秘密)从不以明文形式存储。
安全说明
- PIN存储为咸PBKDF2哈希,而不是明文
- OAuth令牌是256位随机值
- 重新启动时,ngrok隧道URL会发生变化(除非您有带保留域的付费ngrok计划)
- 只有您应该知道PIN——这是防止未经授权访问您的保险库的原因
故障排除
“子进程已退出,代码为1”:MCP服务器启动失败。检查:
- Obsidian运行时已启用本地REST API插件
- API密钥正确
- 主机/端口与您的插件设置匹配
“创建ngrok隧道失败”:检查:
- 您的ngrok authtoken是正确的
- 您没有运行另一个ngrok隧道(免费帐户允许1)
OAuth授权失败:重新运行 mcp-bridge setup 重置您的PIN。
许可证
麻省理工学院
