mcp-hey
mcp-hey
ClaudeにHey.comの受信トレイへの読み取り/書き込みアクセス権を与える、ローカルのModel Context Protocol (MCP) サーバーです。リバースエンジニアリングされたWeb APIを使用します。
mcp-heyは2つのパーツで構成されています。Heyのツールをstdio経由で公開するBun/TypeScript製のMCPサーバーと、システムWebViewを使用してログイン時にセッションクッキーを取得する小さなPythonヘルパーです。すべてローカルで実行され、クラウド中継や認証情報の保存は行わず、セッションクッキーのみがディスクに保存されます。
注意 — 非公式APIです。 Hey.comは公開APIを提供していません。mcp-heyはWebエンドポイントをリバースエンジニアリングし、ブラウザと同一のHTTPリクエストを送信します。予告なく動作しなくなる可能性があります。現在ドキュメント化されているインターフェースは
docs/API.mdに記載されています。
機能
Imbox、Feed、Paper Trail、Set Aside、Reply Laterからのメール読み取り
メールスレッドの送信と返信
ボックスを横断したメール検索
メールの整理(Set aside、Reply later、Screen in/out、Bubble up)
高速な繰り返し読み取りと全文検索のためのローカルSQLiteキャッシュ
軽量 — アイドル時のメモリ使用量は約30MB
検知を回避するためのブラウザと同一のヘッダーとTLS設定
すべてマシン上で実行 — ネットワーク公開なしのstdioトランスポート
セットアップ
前提条件
Bun 1.1以降
Hey.comアカウント
プラットフォーム: macOSおよびLinuxで開発・テストされています。WindowsユーザーはWSLが必要になる可能性が高いです(pywebviewのWindowsバックエンドは現在検証されていません)。
インストール
リポジトリをクローンする
git clone https://github.com/Sealjay/mcp-hey.git cd mcp-hey依存関係をインストールする
bun install pip install -r auth/requirements.txt初回実行 — 認証
bun run devPython認証ヘルパーがHey.comを指すシステムWebViewを開きます。通常通りログインしてください。ヘルパーがセッションクッキーを
data/hey-cookies.json(パーミッションは600に固定)に保存して終了します。以降の実行では、セッションが期限切れになるまで保存されたセッションが再利用されます。
MCPクライアントの設定
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json (macOS) に追加します:
{
"mcpServers": {
"hey": {
"command": "bun",
"args": ["run", "/absolute/path/to/mcp-hey/src/index.ts"]
}
}
}Claude Desktopを再起動します。利用可能な統合としてheyが表示されるはずです。
Cursor
~/.cursor/mcp.json に追加します:
{
"mcpServers": {
"hey": {
"command": "bun",
"args": ["run", "/absolute/path/to/mcp-hey/src/index.ts"]
}
}
}Cursorを再起動します。
アーキテクチャ
コンポーネント | 説明 |
MCPサーバー | Bun/TypeScript、stdioトランスポート、アイドル時約30MBのメモリ |
認証ヘルパー | Python/pywebview、システムWebView経由のログイン時にオンデマンドで起動 |
キャッシュ | メッセージ、スレッド、検索インデックス用のローカルSQLiteストア |
通信 |
|
データフロー
MCPクライアント(Claude Desktop / Cursor)がstdio経由で
bun run src/index.tsを起動します。起動時にサーバーが
data/hey-cookies.jsonを検証します。欠落または期限切れの場合はauth/hey-auth.pyを起動し、システムWebViewでHeyを開いて新しいクッキーを書き込みます。ツール呼び出しはブラウザと同一のヘッダーでHey.comに直接アクセスします。レスポンスは解析(HTMLは
node-html-parserを使用)され、SQLiteにキャッシュされます。書き込み操作は、送信前に新しいCSRFトークンを取得します。
プロジェクト構造
mcp-hey/
src/
index.ts # MCP server entry point
hey-client.ts # HTTP client with cookie injection
session.ts # Session management and validation
errors.ts # Error classes and sanitisation
cache/ # SQLite cache (db, schema, messages, search)
tools/ # MCP tool implementations
read.ts # Reading and listing
send.ts # Send, reply, forward
organise.ts # Triage, labels, bubble up, etc.
http-helpers.ts # Shared CSRF retry and endpoint fallback
__tests__/ # Test suites
auth/
hey-auth.py # Python auth helper (pywebview)
requirements.txt
data/
hey-cookies.json # Session storage (gitignored, chmod 600)
docs/
API.md # Hey.com API surface documentation
TOOLS.md # MCP tool reference (41 tools)利用可能なツール
機能別に41個のツールがあります。パラメータ、戻り値の形式、エラー動作についてはdocs/TOOLS.mdを参照してください。
カテゴリ | ツール |
読み取り |
|
ラベルとコレクション |
|
送信 |
|
トリアージ |
|
Bubble up |
|
スクリーナー |
|
検索 |
|
キャッシュ |
|
プライバシーとセキュリティ
認証情報は一切保存されません。保存されるのはセッションクッキーのみで、
600のパーミッションで書き込まれます。認証はすべてHey自身のログインページ(システムWebView)内で行われます。
すべてのデータはマシン内に留まります。このプロジェクトからテレメトリは送信されません。
MCPはstdioトランスポートを使用するため、サーバーがネットワークリスナーを開くことはありません。
セッションの有効性は起動時および機密操作の前にチェックされます。
脆弱性の報告方法についてはSECURITY.mdを参照してください。
制限事項
プロンプトインジェクションのリスク: 多くのMCPサーバーと同様に、このサーバーもthe lethal trifectaの影響を受けます。悪意のあるメールが受信トレイに届いた場合、Claudeに対して他のメッセージを外部に送信するよう指示を試みる可能性があります。ツールのインターフェースを適切に扱い、リスクのある操作は承認前に確認してください。
非公式API: Hey.comのフロントエンドは予告なく変更され、動作しなくなる可能性があります。時折発生する不具合を想定し、既知の変更点については
docs/API.mdを確認してください。リアルタイム通知なし: ポーリングのみです。
添付ファイルのアップロードはまだサポートされていません。
MCPサーバーインスタンスごとに単一アカウントのみです。
アカウントのリスク: 過度または異常なアクセスパターンは、理論上Heyの不正利用防止システムをトリガーする可能性があります。サーバーは
x-ratelimitヘッダーを尊重し、指数バックオフを行いますが、保証はありません。
トラブルシューティング
認証WebViewが開かない — Python 3.10+ が
PATHにあり、pip install -r auth/requirements.txtが成功していることを確認してください。LinuxではWebViewバックエンドが利用可能であることを確認してください(python -c "import webview"でエラーが出ないこと)。数週間使用後の
401/403レスポンス — Heyのセッションが期限切れです。data/hey-cookies.jsonを削除し、再度bun run devを実行して再認証してください。レート制限 (
429) — クライアントはx-ratelimitヘッダーを尊重し、バックオフします。継続的に429が発生する場合は、同時ツール使用数を減らすか、数分待機してください。Claude Desktop/CursorでBunがスクリプトを見つけられない —
argsのパスは相対パスではなく絶対パスである必要があり、クライアントの起動環境からbunが検出可能である必要があります(macOSでは/opt/homebrew/bin/bunのようなフルパスを使用する必要がある場合があります)。クッキー名が変更された — Heyは過去にセッションクッキーの名前を変更したことがあります(例:
_hey_session→session_token、ログについてはCLAUDE.mdを参照)。Heyのアップデート後に認証がサイレントに失敗する場合は、新しいクッキーを取得して比較してください。
コントリビューション
プルリクエストによるコントリビューションを歓迎します。以下をお願いします:
Conventional Commits (
feat,fix,docs,refactor,test,perf,cicd,revert,WIP) を使用してください。プッシュ前に
bun run formatとbun run lintを実行してください。bun testがパスすることを確認してください。Hey.com APIの動作を発見または変更した場合は
docs/API.mdを更新してください。
完全な開発ワークフローについては CLAUDE.md を参照してください。
ライセンス
MITライセンス — LICENCE を参照してください。
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Sealjay/mcp-hey'
If you have feedback or need assistance with the MCP directory API, please join our Discord server