MCP本地开发桥接工具

一个用于本地MCP开发和测试的权限化HTTPS桥接工具,支持OAuth和HTTP到stdio的转换。

  • by AIWander
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 josephwander-arch/mcp-obsidian-bridge

使用说明

mcp黑曜石桥

用于本地MCP开发和测试的许可HTTPS网桥。

安全使用/许可模型

AIWander工具是本地的、用户授权的MCP功能表面。他们不会自己授予AI新的权限。它们公开了用户明确安装和启用的工具。敏感操作应由用户确认,凭据应保留在操作系统密钥环或本地保管库中,演示应使用模拟数据。

它做什么

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)

先决条件

快速开始

1.运行安装向导

npx mcp-obsidian-bridge setup

这将要求:

  • 你的 ngrok授权令牌 (从 ngrok仪表板)
  • 你的 黑石API密钥 (来自Obsidian中的本地REST API插件设置)
  • A. 个人识别码 您将使用它来授权Claude.ai

2.启动桥梁

npx mcp-obsidian-bridge start

大桥将:

  1. 将Obsidian MCP服务器作为子进程生成
  2. 使用OAuth和MCP端点启动HTTP服务器
  3. 打开已配置的HTTPS隧道
  4. 打印公共URL

3.从Claude.ai连接

  1. 首选 Claude.ai→ 设置→ 集成→ 添加自定义连接器
  2. 输入网桥显示的HTTPS URL
  3. 当授权页面打开时,输入您的PIN
  4. 完成——Claude.ai现在可以访问你的黑曜石金库了

CLI命令

命令 描述
mcp-bridge setup 交互式首次运行配置
mcp-bridge start 启动网桥服务器
mcp-bridge start -s <name> 从特定的服务器配置开始
mcp-bridge status 显示当前配置
mcp-bridge add-server <name> -c <cmd> -a <args...> -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授权码授予:

  1. Claude.ai通过以下方式发现端点 /.well-known/oauth-authorization-server
  2. Claude.ai通过以下方式注册 /register (DCR)
  3. 用户被重定向到 /authorize 并输入他们的PIN
  4. 授权码在以下地址兑换代币 /token
  5. 代币有效期为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。

许可证

麻省理工学院