关于 Archivist AI
Archivist AI MCP Server 将 Archivist AI 的 TTRPG 战役资料接入 AI 客户端,面向游戏主持人和玩家。它覆盖角色、场景、地点、任务、日志等内容,并提供读取与编辑工具。
主要功能
- 01读取战役、场次和转录文本
- 02管理角色、阵营、地点与物品
- 03创建和更新任务与日志
- 04查询剧情节点、关键时刻和摘录
- 05管理实体之间的关联
适用场景
- 01查询最近一场游戏的摘要
- 02创建并关联 NPC、阵营与地点
- 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 中。通过 .github/workflows/publish-mcp.yml 自动根据版本标签发布到 官方 MCP 注册表(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”。
提示词示例
- “列出我的所有战役,然后总结我的《Strahd 的诅咒》战役最近一场游戏的内容。”
- “创建一名名为 Mirelle Voss 船长的新 NPC,她是一名为 Silver Hand 派系效力的走私者,并将她关联到 Dusk 港地点。”
- “在我的战役中添加名为‘找回月长石’的任务,然后列出所有尚未完成的任务及相关角色。”
可用工具
读取工具不会产生破坏性影响,且具有幂等性。写入工具遵循标准 REST 语义——删除操作具有破坏性且幂等;PATCH 非幂等;PUT 幂等。所有返回包含文本的描述(角色、派系、地点、物品、时刻、节拍、游戏场次、日志)的读取工具都接受可选的 with_links 参数——请参阅下方的 Wiki 链接,了解为何在编辑前几乎总是应传入 with_links: true。
以下内容不会开放:删除战役、删除游戏场次、仅产品视图端点(节拍重新排序/批量编辑、战役设置、演员阵容/成员管理)、分段录音上传,以及 AI 图像生成。
OAuth 作用域与写入权限
通过 https://app.myarchivist.ai 连接的 OAuth 客户端会在授权时请求作用域。每个写入工具(创建/更新/删除 + 图像上传)还要求调用方的令牌具有 agent_write 作用域。
MCP 会在 tools/list 中遵循 API 的权限控制:不具备 agent_write 的 Agent 客户端只能看到读取工具;即使尝试调用写入工具,也会收到“找不到工具”的 JSON-RPC 错误。API 密钥凭据和非 Agent 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 | 按索引顺序列出故事节拍。故事节拍代表故事时刻(主要、次要、步骤)。 |
get_beat | 按 ID 获取指定的故事节拍。 |
create_beat | 创建故事节拍。维基链接采用显式链接约定。 |
update_beat | 部分更新故事节拍。 |
delete_beat | 删除故事节拍(子故事节拍的 parent_id 将被清空)。 |
list_moments | 列出战役或场次中的关键时刻(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 | 创建角色。描述和背景故事中的 wikilink 会自动解析。 |
update_character | 部分更新角色。编辑描述或背景故事前,请使用 with_links: true 读取。 |
delete_character | 删除角色。API 会自动移除所有入站 [[alias]] 引用的方括号。 |
list_factions | 列出派系。派系代表公会、组织或其他团体。 |
get_faction | 按 ID 获取指定派系。 |
create_faction | 创建派系。描述中的 wikilink 会自动解析。 |
update_faction | 部分更新派系。编辑前,请使用 with_links: true 读取。 |
delete_faction | 删除派系。 |
list_locations | 列出地点。地点可以嵌套(城市、酒馆、地牢等)。 |
get_location | 按 ID 获取指定地点。 |
create_location | 创建地点。描述中的 wikilink 会自动解析。 |
update_location | 部分更新地点。编辑前,请使用 with_links: true 读取。 |
delete_location | 删除地点(子地点的 parent_id 会被清空)。 |
list_items | 列出物品。物品包括武器、盔甲、神器和其他重要对象。 |
get_item | 按 ID 获取指定物品。 |
create_item | 创建物品。描述中的 wikilink 会自动解析。 |
update_item | 部分更新物品。编辑前,请使用 with_links: true 读取。 |
delete_item | 删除物品。 |
任务
| 工具 | 描述 |
|---|---|
list_quests | 分页列出任务。可按状态或类别筛选。 |
get_quest | 获取完整展开的任务:目标、进度日志、相关实体和会话来源。 |
create_quest | 创建任务条目。任务不参与 wikilink 系统。 |
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 | 在两个实体之间创建一行 Link(如果 (from_type, from_id, alias) 冲突,则执行 upsert)。 |
update_link | 更新现有链接的别名。 |
delete_link | 删除单行 Link(不会重写源文本)。 |
bulk_link_maintenance | 通过 webhook 触发战役范围的链接维护(添加/移除/更新)——需要有效的订阅等级。 |
图片
| 工具 | 描述 |
|---|---|
get_image_usage | 返回当前调用账户在某个战役中的图片配额:used/limit、tier、can_access 和周期时间范围。 |
init_image_upload | 直接上传的第 1 步:预留一个 object_key,并获取预签名 S3 PUT URL。然后,客户端使用相同的 Content-Type 将原始图片字节 PUT 到 upload_url。有效期为 expires_in_seconds。 |
complete_image_upload | 直接上传的第 2 步:验证已上传的对象,执行 NSFW 审核,并在 attach: true 时将实体的 image 字段设为审核后的 URL。 |
delete_entity_image | 移除图片。提供 entity_type + entity_id(解除关联并删除对象),或提供 image_url(仅删除对象)。 |
Wikilinks
Archivist AI 中的描述、摘要、事件内容和日志正文可以包含 [[Target Name|Optional Alias]] 标记,这些标记会解析为实际记录。所有涉及带有 wikilinks 的文本字段的写入工具都必须遵循一个简单的协议,以免破坏现有链接。
必须遵守的一条规则
写入前始终使用 with_links: true 读取。 Character、Faction、Location、Item、Moment、Beat、Session 和 Journal 的所有 Get/List 工具都接受此参数。API 默认会剥离 wikilinks,以便读取方获取干净的文本,这意味着简单的读取/修改/写入操作会删除源记录中的所有 [[…]]。传入 with_links: true 会返回保留方括号的文本,以便你在写入时保留这些标记。
每种记录的约定
| 记录类型 | 约定 |
|---|---|
| Character、Faction、Location、Item、Character.backstory | 自动解析。 写入时,API 会从新文本中提取 [[…]],在同一战役中匹配每个标记对应的记录,并同步 Link 表(插入新记录、更新已更改的记录、删除已移除的记录)。与可匹配目标对应的新 [[Alias]] 标记会自动创建 Link。 |
| GameSession、Beat、Moment | 仅显式链接。 对于没有对应源记录 Link 行的 [[Alias]] 标记,API 会将其剥离。要添加 wikilink,先使用正确的 from_type/from_id 调用 create_link,然后在写入文本时加入 [[Alias]]。 |
| Journal | 仅渲染。 存储的 [[…]] 标记会在使用 with_links: true 读取时渲染为链接,但写入时不会自动填充 Link 表。如果需要持久化链接跟踪,请使用 create_link(from_type=Journal)。 |
| Quest | 不支持 wikilinks。 Quest 文本字段会原样存储。关系通过 related_* 列表字段建模,而不是通过 wikilinks。 |
| 删除(任何记录) | API 会自动从所有引用该记录的文本字段中移除其 [[alias]] 引用的方括号。无需手动清理。 |
重命名和重新指向
- 重命名别名:编辑方括号内的内容。
[[Alice|Al]]→[[Alice|Ali]]。 - 重新指向其他目标:更改可见的目标名称。
[[Alice]]→[[Alicia]]。 - 移除链接:在文本中移除别名的方括号(自动解析),或调用
delete_link(显式)。 - 对百科目标进行战役范围的重命名或重新指向:使用
bulk_link_maintenance,并传入operation: "update"、new_alias和/或new_target_id。API 会通过后台 webhook 重写所有引用文本字段,并返回一个task_id。
图片
可通过直接上传为 Character、Faction、Location、Item、Moment、Session 以及战役本身添加实体图片。MCP 服务不提供 AI 图片生成工具——图片生成仍是 Archivist AI 应用中的产品功能,也是 API 上的 REST 端点。
直接上传(两步)
对于用户已保存在磁盘或内存中的图像,请使用预签名 URL 流程:
- 调用
init_image_upload,并提供campaign_id、entity_type、entity_id、file_name和content_type(必须为image/*)。你会收到object_key、upload_url、public_url和expires_in_seconds。 - 你的客户端(或人类协作者)在 URL 过期前,向
upload_url发起 HTTPPUT请求,上传原始图像字节,并使用相同的Content-Type标头。此步骤在 MCP 传输之外进行。 - 使用
object_key、entity_type、entity_id和attach(默认为true)调用complete_image_upload。API 会验证上传内容、执行 NSFW 审核,并在attach为true时将实体的image字段设为审核后的public_url。
无法发起任意 HTTP PUT 请求的 Agent,应在步骤 1 和步骤 3 之间将 PUT 步骤交由人工完成。
移除
delete_entity_image 可通过以下两种模式之一,移除某个 campaign 中的图像:
- 按实体移除:传入
entity_type+entity_id。API 会从记录中解除图像关联,并删除底层对象。 - 按 URL 移除:传入受管理的
image_url(例如来自之前init_image_upload的响应)。仅删除对象。
故障排查
- **身份验证失败或工具返回 401:**重新连接服务并再次完成 OAuth 登录,或检查 app.myarchivist.ai 中的 API 密钥是否为最新版本。
- **缺少写入工具(仅适用于 Agent OAuth 客户端):**缺少
agent_write作用域的 Agent OAuth 客户端不会显示写入工具。重新连接并批准写入权限。API 密钥和非 Agent OAuth 客户端始终可以看到所有工具;请参阅 OAuth 作用域和写入权限。 - **Claude Desktop 无法连接:**它需要
mcp-remote代理和 Node.js;编辑配置后,请重启 Claude Desktop。 - **编辑后 Wikilinks 消失:**更新记录前,请使用
with_links: true读取记录。请参阅 Wikilinks。
隐私与支持
- 隐私政策: https://www.myarchivist.ai/privacy
- 支持与安全联系邮箱: [email protected]
- 社区: Discord
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。