Archivist AI について
Archivist AI MCP Serverは、Archivist AIのキャンペーンデータをAIクライアントに接続する、テーブルトークRPGのゲームマスターやプレイヤー向けサーバーです。キャラクター、セッション、場所、クエスト、ジャーナルなどを読み書きできます。
主な機能
- 01キャンペーン、セッション、文字起こしの読み取り
- 02キャラクター、派閥、場所、アイテムの管理
- 03クエストとジャーナルの作成・更新
- 04ストーリービート、重要な場面、ハイライトの参照
- 05キャンペーン内エンティティ間のリンク管理
活用シーン
- 01直近のゲームセッションを確認
- 02NPC、派閥、場所を作成して関連付け
- 03クエストと関係するキャラクターを追跡
- 04キャンペーンの記録とストーリー情報を管理
MCP 対応
Archivist AIのリモートMCPサーバーで、キャンペーンデータの読み取り・書き込みツールを公開します。書き込みには適切な認可スコープが必要です。Discord用ツールは別のMCPエンドポイントで提供されます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.myarchivist.ai/mcpclaude mcp add --transport http astrotomic-archivist-ai https://mcp.myarchivist.ai/mcp{"mcpServers":{"astrotomic-archivist-ai":{"type":"http","url":"https://mcp.myarchivist.ai/mcp"}}}Cursor で開く{"servers":{"astrotomic-archivist-ai":{"type":"http","url":"https://mcp.myarchivist.ai/mcp"}}}VS Code で開く{"mcpServers":{"astrotomic-archivist-ai":{"type":"http","url":"https://mcp.myarchivist.ai/mcp"}}}{"mcpServers":{"astrotomic-archivist-ai":{"serverUrl":"https://mcp.myarchivist.ai/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
Archivist AI MCP サーバー
Archivist AIの公式Model Context Protocol(MCP)サーバーです。ゲームマスターやプレイヤー向けの、TTRPGキャンペーン記憶プラットフォームです。
レジストリのメタデータはserver.jsonにあります。公式MCPレジストリへの公開は、バージョンタグに基づいて.github/workflows/publish-mcp.ymlにより自動化されています(git tag v3.0.1 && git push origin v3.0.1)。
Claude、ChatGPT、Cursor、Notion、WindsurfなどのAIアシスタントをキャンペーンデータに直接接続できます。キャラクター、セッション、場所、派閥、アイテム、クエスト、ジャーナル、重要な場面、英雄賞、名言、スポットライトなど、さまざまなデータを利用できます。
クイックスタート
MCP サーバー URL: https://mcp.myarchivist.ai/mcp
Discord ツールは兄弟ホストの https://discord.myarchivist.ai/mcp で利用できます。これは別個の MCP リソース(OAuth と録音ボットが必要)であり、ここにあるキャンペーンツールに代わるものではありません。
Claude Desktop
Claude Desktop ではプロキシ mcp-remote が必要です(Node.js をインストールしてください)。
claude_desktop_config.json(macOS の場合は ~/Library/Application Support/Claude/claude_desktop_config.json、Windows の場合は %APPDATA%\Claude\claude_desktop_config.json)に追加します:
{
"mcpServers": {
"archivist-ai": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.myarchivist.ai/mcp",
"--header",
"X-API-Key:${ARCHIVIST_API_KEY}"
],
"env": {
"ARCHIVIST_API_KEY": "YOUR_API_KEY"
}
}
}
}
YOUR_API_KEY を app.myarchivist.ai で取得した Archivist AI API キーに置き換えます。保存後、Claude Desktop を再起動してください。
API キーは X-API-Key ヘッダーで送信する必要があります。API キーを
Authorization: Bearer ヘッダーに含めないでください。Bearer 認証情報は OAuth アクセストークン専用です。
OpenCode
OAuth(推奨):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"archivist-ai": {
"type": "remote",
"url": "https://mcp.myarchivist.ai/mcp"
}
}
}
代わりに API キーを使用するには、OAuth の自動検出を無効にし、キーを
X-API-Key で送信します:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"archivist-ai": {
"type": "remote",
"url": "https://mcp.myarchivist.ai/mcp",
"oauth": false,
"headers": {
"X-API-Key": "{env:ARCHIVIST_API_KEY}"
}
}
}
}
Cursor
プロジェクトの .cursor/mcp.json に追加します:
{
"mcpServers": {
"archivist-ai": {
"url": "https://mcp.myarchivist.ai/mcp"
}
}
}
Windsurf
MCP 設定に追加します:
{
"mcpServers": {
"archivist-ai": {
"serverUrl": "https://mcp.myarchivist.ai/mcp"
}
}
}
ChatGPT
Archivist AI は ChatGPT プラグインとして利用できます。ChatGPT プラグインストアで「Archivist AI」を検索してください。
プロンプトの例
- 「自分のキャンペーンを一覧表示してから、Curse of Strahd キャンペーンの最新セッションを要約してください。」
- 「Silver Hand 陣営で活動する密輸業者、Captain Mirelle Voss という名前の新しい NPC を作成し、Port of Dusk の場所に関連付けてください。」
- 「キャンペーンに『Recover the Moonstone』というクエストを追加し、未完了のクエストと関係するキャラクターをすべて一覧表示してください。」
利用可能なツール
読み取りツールは非破壊的で、冪等です。書き込みツールは標準的な REST のセマンティクスに従います。削除は破壊的かつ冪等で、PATCH は非冪等、PUT は冪等です。テキストを含む説明(Character、Faction、Location、Item、Moment、Beat、Session、Journal)を返すすべての読み取りツールは、任意の with_links パラメーターを受け付けます。編集前にほぼ必ず with_links: true を指定する理由については、以下のウィキリンクを参照してください。
キャンペーンの削除、セッションの削除、商品表示専用のエンドポイント(ビートの並べ替え/一括編集、キャンペーン設定、キャスト/メンバー管理)、マルチパートの録音アップロード、AI 画像生成は意図的に公開していません。
OAuth スコープと書き込みアクセス
https://app.myarchivist.ai 経由で接続する OAuth クライアントは、認証時にスコープを要求します。すべての書き込みツール(作成/更新/削除+画像アップロード)には、呼び出し元のトークンに agent_write スコープも必要です。
MCP は tools/list で API の適用ルールを反映します。agent_write を持たないエージェントクライアントには読み取りツールのみが表示され、書き込みツールを呼び出そうとすると「tool not found」の JSON-RPC エラーが返されます。API キーの認証情報とエージェント以外の OAuth クライアントにはこのフィルターは適用されません。これらに対する最終的な制御は API が担い、すべてのツールが引き続き表示されます。
agent_write が告知される前に接続した既存の OAuth クライアントは、新しいスコープを含むトークンを取得するため、再認証が必要です。
キャンペーン
| ツール | 説明 |
|---|---|
list_campaigns | キャンペーンを一覧表示します。ページ分割された一覧を返します。 |
get_campaign | ID を指定して特定のキャンペーンを取得します。 |
get_campaign_stats | キャラクター数、セッション数など、キャンペーンの統計情報を取得します。 |
create_campaign | 新しいキャンペーンを作成します。アカウントのサブスクリプションプランごとのキャンペーン上限が適用されます。 |
update_campaign | キャンペーンのメタデータ(タイトル、説明、トーン、公開/成人向けフラグ)を部分的に更新します。 |
セッション
| ツール | 説明 |
|---|---|
list_sessions | ゲームセッションの一覧を取得します。セッションの種類または公開のみで絞り込めます。 |
get_session | ID でセッションを取得します。関連するビートやモーメントを含めることもできます。 |
get_session_cast_analysis | キャスト分析を取得します。発言シェアの内訳とセッションの主要指標が含まれます。 |
get_session_transcript | ゲームセッションの整形済みトランスクリプトを取得します。発言、全文、集計統計が含まれます。 |
get_session_handout | ゲームセッション用に生成されたセッションハンドアウトを取得します。概要、アウトライン、スポットライト、注目すべきモーメントが含まれます。 |
patch_session | 部分更新(タイトル、session_date、概要、メモ、種類、公開設定、画像)を行います。ウィキリンクの明示的リンク契約に従います。 |
ストーリー構成
| ツール | 説明 |
|---|---|
list_beats | インデックス順にビートを一覧表示します。ビートはストーリーの場面(major、minor、step)を表します。 |
get_beat | ID で特定のビートを取得します。 |
create_beat | ビートを作成します。ウィキリンクの明示的リンク契約に従います。 |
update_beat | ビートを部分更新します。 |
delete_beat | ビートを削除します(子ビートの parent_id はクリアされます)。 |
list_moments | キーモーメント(モーメント)をキャンペーンまたはセッション内で一覧表示します。ラベル、カテゴリ(通常は key-moment)、種類で絞り込めます。画像と表示メタデータが含まれます。 |
get_moment | ID でキーモーメントを取得します。画像 URL、カテゴリ、種類、メタデータが含まれます。 |
create_moment | セッションに紐づけてキーモーメントを作成します。キーモーメントカードには categories=["key-moment"] を設定します。ウィキリンクの明示的リンク契約に従います。 |
update_moment | 画像や統合済みの表示メタデータを含め、キーモーメントを部分更新します。 |
delete_moment | キーモーメントを削除します。 |
ハイライト
| ツール | 説明 |
|---|---|
list_hero_awards | キャンペーンまたはセッション内のヒーローアワードを一覧表示します。 |
get_hero_award | ID でヒーローアワードを取得します。 |
create_hero_award | セッションに紐づけてヒーローアワードを作成します。 |
update_hero_award | ヒーローアワードを部分更新します。 |
delete_hero_award | ヒーローアワードを削除します。 |
list_quotes | キャンペーンまたはセッション内の印象的なセッションの名言を一覧表示します。 |
get_quote | ID で名言を取得します。 |
create_quote | セッションに紐づけて名言を作成します(必要に応じてリキャップパイプラインを作成します)。 |
update_quote | 名言を部分更新します。 |
delete_quote | 名言を削除します。 |
list_spotlights | リキャップのスポットライト(セッションハンドアウトのスポットライトではなく、GEMSカード)を一覧表示します。 |
get_spotlight | ID でリキャップのスポットライトを取得します。 |
create_spotlight | セッションに紐づけてリキャップのスポットライトを作成します。 |
update_spotlight | リキャップのスポットライトを部分更新します。 |
delete_spotlight | リキャップのスポットライトを削除します。 |
ワールド構築
| ツール | 説明 |
|---|---|
list_characters | キャンペーン内のキャラクターを一覧表示します。名前、種類(PC/NPC)、承認ステータスで絞り込めます。 |
get_character | IDでキャラクターを取得します。別名、バックストーリー、話者との関連付けも含まれます。 |
create_character | キャラクターを作成します。説明やバックストーリー内のウィキリンクは自動的に解決されます。 |
update_character | キャラクターを部分更新します。説明やバックストーリーを編集する前に、with_links: true を指定して読み込んでください。 |
delete_character | キャラクターを削除します。APIは、受信側のすべての [[alias]] 参照から括弧を自動的に取り除きます。 |
list_factions | 勢力を一覧表示します。勢力は、ギルド、組織、その他のグループを表します。 |
get_faction | IDで特定の勢力を取得します。 |
create_faction | 勢力を作成します。説明内のウィキリンクは自動的に解決されます。 |
update_faction | 勢力を部分更新します。更新前に、with_links: true を指定して読み込んでください。 |
delete_faction | 勢力を削除します。 |
list_locations | ロケーションを一覧表示します。ロケーションは入れ子にできます(都市、酒場、ダンジョンなど)。 |
get_location | IDで特定のロケーションを取得します。 |
create_location | ロケーションを作成します。説明内のウィキリンクは自動的に解決されます。 |
update_location | ロケーションを部分更新します。更新前に、with_links: true を指定して読み込んでください。 |
delete_location | ロケーションを削除します(子ロケーションの parent_id はクリアされます)。 |
list_items | アイテムを一覧表示します。武器、防具、アーティファクト、その他の重要な物品が含まれます。 |
get_item | IDで特定のアイテムを取得します。 |
create_item | アイテムを作成します。説明内のウィキリンクは自動的に解決されます。 |
update_item | アイテムを部分更新します。更新前に、with_links: true を指定して読み込んでください。 |
delete_item | アイテムを削除します。 |
クエスト
| ツール | 説明 |
|---|---|
list_quests | ページネーション付きでクエストを一覧表示します。ステータスまたはカテゴリで絞り込めます。 |
get_quest | 完全に展開されたクエストを取得します。目標、進行ログ、関連エンティティ、セッションの由来が含まれます。 |
create_quest | クエストのエントリを作成します。クエストはウィキリンクシステムの対象ではありません。 |
update_quest | クエストを部分更新します。送信したリストは、レコード内の対応するリストを置き換えます。 |
delete_quest | クエストとその目標、進行エントリ、関連参照を削除します。 |
ジャーナル
| ツール | 説明 |
|---|---|
list_journals | ジャーナルのエントリを一覧表示します。一覧には本文が含まれないため、全文を取得するには get_journal を使用してください。 |
get_journal | IDでジャーナルのエントリを取得します。全文と権限レベルも含まれます。 |
create_journal | ジャーナルのエントリを作成します。{success, id} を返します。 |
update_journal | ジャーナルのエントリを更新します(PUT)。{success, id} を返します。 |
delete_journal | ジャーナルのエントリを削除します(埋め込みは可能な範囲で削除されます)。 |
list_journal_folders | ツリー表示用に、パスと位置の順でジャーナルフォルダーを一覧表示します。 |
get_journal_folder | IDで特定のジャーナルフォルダーを取得します。 |
create_journal_folder | ジャーナルフォルダーを作成します(オーナーまたは管理者のみ。パスはキャンペーン内で一意である必要があります)。 |
update_journal_folder | ジャーナルフォルダーを更新します(PUT)。 |
delete_journal_folder | フォルダーを削除します。エントリはキャンペーンのルートに移動します。 |
関連付け
| ツール | 説明 |
|---|---|
list_links | エンティティ間のリンクを一覧表示します。ソースまたはターゲットのエンティティ、および関連付けの別名で絞り込めます。 |
create_link | 2つのエンティティ間にLink行を作成します((from_type, from_id, alias) が競合する場合はアップサートされます)。 |
update_link | 既存のリンクの別名を更新します。 |
delete_link | 単一のLink行を削除します(ソースのテキストは書き換えられません)。 |
bulk_link_maintenance | ウェブフック経由でキャンペーン全体のリンクメンテナンス(追加、削除、更新)を実行します。有効なサブスクリプションプランが必要です。 |
画像
| ツール | 説明 |
|---|---|
get_image_usage | キャンペーンにおける呼び出し元アカウントの画像クォータ(used/limit)、tier、can_access、サイクル期間を返します。 |
init_image_upload | 直接アップロードのステップ 1:object_key を確保し、署名付き S3 PUT URL を受け取ります。その後、クライアントは同じ Content-Type を指定して、画像の生バイトデータを upload_url に PUT します。expires_in_seconds の経過後に有効期限が切れます。 |
complete_image_upload | 直接アップロードのステップ 2:アップロードされたオブジェクトを検証し、NSFW モデレーションを実行します。また、attach: true の場合はエンティティの image フィールドにモデレーション済み URL を設定します。 |
delete_entity_image | 画像を削除します。entity_type と entity_id を指定すると(関連付けを解除し、オブジェクトも削除)、または image_url を指定すると(オブジェクトのみ削除)できます。 |
ウィキリンク
Archivist AI の説明、要約、モーメントの内容、ジャーナル本文には、実際のレコードを参照する [[Target Name|Optional Alias]] 形式のマークアップを含めることができます。ウィキリンクを含むテキストフィールドを扱う書き込みツールはすべて、既存のリンクを壊さないための簡単な手順に従う必要があります。
必ず守るべきルール
書き込む前に、必ず with_links: true を指定して読み取ってください。 Character、Faction、Location、Item、Moment、Beat、Session、Journal の各 Get/List ツールで、このパラメーターを使用できます。API は既定でウィキリンクを除去して返すため、読み取り、変更、書き込みを行うと、元のレコードにある [[…]] がすべて消えてしまいます。with_links: true を指定すると、括弧を保持したままテキストが返されるので、書き込む際にリンクを維持できます。
レコードごとの仕様
| レコードの種類 | 仕様 |
|---|---|
| Character、Faction、Location、Item、Character.backstory | 自動解決。 書き込み時に、API は新しいテキストから [[…]] を抽出し、同じキャンペーン内のレコードと照合して Link テーブルを同期します(新規挿入、変更分の更新、削除分の削除)。照合可能な対象に対する新しい [[Alias]] マークアップは、自動的に Link を作成します。 |
| GameSession、Beat、Moment | 明示的なリンクのみ。 API は、対象のソースに対応する Link 行がまだ存在しない [[Alias]] マークアップを除去します。ウィキリンクを追加するには、まず正しい from_type/from_id を指定して create_link を呼び出し、その後、書き込み時のテキストに [[Alias]] を含めてください。 |
| Journal | 表示のみ。 保存された [[…]] マークアップは、with_links: true を指定した読み取り時にリンクとして表示されますが、書き込みによって Link テーブルが自動的に更新されることはありません。リンクを継続的に追跡する場合は、create_link(from_type=Journal)を使用してください。 |
| Quest | ウィキリンクなし。 Quest のテキストフィールドはそのまま保存されます。関連性はウィキリンクではなく、related_* リストフィールドで表します。 |
| 削除(すべてのレコード) | API は、削除されたレコードを参照するすべてのテキストフィールドで、[[alias]] 形式の参照から括弧を自動的に取り除きます。手動でのクリーンアップは不要です。 |
名前の変更と参照先の変更
- エイリアスの変更:括弧の内側を編集します。
[[Alice|Al]]→[[Alice|Ali]]。 - 別の対象への参照先の変更:表示される対象名を変更します。
[[Alice]]→[[Alicia]]。 - リンクの削除:テキスト内でエイリアスの括弧を外す(自動解決の場合)か、
delete_linkを呼び出します(明示的なリンクの場合)。 - コンペンディウム対象のキャンペーン全体にわたる名前または参照先の変更:
operation: "update"とnew_alias、および/またはnew_target_idを指定してbulk_link_maintenanceを使用します。API はバックグラウンドの Webhook で参照先のすべてのテキストフィールドを書き換え、task_idを返します。
画像
エンティティ画像は、直接アップロードによって Character、Faction、Location、Item、Moment、Session、および Campaign 自体に追加できます。MCP サーバーには AI 画像生成ツールはありません。画像生成は Archivist AI アプリの製品機能であり、API の REST エンドポイントからも利用できます。
直接アップロード(2ステップ)
ユーザーがディスク上またはメモリ内にすでに持っている画像には、署名付き URL のフローを使用します。
campaign_id、entity_type、entity_id、file_name、content_type(image/*である必要があります)を指定してinit_image_uploadを呼び出します。object_key、upload_url、public_url、expires_in_secondsが返されます。- クライアント(または人間の協力者)が、URL の有効期限が切れる前に、画像の生バイトデータと同じ
Content-Typeヘッダーを付けてupload_urlに HTTPPUTを実行します。この手順は MCP トランスポートの外部で行われます。 object_key、entity_type、entity_id、attach(デフォルトはtrue)を指定してcomplete_image_uploadを呼び出します。API はアップロードを検証し、NSFW モデレーションを実行します。また、attachが true の場合は、対象エンティティのimageフィールドにモデレーション済みのpublic_urlを設定します。
任意の HTTP PUT を実行できないエージェントは、ステップ 1 とステップ 3 の間に、PUT の手順を人間に依頼してください。
削除
delete_entity_image は、次のいずれかの方法でキャンペーン内の画像を削除します。
- エンティティで指定:
entity_typeとentity_idを渡します。API はレコードから画像を切り離し、元のオブジェクトも削除します。 - URL で指定:管理対象の
image_url(例:以前のinit_image_uploadの応答に含まれるもの)を渡します。オブジェクトのみを削除します。
トラブルシューティング
- 認証に失敗する、またはツールが 401 を返す場合: サーバーを再接続して OAuth サインインをやり直すか、app.myarchivist.ai で API キーが有効か確認してください。
- 書き込みツールが表示されない場合(エージェント OAuth クライアントのみ):
agent_writeスコープのないエージェント OAuth クライアントでは、書き込みツールは非表示になります。再接続して書き込みアクセスを承認してください。API キーとエージェント以外の OAuth クライアントでは、常にすべてのツールが表示されます。詳しくはOAuth スコープと書き込みアクセスを参照してください。 - Claude Desktop が接続しない場合:
mcp-remoteプロキシと Node.js が必要です。設定を編集した後、Claude Desktop を再起動してください。 - 編集後にウィキリンクが消える場合: 更新前に
with_links: trueを指定してレコードを読み込んでください。ウィキリンクを参照してください。
プライバシーとサポート
- プライバシーポリシー: https://www.myarchivist.ai/privacy
- サポートおよびセキュリティに関するお問い合わせ先: [email protected]
- コミュニティ: Discord
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。