关于 EasyChatDM - Demonstrates creating a simple MCP Server tools
EasyChatDM 是用于演示如何创建 MCP 工具的 D&D 示例项目,面向学习 Spring AI MCP 的开发者。它提供随机判定、事件与角色描述等游戏素材,并包含可持久化的 DM 日志。
主要功能
- 01提供随机判定与游戏素材
- 02包含 DM Journal 持久化
- 03默认使用 SQLite,可切换 PostgreSQL
- 04示例涵盖工具、资源与提示词
适用场景
- 01为 D&D 游戏生成随机结果
- 02在游戏中引入事件或角色
- 03学习创建 Spring AI MCP 工具
MCP 相关
该项目提供供 Claude desktop 等 MCP 客户端使用的工具,并展示 MCP 资源与提示词的实现。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
EasyChatDM - 演示如何创建简单的 MCP 服务工具
用于与生成式 AI 一起玩《龙与地下城》的 MCP 服务工具示例。这些工具是占卜器,可用于判定随机的是/否问题,也可生成描述、事件、NPC 等内容。它们是“随机表”,可在游戏中引入不确定性、转折和随机性时使用。本项目用于教育目的,因此不太注重代码设计。
这些 MCP 服务工具可与 Claude 桌面版及其他 MCP 客户端配合使用。它们基于 Spring AI MCP 编写。本项目用于教育,因此不考虑良好的设计。相反,代码的编写方式旨在让人们能够轻松地逐步了解如何创建工具。
运行
你应该将 src/main/easychatdmdir/prompts/ 中的内容复制到 ~/.easychatdm。这些文件用于提示词、占卜器等。
数据库配置
DM 日志现在会保存到数据库,而不是普通 JSON 文件。本地运行时默认使用 SQLite,数据库文件存储在 ~/.easychatdm/easychatdm.db 下。SQLite 和 PostgreSQL 之间的切换完全通过系统属性或环境变量控制。
可用属性
| 属性 | 默认值 | 描述 |
|---|---|---|
easychatdm.dir | ${user.home}/.easychatdm | 提示词/占卜器的基础目录;使用 SQLite 时,也是数据库文件的位置。 |
easychatdm.db.type | sqlite | 选择 sqlite(本地文件)或 postgres(远程数据库)。 |
easychatdm.db.sqlite.path | (根据 easychatdm.dir 推导) | 覆盖 SQLite 数据库的完整路径。如果设置为目录,则会在后面追加下方的文件名。 |
easychatdm.db.sqlite.file-name | easychatdm.db | 在解析出的目录下创建 SQLite 数据库时使用的名称。 |
easychatdm.db.sqlite.pool-size | 1 | 使用 SQLite 时的 HikariCP 连接池大小(通常保持为 1)。 |
easychatdm.db.postgres.url | (db.type=postgres 时必需) | PostgreSQL 实例的 JDBC URL。 |
easychatdm.db.postgres.username | (db.type=postgres 时必需) | 数据库用户名。 |
easychatdm.db.postgres.password | (空字符串) | 数据库密码。 |
easychatdm.db.postgres.pool-size | 4 | 使用 PostgreSQL 时的 HikariCP 连接池大小。 |
easychatdm.journal.export-files | SQLite 时为 true,Postgres 时为 false | 启用后,将日志内容同步到 JSON/Markdown 文件。 |
对于 Cloud Foundry(或任何远程部署),请使用 JAVA_OPTS 设置系统属性,例如:
JAVA_OPTS: >-
-Deasychatdm.db.type=postgres
-Deasychatdm.db.postgres.url=${JDBC_DATABASE_URL}
-Deasychatdm.db.postgres.username=${JDBC_DATABASE_USERNAME}
-Deasychatdm.db.postgres.password=${JDBC_DATABASE_PASSWORD}
致谢
- 部分占卜值和方案取自 JeansenVaars 的 Play By Writing,以及 PUM、GUM 等系统。
更多内容
请参阅 ChatDM 项目,了解这个 EasyChatDM 更复杂、功能更丰富、设计也稍好的版本。
以下是一些介绍该项目的视频:
- 视频系列第一部分
我在其中构建了一个非常简单的 MCP 工具平台。 - 在视频系列第二部分中,我构建了基于文件的占卜器,并介绍如何使用 Claude 生成的日志,以及如何开始记录自己的日志。
- 在第三部分中,我构建了 MCP 资源,用作 DM 日志,在游戏场次之间保存游戏信息。
- 最后,我终于着手制作 MCP 提示词,这真的令人兴奋。
这是第一次展示一些带有“Agent 特性”的内容。
请留意播放列表,后续视频发布后会陆续添加。
参考资料
- 在 Claude 桌面版中启用开发者模式
- ChatDM 项目 - 功能更完善、设计更出色、工具更多的 ChatDM 工具。
- Dan Vega 的 MCP 示例。
- Plot Unfolding Machine - 部分提示词基于 JeansenVaar 的 PUM 系统,该系统采用 CC BY-NC-SA 4.0 许可。
- 我使用 ChatGPT 和生成式 AI 玩 D&D 的体验 - 记录我如何与 AI 一起玩 D&D 的视频笔记。
版本
- 0.0.4 - DM 日志默认存储在 SQLite 中,可通过系统属性切换为 PostgreSQL。
- 0.0.3 - 相对稳定的版本,尚未转换为使用服务存储 DM 日志。此版本仍依赖文件访问。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。