MythWeaver 是一个使用 Gradio 和模型上下文协议(MCP)构建的多模态、代理叙事系统。其核心创新是一个自定义叙事引擎 MCP 服务器,该服务器提供了一种可复用工具,用于任何应用程序的上下文感知叙事生成。用户通过文本以及可选的地图/草图上传进行交互。系统解释绘制内容,将其转换为结构化的场景图,生成风格化地图,并利用叙事引擎 MCP 动态生成目标、情节钩子和叙事机会。
新颖贡献: 叙事引擎 MCP 服务器提供了领域无关的叙事生成工具,可用于游戏、互动小说、写作工具、桌面角色扮演游戏助手和教育应用。
用户
└── Gradio UI
├── 文本输入
├── 图像上传
└── 任务选择
│
▼
Claude 4.5 Sonnet (Anthropic, 调度器)
├── 世界记忆推理
├── 叙事生成
├── 工具选择与路由
└── 多步规划
│
├── ⭐ 叙事引擎 MCP (自定义 - 我们的新颖贡献)
│ → generate_narrative_objectives(context, genre, count)
│ → analyze_narrative_opportunities(scene_graph, entities)
│ → 返回带有叙事钩子的结构化目标
│
├── Gemini Vision MCP (Google)
│ → parse_scene(image) → 场景图
│
├── 地图生成器 MCP (Flux/SDXL)
│ → generate_map(scene_graph) → 风格化地图图像
│
└── 记忆存储 MCP
→ update_world(locations, NPCs, events)
→ query_world() → 世界状态
│
▼
Gradio 输出显示
├── 故事文本
├── 生成的地图
└── 任务选项
关键点: ⭐ = 为本次黑客马拉松构建的新颖 MCP 服务器
| MCP 服务器 | 目的 | 状态 |
|---|---|---|
| ⭐ 叙事引擎 MCP | 上下文感知的叙事生成 | 自定义 - 我们的贡献 |
| Gemini Vision MCP | 从草图中提取场景图 | 现有 |
| 地图生成器 MCP | 高分辨率地图生成 | 现有/自定义 |
| 记忆存储 MCP | 持久的世界状态 | 现有 |
暴露的工具:
# 工具 1: generate_narrative_objectives
输入:
- context: dict # 世界状态、实体、关系
- narrative_style: str # 类型/语气(奇幻、科幻、神秘等)
- count: int # 目标数量(1-5)
- difficulty: str # 简单、中等、困难
输出:
- 目标列表,包括:
- description: str
- narrative_hook: str # 这对故事为什么重要
- success_criteria: list
- conflicts: list # 潜在障碍/反派
- related_entities: list # 涉及的NPC、地点
- estimated_complexity: str
# 工具 2: analyze_narrative_opportunities
输入:
- scene_graph: dict # 结构化场景数据
- character_state: dict # 角色关系、目标、冲突
输出:
- 叙事机会列表:
- opportunity_type: str # 冲突、神秘、浪漫、发现等
- description: str
- involved_entities: list
- dramatic_potential: float
实现:
mcp SDK 的 Python MCP 服务器| 工具 | 目的 | 类型 |
|---|---|---|
| ⭐ 叙事引擎 MCP | 上下文感知的叙事生成 | 自定义 |
| Gemini Vision MCP | 草图 → 场景图 | 现有 |
| 地图生成器 MCP | 场景图 → 地图图像 | 现有/自定义 |
| 记忆存储 MCP | 持久的世界状态 | 现有 |
uv sync
uv run python app.py
/mythweaver
├── app.py # 主要的 Gradio 应用程序
├── README.md
├── pyproject.toml
├── .gitignore
│
├── /mcp_servers
│ └── narrative_engine/ # ⭐ 自定义叙事引擎 MCP 服务器
│ ├── server.py # MCP 服务器实现
│ ├── schemas.py # 叙事对象的 Pydantic 模型
│ ├── generator.py # 基于 LLM 的叙事逻辑
│ └── README.md # 用于复用的独立文档
│
├── /mcp_clients # 现有 MCP 服务器的客户端集成
│ ├── gemini_vision.py # Gemini Vision MCP 客户端
│ ├── map_generator.py # 地图生成器 MCP 客户端
│ └── memory_store.py # 记忆存储 MCP 客户端
│
├── /prompts
│ ├── orchestrator.md # Claude 系统提示
│ └── narrative_generation.md # 叙事引擎提示
│
├── /demos
│ └── cli_demo.py # 使用叙事引擎 MCP 的独立 CLI
│
└── /assets
└── example_maps/ # 测试用的示例草图
叙事引擎 MCP 服务器可以被以下群体采用: