Skip to main content
Glama
README.md
# claude-bridge

2台の Claude Code をインターネット越しに連携させる共有MCPサーバー。
同じURL + 同じ「ルームキー」で接続した者同士が、メッセージ・共有メモリ・タスク・ファイルを共有できる。

> **ステータス: 実験で打ち止め(アーカイブ)**
> ローカルでの動作検証までは完了しているが、本番デプロイはしていない。
> 検討の結果、「共有のGitHubリポジトリ + 公式GitHub MCP」を両者で繋ぐ方が
> デプロイ不要・履歴/UIつき・タスクはIssueにそのまま乗るため現実的、という結論に至った。
> 本リポジトリは作ったものの記録として残している。
> (メッセージ→Issueコメント / 共有メモリ→ファイル・Wiki / タスク委譲→Issue / 成果物→commit・Release)

```
[あなたのClaude Code] --MCP(HTTP)--> [claude-bridge] <--MCP(HTTP)-- [仲間のClaude Code]
```

## ツール

| 分類 | ツール |
|---|---|
| メッセージ | `send_message`, `get_messages` |
| 共有メモリ | `post_memory`, `search_memory` |
| タスク委譲 | `create_task`, `list_tasks`, `claim_task`, `complete_task` |
| ファイル | `upload_file`, `download_file`, `list_files` |

## ローカルで動かす

```bash
npm install
npm run dev        # tsx で起動(ホットリロード)
# または
npm run build && npm start
```

`http://localhost:3000/mcp` で待ち受ける。`GET /health` で疎通確認。

## デプロイ(Railway 例)

1. このフォルダをGitリポジトリにして push
2. Railway で New Project → Deploy from repo
3. Dockerfile が自動検出される。永続化のため Volume を `/data` にマウント
4. 払い出された公開URL(例 `https://xxx.up.railway.app`)の `/mcp` が接続先

Fly.io でも同じ Dockerfile でそのまま動く(`fly launch`)。

## Claude Code から接続する

あなたと仲間で**同じURL・同じルームキー**を使う(キーが部屋を分離する)。

```bash
claude mcp add --transport http bridge https://xxx.up.railway.app/mcp \
  --header "X-Room-Key: 二人だけの合言葉"
```

接続後、`send_message` でメッセージを送る、`create_task` でタスクを委譲する、など。
相手は `get_messages` / `list_tasks` で受け取る。

## 認証について

ルームキーは「合言葉を知っている人が同じ部屋に入れる」という最小限の仕組み。
推測されにくい十分に長いランダム文字列を使うこと。サーバーURLが公開される性質上、
キーが漏れると第三者が同じ部屋に入れる点に注意。