天体MCP
MCP与Sillytavern一起使用。可能有效也可能无效。适用于Celestial Forge场景。
简短的回答:是的,这非常适合MCP服务器。您可以构建一个符合MCP标准的小型服务 真相之源 对于玩家的Forge状态(特权、CP、响应计数、成就),公开一个小的web UI进行手动编辑,并将其连接到SillyAvon中,这样LLM总是能看到最新的工作表。
这里有一个你可以实施的具体计划。
此MCP服务器的功能
- 商店:角色表(CP、响应计数器、等级、笔记)、解锁特权、库存/特制物品、成就。
- 供应:只读的“上下文数据包”大小用于提示,加上用于工具/UI的完整JSON。
- 更新:端点/工具调用,以添加/删除特权、授予CP、提前响应计数、记录成就/制作。
- 生存:通过web面板重新启动(SQLite/Postgres)、多会话和手动编辑。
- 可选地:预加载福利目录(您的
perks-database.json)因此AI/UI可以搜索/验证津贴。
最小架构
- 后端(MCP服务器):带有MCP适配器层的TypeScript(Express/fastify)或Python(FastAPI)。
- 数据库:SQLite便于本地部署;Postgres如果是多用户。
- 用户界面:小React/Vite管理员
/ui(列出/过滤特权、编辑工作表、撤消)。 - 认证:API密钥或localhost-only在开发期间;每个“世界/保存”的令牌。
- 模式:用于验证和迁移的JSON模式。
数据模型(精简但完整)
// characters
Character {
id: string, // UUID or short slug
name: string,
world: string, // optional campaign label
cp_total: number,
cp_spent: number,
response_count: number, // 0..9 (award CP at 10)
tier: string, // computed from CP or set manually
notes: string,
created_at: datetime,
updated_at: datetime
}
// unlocked perks (1:n with Character)
UnlockedPerk {
id: string,
character_id: string,
perk_id?: string, // from catalog, if known
name: string, // denormalized for custom perks
category: string, // Assistants / Breeding / Crafting:Artisan / ...
source: string, // origin universe or "homebrew"
cost_cp?: number,
description?: string,
acquired_at: datetime,
tags: string[]
}
// catalog (optional, loaded from perks-database.json)
PerkCatalog {
id: string,
name: string,
category: string,
source: string,
cost_cp: number,
description: string,
tags: string[]
}
// achievements / crafting logs (optional)
EventLog {
id: string,
character_id: string,
kind: "achievement" | "craft" | "award" | "spend" | "note",
payload: JSON, // freeform details
delta_cp?: number, // positive/negative for ledger
created_at: datetime
}MCP工具(LLM可以调用)
定义这些MCP“工具”,以便SillyTavern/AI可以 查询+修改 国家确定性。
阅读工具
forge.get_sheet({character_id})→ 已修剪的提示表:
- { cp_total, cp_spent, response_count, tier, top_perks:[..5], recent_events:[..5] }
forge.list_perks({character_id, q?, category?, limit?})
forge.search_catalog({q, category?, limit})(可选,用于提供建议)
编写工具
forge.add_perk({character_id, perk_id? | name, category, source, cost_cp?, description?})
forge.remove_perk({character_id, unlocked_perk_id})
forge.award_cp({character_id, amount, reason})
forge.spend_cp({character_id, amount, reason})
forge.tick_response({character_id})
- 服务器增量 response_count;如果它达到10→ 重置为0, award_cp(base_award) 并附加一个 EventLog.
forge.set_tier({character_id, tier})(或CP服务器端的计算层)
智能与安全
- 每个变异工具都接受一个可选
request_id因此重试不会重复应用。 - 服务器验证:不能花费超过可用CP;无法删除不存在的福利;如果提供了目录交叉检查。
快速接线(所以它永远不会“忘记”)
在SillyTavern中:
- 消息开始时:呼叫
forge.get_sheet并将紧凑块注入系统/上下文:
[FORGE STATE]
CP: 450 (Spent 300) | Tier: Forge Adept | Responses: 7/10
Perks (sample): A.I. Chip (Assistants, 600), Artisan (Crafting:Artisan, 100), Constructor Drone (Assistants, 200)
Recent: +50 CP (Spark cycle), Crafted "Silver Relic"- AI回复结束时:呼叫
forge.tick_response(服务器在10/10执行裁决)。
- 服务器返回更新的计数器,如果触发,则返回 cp_awarded 现场。
- 当玩家购买/解锁时:人工智能/工具调用
forge.add_perk和forge.spend_cp.
- 可选的:如果人工智能提出新的福利,它可以致电
forge.search_catalog建议有效条目。
因为 服务器 是真理的源泉 AI专用镜像 在提示中,您可以避免漂移或丢失。
Web UI功能(适合您/GM)
- 选择角色(或创建)。
- 活动表:CP、回复、层级、注释。
- Perk manager:添加(从目录或自定义)、编辑、删除。
- 分类账:撤销/重做最后N个事件。
- 目录浏览器:导入/更新
perks-database.json,按类别/来源/成本过滤。 - 导出/导入:按字符保存完整的JSON。
CP/响应逻辑(服务器端)
- 配置文件:
{
"spark_cycle_size": 10,
"cp_award_per_cycle": 50,
"tiers": [
{"name":"Spark Initiate","min_cp":0},
{"name":"Forge Adept","min_cp":500},
{"name":"Celestial Artisan","min_cp":1500},
{"name":"Architect of Realities","min_cp":3000}
]
}tick_response:
- response_count = (response_count + 1) % 10 - 如果翻车→ award_cp(cp_award_per_cycle) 并写一个 EventLog.
保持提示简洁
forge.get_sheet应返回 两种变体:
- summary_for_prompt (≤800–1200个字符)。 - full_sheet (用于UI或深度检查)。
- 提示的附加值列表:top N by 新近性 或 协同相关性 (服务器可以计算一个小集合)。
处理多个聊天/保存
- 使用
character_id+可选session_id因此不同的ST聊天可以引用相同的字符。 - 您还可以将角色克隆到新的“世界/保存”中。
安全与稳定
- 本地首次部署(
localhost:8787),CORS仅适用于SillyAvern主机。 - ST的标题中的简单API令牌,web UI的单独管理令牌。
- 每日JSON导出以进行备份。
有东西真好
- 制作层次:let
forge.craft_item({tier,...})按级别自动授予CP。 - 协同助手:服务器建议在添加新功能时提供补充功能(通过目录标签)。
- 冲突检查:防止互斥特权的可选规则。
