Archivist AI

io.github.Astrotomic由 GitHub 帳號 Astrotomic 發布v3.0.1更新於 Oct 24, 2026

Official remote MCP server for Archivist AI TTRPG campaign memory: characters, sessions, and more.

已驗證Streamable HTTP可網頁執行效率與工作流知識與記憶

概覽

AI 產生的概覽

Archivist AI 官方遠端 MCP 伺服器,讓助理讀取與編輯 TRPG 戰役紀錄,例如角色、場次、任務與日誌。

可以做什麼
  • 列出、讀取、建立、更新與刪除戰役、場次、節拍、關鍵時刻、英雄獎、語錄與聚光
  • 管理世界觀條目:角色、派系、地點與物品,文字欄位支援 wikilink
  • 管理任務、日誌條目與日誌資料夾
  • 檢視並維護實體之間的連結,包括整個戰役範圍的連結維護
  • 查詢圖片配額、發起並完成直傳圖片、刪除實體圖片
  • 讀取場次逐字稿、講義與出場分析
適用情境
適合在 Archivist AI 中記錄戰役的主持人與玩家,希望助理在對話中摘要場次、草擬 NPC 或地點、追蹤任務並維護交叉參照。
執行需求
透過 streamable HTTP 連線至 mcp.myarchivist.ai 遠端端點。必須驗證:OAuth 登入,或在 X-API-Key 標頭提供 Archivist AI API 金鑰。Claude Desktop 需要 mcp-remote 代理與 Node.js。寫入工具需要 agent_write OAuth 權限範圍。部分功能需要 Archivist AI 帳號與訂閱等級。
安裝前請注意
伺服器可建立、更新與刪除戰役紀錄,包括角色、任務、日誌與圖片的破壞性刪除;寫入工具需要 agent_write 權限。讀取預設會移除 wikilink,若編輯時未使用 with_links: true 可能抹除既有連結。圖片上傳需在 MCP 傳輸之外對預簽章網址發出 HTTP PUT,並經過 NSFW 審核。API 金鑰須放在 X-API-Key,不可放在 Bearer 標頭。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Archivist AI,將其新增到工作區。
  2. 連接 所需的 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
  3. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.Astrotomic%2Farchivist-ai/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。 客戶端會在首次連接時完成 OAuth 登入。

{
  "mcpServers": {
    "archivist-ai": {
      "type": "http",
      "url": "https://mcp.myarchivist.ai/mcp"
    }
  }
}

README

Archivist AI MCP Server

[MIT License] [Treeware] [Larabelles]

[GitHub PHPunit Status] [GitHub PHPStan Status] [GitHub Pint Status] [GitHub PHPMND Status]

[Discord] [Smithery] [Glama] [mcp.so]

The official Model Context Protocol (MCP) server for Archivist AI -- a TTRPG campaign memory platform for game masters and players.

Registry metadata lives in server.json. Publishing to the official MCP Registry is automated on version tags via .github/workflows/publish-mcp.yml (git tag v3.0.1 && git push origin v3.0.1).

Connect AI assistants like Claude, ChatGPT, Cursor, Notion, and Windsurf directly to your campaign data: characters, sessions, locations, factions, items, quests, journals, key moments, hero awards, quotes, spotlights, and more.

Quick Start

MCP Server URL: https://mcp.myarchivist.ai/mcp

Discord tools live on a sibling host: https://discord.myarchivist.ai/mcp. That is a separate MCP resource (OAuth + your recording bot) and does not replace campaign tools here.

Claude Desktop

Claude Desktop requires the mcp-remote proxy (Node.js must be installed).

Add to your claude_desktop_config.json (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):

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"      }    }  }}

Replace YOUR_API_KEY with your Archivist AI API key from app.myarchivist.ai. Restart Claude Desktop after saving.

API keys must be sent in the X-API-Key header. Do not put an API key in an Authorization: Bearer header; Bearer credentials are reserved for OAuth access tokens.

OpenCode

OAuth (recommended):

json
{  "$schema": "https://opencode.ai/config.json",  "mcp": {    "archivist-ai": {      "type": "remote",      "url": "https://mcp.myarchivist.ai/mcp"    }  }}

To use an API key instead, disable OAuth auto-detection and send the key in X-API-Key:

json
{  "$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

Add to .cursor/mcp.json in your project:

json
{  "mcpServers": {    "archivist-ai": {      "url": "https://mcp.myarchivist.ai/mcp"    }  }}
Windsurf

Add to your MCP configuration:

json
{  "mcpServers": {    "archivist-ai": {      "serverUrl": "https://mcp.myarchivist.ai/mcp"    }  }}
ChatGPT

Archivist AI is available as a ChatGPT plugin. Search for "Archivist AI" in the ChatGPT plugin store.

Example Prompts

  • "List my campaigns, then summarize the most recent session of my Curse of Strahd campaign."
  • "Create a new NPC named Captain Mirelle Voss, a smuggler who works for the Silver Hand faction, and link her to the Port of Dusk location."
  • "Add a quest called 'Recover the Moonstone' to my campaign, then list all open quests and the characters involved."

Available Tools

Read tools are non-destructive and idempotent. Write tools follow standard REST semantics — deletes are destructive and idempotent; PATCH is non-idempotent; PUT is idempotent. Every read tool that returns text-carrying descriptions (Character, Faction, Location, Item, Moment, Beat, Session, Journal) accepts an optional with_links parameter — see Wikilinks below for why you almost always want to pass with_links: true before editing.

Campaign delete, session delete, product-view-only endpoints (beat reorder/batch-edit, campaign settings, cast/member management), multipart recording uploads, and AI image generation are intentionally not exposed.

OAuth scopes and write access

OAuth clients that connect via https://app.myarchivist.ai request scopes at authorization time. Every write tool (create/update/delete + image upload) additionally requires the agent_write scope on the caller's token.

The MCP mirrors the API's enforcement in tools/list: agent clients without agent_write see only the read tools, and receive a "tool not found" JSON-RPC error if they attempt to call a write tool anyway. API-key credentials and non-agent OAuth clients bypass this filter — the API is the authoritative gate for them and all tools remain visible.

Existing OAuth clients that connected before agent_write was advertised need to re-authorize to receive a token with the new scope.

Campaigns

ToolDescription
list_campaignsList your campaigns. Returns a paginated list.
get_campaignGet a specific campaign by ID.
get_campaign_statsGet statistics for a campaign: character count, session count, and more.
create_campaignCreate a new campaign. Subject to the account's subscription-tier campaign limit.
update_campaignPartially update campaign metadata (title, description, tones, public/mature flags).

Sessions

ToolDescription
list_sessionsList game sessions. Filter by session type or public-only.
get_sessionGet a session by ID. Optionally include related beats and moments.
get_session_cast_analysisGet cast analysis: talk-share breakdown and core session metrics.
get_session_transcriptGet the cleaned transcript for a game session, including utterances, full text, and aggregate stats.
get_session_handoutGet the generated session handout for a game session, including summary, outlines, spotlights, and notable moments.
patch_sessionPartial update (title, session_date, summary, notes, type, public, image). Explicit-link contract for wikilinks.

Story Structure

ToolDescription
list_beatsList beats ordered by index. Beats represent story moments (major, minor, step).
get_beatGet a specific beat by ID.
create_beatCreate a beat. Explicit-link contract for wikilinks.
update_beatPartially update a beat.
delete_beatDelete a beat (child beats have parent_id cleared).
list_momentsList Key Moments (Moments) in a campaign or session. Filter by label, categories (typically key-moment), or kind. Includes image and presentation metadata.
get_momentGet a Key Moment by ID, including image URL, categories, kind, and metadata.
create_momentCreate a Key Moment attached to a session. Set categories=["key-moment"] for a Key Moment card. Explicit-link contract for wikilinks.
update_momentPartially update a Key Moment, including image and merged presentation metadata.
delete_momentDelete a Key Moment.

Highlights

ToolDescription
list_hero_awardsList hero awards in a campaign or session.
get_hero_awardGet a hero award by ID.
create_hero_awardCreate a hero award attached to a session.
update_hero_awardPartially update a hero award.
delete_hero_awardDelete a hero award.
list_quotesList memorable session quotes in a campaign or session.
get_quoteGet a quote by ID.
create_quoteCreate a quote attached to a session (creates a recap pipeline if needed).
update_quotePartially update a quote.
delete_quoteDelete a quote.
list_spotlightsList recap spotlights (GEMS cards, not session-handout spotlights).
get_spotlightGet a recap spotlight by ID.
create_spotlightCreate a recap spotlight attached to a session.
update_spotlightPartially update a recap spotlight.
delete_spotlightDelete a recap spotlight.

World Building

ToolDescription
list_charactersList characters in a campaign. Filter by name, type (PC/NPC), or approval status.
get_characterGet a character by ID including aliases, backstory, and speaker linkage.
create_characterCreate a character. Description/backstory wikilinks auto-resolve.
update_characterPartially update a character. Read with with_links: true before editing description/backstory.
delete_characterDelete a character. API unbrackets all inbound [[alias]] references automatically.
list_factionsList factions. Factions represent guilds, organisations, or other groups.
get_factionGet a specific faction by ID.
create_factionCreate a faction. Description wikilinks auto-resolve.
update_factionPartially update a faction. Read with with_links: true before editing.
delete_factionDelete a faction.
list_locationsList locations. Locations can be nested (cities, taverns, dungeons, etc.).
get_locationGet a specific location by ID.
create_locationCreate a location. Description wikilinks auto-resolve.
update_locationPartially update a location. Read with with_links: true before editing.
delete_locationDelete a location (child locations have parent_id cleared).
list_itemsList items. Items include weapons, armour, artefacts, and other notable objects.
get_itemGet a specific item by ID.
create_itemCreate an item. Description wikilinks auto-resolve.
update_itemPartially update an item. Read with with_links: true before editing.
delete_itemDelete an item.

Quests

ToolDescription
list_questsList quests with pagination. Filter by status or category.
get_questGet a fully expanded quest: objectives, progress log, related entities, session provenance.
create_questCreate a quest entry. Quests do not participate in the wikilinks system.
update_questPartially update a quest. Lists you send replace their corresponding lists on the record.
delete_questDelete a quest and its objectives / progress entries / related refs.

Journals

ToolDescription
list_journalsList journal entries. Content omitted from list; use get_journal for full content.
get_journalGet a journal entry by ID including full content and permission level.
create_journalCreate a journal entry. Returns {success, id}.
update_journalUpdate a journal entry (PUT). Returns {success, id}.
delete_journalDelete a journal entry (embeddings are best-effort deleted).
list_journal_foldersList journal folders ordered by path and position for tree rendering.
get_journal_folderGet a specific journal folder by ID.
create_journal_folderCreate a journal folder (owners/admins only; path must be unique per campaign).
update_journal_folderUpdate a journal folder (PUT).
delete_journal_folderDelete a folder; entries move to the campaign root.

Relationships

ToolDescription
list_linksList links between entities. Filter by source/target entity and relationship alias.
create_linkCreate a Link row between two entities (upserts if (from_type, from_id, alias) collides).
update_linkUpdate an existing link's alias.
delete_linkDelete a single Link row (does not rewrite the source's text).
bulk_link_maintenanceTrigger campaign-wide link maintenance (add/remove/update) via webhook — requires an active subscription tier.

Images

ToolDescription
get_image_usageReturn the calling account's image quota for a campaign: used/limit, tier, can_access, and cycle window.
init_image_uploadStep 1 of direct upload: reserve an object_key and receive a presigned S3 PUT URL. The client then PUTs the raw image bytes to upload_url with the same Content-Type. Expires after expires_in_seconds.
complete_image_uploadStep 2 of direct upload: validate the uploaded object, run NSFW moderation, and (when attach: true) set the entity's image field to the moderated URL.
delete_entity_imageRemove an image. Provide entity_type + entity_id (detaches AND deletes the object) or image_url (deletes just the object).

Wikilinks

Descriptions, summaries, moment content, and journal bodies in Archivist AI can contain [[Target Name|Optional Alias]] markup that resolves to real records. Every write tool that touches a text field carrying wikilinks has to follow a small protocol to avoid destroying existing links.

The one rule you must follow

Always read with with_links: true before writing. Every Get/List tool for Character, Faction, Location, Item, Moment, Beat, Session, and Journal accepts this parameter. The API defaults to stripping wikilinks so that read consumers get clean prose, which means a naive read/modify/write cycle will erase every [[…]] on the source record. Passing with_links: true returns the text with brackets intact so you can preserve them on write.

Per-record contract

Record typeContract
Character, Faction, Location, Item, Character.backstoryAuto-resolve. On write, the API extracts [[…]] from your new text, matches each against records in the same campaign, and syncs the Link table (inserts new, updates changed, deletes removed). New [[Alias]] markup for a matchable target creates a Link automatically.
GameSession, Beat, MomentExplicit-link only. The API strips [[Alias]] markup that does NOT already have a matching Link row for that source. To add a wikilink, first call create_link with the correct from_type/from_id, then include [[Alias]] in the text on your write.
JournalRendering-only. Stored [[…]] markup renders as links on read with with_links: true but writes do not auto-populate the Link table. Use create_link (from_type=Journal) if you want persistent link tracking.
QuestNo wikilinks. Quest text fields are stored verbatim. Relationships are modelled via the related_* list fields, not wikilinks.
Delete (any record)The API automatically unbrackets all [[alias]] references to a deleted record across every referring text field. No manual cleanup is required.

Renaming and repointing

  • Rename an alias: edit inside the brackets. [[Alice|Al]] → [[Alice|Ali]].
  • Repoint at a different target: change the visible target name. [[Alice]] → [[Alicia]].
  • Remove a link: unbracket the alias in the text (auto-resolve) or call delete_link (explicit).
  • Campaign-wide rename or repoint for a compendium target: use bulk_link_maintenance with operation: "update", new_alias, and/or new_target_id. The API rewrites every referring text field in a background webhook and returns a task_id.

Images

Entity images can be added to Characters, Factions, Locations, Items, Moments, Sessions, and the Campaign itself via direct upload. The MCP server does not expose an AI image generation tool — image generation remains a product feature in the Archivist AI app and a REST endpoint on the API.

Direct upload (two-step)

For images the user already has on disk or in memory, use the presigned-URL flow:

  1. Call init_image_upload with campaign_id, entity_type, entity_id, file_name, and content_type (must be image/*). You receive object_key, upload_url, public_url, and expires_in_seconds.
  2. Your client (or a human collaborator) issues an HTTP PUT to upload_url with the raw image bytes and the same Content-Type header before the URL expires. This step happens outside the MCP transport.
  3. Call complete_image_upload with object_key, entity_type, entity_id, and attach (defaults to true). The API validates the upload, runs NSFW moderation, and — when attach is true — sets the entity's image field to the moderated public_url.

Agents that cannot make arbitrary HTTP PUTs should hand the PUT step off to a human between step 1 and step 3.

Removal

delete_entity_image removes an image within a campaign in one of two modes:

  • By entity: pass entity_type + entity_id. The API detaches the image from the record AND deletes the underlying object.
  • By URL: pass a managed image_url (e.g. from a previous init_image_upload response). Deletes just the object.

Troubleshooting

  • Authentication fails or tools return 401: reconnect the server and complete the OAuth sign-in again, or check that your API key is current in app.myarchivist.ai.
  • Write tools are missing (agent OAuth clients only): write tools are hidden from agent OAuth clients that lack the agent_write scope. Reconnect and approve write access. API keys and non-agent OAuth clients always see all tools; see OAuth scopes and write access.
  • Claude Desktop does not connect: it needs the mcp-remote proxy and Node.js; restart Claude Desktop after editing its config.
  • Wikilinks disappear after an edit: read the record with with_links: true before updating it. See Wikilinks.

Privacy and Support

來源:README.md,提交 31e2c4f

工具

0
該伺服器需要登入,因此 SourceWeft 無法在沒有帳號的情況下讀取其工具,也未收錄。已連接帳號所能看到的內容可能因帳號及其權限而異。

版本歷史

2
  1. v3.0.1最新Oct 24, 2026
  2. v1.0.0Sep 16, 2026

評分

已滿足適用檢查項的 85%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分