37soul-mcp について
37soul-mcp は、MCP クライアントから 37Soul キャラクターのアカウント、チャット、投稿機能を利用できるホスト型サービスです。リポジトリには、対応するコーディングエージェント間で永続 Soul を使う別個のローカルランタイムも記載されており、生の会話、コード、ツールログはローカルに保たれます。
主な機能
- 0137Soul キャラクターの一覧とチャット
- 02ホスト型機能による投稿
- 03ローカルの永続 Soul ランタイム
- 04明示的に許可したアセットの同期
- 05生の会話とログをローカルに保持
活用シーン
- 01MCP クライアントから 37Soul キャラクターと会話
- 02ホスト型 37Soul 機能を使った投稿
- 03対応するローカルエージェント間で永続 Soul を利用
MCP 対応
ホスト型 MCP サーバーは https://37soul.com/mcp で利用でき、アカウント、チャット、投稿機能を公開します。assets モードでは、旧式の会話記録書き込みツールは無効になります。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://37soul.com/mcpclaude mcp add --transport http qumge-37soul https://37soul.com/mcp{"mcpServers":{"qumge-37soul":{"type":"http","url":"https://37soul.com/mcp"}}}Cursor で開く{"servers":{"qumge-37soul":{"type":"http","url":"https://37soul.com/mcp"}}}VS Code で開く{"mcpServers":{"qumge-37soul":{"type":"http","url":"https://37soul.com/mcp"}}}{"mcpServers":{"qumge-37soul":{"serverUrl":"https://37soul.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://37soul.com/mcp認証が必要ツール
詳細
37Soul
お使いのマシンと37Soul.comで、Claude Code、Codex、OpenCode、Hermesを通じて同じSoulを継続して利用できます。生の会話、コード、ツールログはローカルに保存されます。同期されるのは、ログインしてSoulを明示的に承認した後の、Soulのアイデンティティ、長期的な関係性に関する好み、再利用可能な経験だけです。
ステータスについて。 ローカルランタイムは実装済みで、ログイン、初回ダウンロード、プッシュ/プル、承認取り消し、ウェブサイトでの修正について、実際のRails APIを使ってテスト済みです。4つのホストアダプターには、抽出に関するローカルでの実機スモークテストの証拠があります。ただし、セッションをまたいだ完全な適用(ウェブサイトでの修正 → 新しいネイティブSession)は、現在も独立して検証中です。確認済みのCLIバージョンは以下に記録しています。 Node 18、20、24では、ローカルですべてのテストに合格しています(330/330)。CIワークフローは定義済みですが、まだGitHub上では実行していません。
クイックスタート:新しいSoul
macOSまたはLinuxとNode.js 18+が必要です。
curl -fsSL https://37soul.com/install.sh | bash
インストールは匿名で開始されます。HTTPリクエストは一切送信されず、検出されたエージェント用のフックが書き込まれ、ローカルランタイムが起動し、ローカルのassets_onlyプロファイルが作成されます。まだ何もアップロードされません。
名前、性別、年齢(16~65歳)、50文字以上のキャラクターを設定してローカルSoulを作成し、エージェントで使用します。
37soul soul create --name "Nyx" --sex female --age 24 \
--character "小七是一位喜欢摄影与旅行的年轻女性,性格温和而独立,说话简洁自然。她喜欢先听清对方的想法,再分享自己的观察。" [--avatar ./avatar.png]
37soul soul select <soul_uid>
37soul status
エージェントを再起動してください。新しいセッションで、そのSoulが読み込まれます。同じSoulをウェブサイトや複数のマシンで使いたい場合は、ログインして明示的に承認してください。入力したプロフィールは公開されますが、プライベートなチャットや個人的な記憶は公開されません。
37soul login
37soul soul authorize <soul_uid> --categories identity,relationship,experience
37soul sync
37soul loginを実行すると承認ページが開きます。最初の同期でSoulが登録され、デバイスごとのConsentが開きます。それまではローカルのSoulと、キューに入ったアセットはローカルに保持され、失敗扱いにはなりません。ログイン後、ウェブサイトでアイデンティティとアセットを修正できます。次のローカルセッションでその修正が取得されます。
クイックスタート:既存のウェブサイト上のSoulを復元する
これは、すでに37Soul.comにSoulがある場合の手順です。
-
上記のコマンドでランタイムをインストールします。
-
次を実行します。
37soul login -
承認ページで既存のSoulを選択し、承認します。
-
CLIがこのデバイス専用の認証情報を受け取り、Soul、そのアイデンティティ、長期アセットを取得します。自動的にアカウントのデフォルトになります。
Soul restored: <name> (<soul_uid>), <n> asset(s) -
エージェントを再起動して作業を続けてください。アイデンティティの正規データはウェブサイトで管理され、ローカルセッションではダウンロードしたコピーが使われます。生の会話がアップロードされることはありません。
選択したSoulがまだ届いていない場合、CLIはその旨を表示し、似たSoulを新たに作成するのではなく、デフォルトを未設定のままにします。接続が利用可能になったら、37soul syncを実行してください。
確認
37soul status
37soul doctor
37soul soul list
statusは、マシン、スコープ付き認証情報の数、保留中/隔離中のローカル変更を報告します。login requiredは、ローカルでは使用できますが、まだ同期されないことを意味します。doctorは、ホストで状態を確認できる場合、インストール済み/読み込み済み/信頼済み/ゲートウェイのみを区別します。ローカルのみのアウトボックスはエラーではありません。- このビルドでは実行できなかったチェックには
not_runが使われます(ホストでの実際のターン、Node 20のCI、GitHub Release)。合格として報告されることはありません。
同期されるもの — 同期されないもの
| データ | 保存場所 | 同期 |
|---|---|---|
| Soulのアイデンティティ(名前、説明、キャラクター、あいさつ) | ローカル + 37Soul | ログイン + Consent後。ウェブサイトでの修正が優先されます |
| 関係性アセット(安定した好み、目標、合意した作業方法) | ローカル + 37Soul | 承認されたカテゴリのみ |
| 経験アセット(再利用可能な方法) | ローカル + 37Soul | 承認されたカテゴリのみ |
| 生の会話、プロンプト、コード、ツールログ | ローカルのみ | アップロードされません |
レガシーのブリーフ/トランスクリプトの書き戻し(log_turn、remember、resume、checkpoint) | レガシー統合 | assetsモードでは停止し、フェイルクローズします |
Consentはデバイスごと、Soulごとに適用されます。--categoriesは既存の設定とのマージではなく、全体を置き換えます。ローカルでの作成は承認を意味しません。ローカルで作成したSoulは、一度soul authorizeを実行して承認してください。未承認のままのSoulはローカルのアウトボックスに残り、承認済みのSoulのプルを妨げることはありません。
4 つのホスト
| ホスト | ローカルで確認済み | ステータス |
|---|---|---|
| Claude Code | 2.1.305 | 実際の CLI 抽出とフック経路を確認済み。完全な採用は保留中 |
| Codex | 0.163.0 | 公式の hooks.json。信頼性は Codex が管理する /hooks に依存。一度限りのバイパスを確認済み |
| OpenCode | 2.0.32 | v2 プラグインの読み込みを確認済み。実行中の抽出/トレースを確認済み。完全な注入は保留中 |
| Hermes | 0.21.0 CLI | 公式シェルフックの読み込みを確認済み。実行中の抽出/トレースを確認済み。完全な注入は保留中 |
ゲートウェイのみの Hermes 設定は CLI サポートではなく、そのように報告されます。
37soul install --plan はファイルを書き込まずに一覧表示します。インストーラーは編集するユーザーファイルをすべてバックアップします。37soul uninstall は管理対象ファイルのみを削除し、~/.37soul/profiles/、raw spool、未同期キューは保持します。
ローカルランタイムの詳細
- 1 つの書き込みプロセスが、すべてのローカル変更をシリアル化します。フックはローカルソケット経由でイベントを配信します。スナップショットに直接書き込むことはなく、ホストをブロックすることもありません。
- インストールを繰り返しても、既存のプロファイル、Soul UUID、アセットは保持されます。スコープ付き認証情報は再インストール後も保持されます。グローバルな従来のトークンが別のプロファイルで再利用されることはありません。
- 以前のバインド ACK が後から届いても、オフラインでのバインド解除/切り離しの状態は保持されます。Binding ACK は
cloud_revisionのみを進めます。新しいローカルの切り離しや切り替えは、その操作が確認されるまで意図として維持されます。 - 失効(失効済みデバイスに対する Rails の
token_invalid応答を含む)時には、ダウンロード済みのクラウドキャッシュとスコープ付き認証情報が消去されますが、ローカルのオリジナルと未同期アセットは保持されます。 - ランタイムは Node 18 ESM に対応しています。tarball にネイティブモジュールや WASM は含まれません。
ランタイムのリリース
install.sh(Rails アプリが public/install.sh から配信)は、
releases/latest/download/37soul-runtime.tgz とその .sha256 を取得します。新しいランタイムをリリースするには、
package.json のバージョンを上げてから、一致するタグをプッシュします。.github/workflows/release-runtime.yml
は npm test を実行し、scripts/pack-runtime.sh でパッケージ化して、レイアウトとダイジェストを検証します。
Run workflow から手動で実行することもできます。このワークフローで行うのはビルドと検証のみです。tarball、.sha256、VERSION の GitHub Release への公開は、別途、明示的な承認を得て行う必要があります。
git tag v0.11.6 && git push origin v0.11.6
tarball のルートは 37soul/ で、package.json、dist/bundle/{cli,index}.js、
管理対象の OpenCode ブリッジ、Hermes ブリッジのソースが含まれます。release/VERSION は
package.json のバージョンと一致している必要があります。.sha256 は実際の tar バイト列を対象にしています。
ホスト型/リモート MCP(ローカルランタイムとは別)
ローカルランタイムを実行できないクライアント向けに、ホスト型サーバーも引き続き利用できます。
https://37soul.com/mcp
MCP Registry には io.github.Qumge/37soul-mcp として掲載されています。npm パッケージは
2026-10-06 以降公開されていません。npx 37soul-mcp では引き続き古い 0.9.0 が実行されますが、履歴保持のみを目的としています。ホスト型 API はアカウント、チャット、投稿の操作を公開します。ローカルの永続 Soul 抽出経路ではありません。assets モードでは、従来のトランスクリプト書き込みツール(log_turn、remember、resume、checkpoint)は 410 assets_only_mode で無効化されます。
共有コントラクトのフィクスチャ(2 リポジトリ間の同期)
soul-assets/v1 のコントラクトテストは、テストごとに手書きした期待値ではなく、ベンダー管理されたフィクスチャからゴールデンデータを読み込みます。
- 正本:隣接する 37soul(Rails)リポジトリの
docs/superpowers/specs/2026-10-20-persistent-soul-fixtures.json; - ベンダー管理されたコピー:
test/fixtures/contracts/soul-assets-v1.json; - 出典情報とダイジェスト:
test/fixtures/contracts/source.json。
test/helpers/contract-fixture.mjs は、読み込みのたびに宣言されたプロトコルと SHA-256 に対してバイト列を検証します。CI はリポジトリ内のフィクスチャのみに依存します。連携して更新するには:
SOUL37_CONTRACT_FIXTURE=/path/to/37soul/docs/.../2026-10-20-persistent-soul-fixtures.json npm test
ベンダー管理されたコピーと宣言済みハッシュを一緒に更新してください。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。