D&D游戏随机生成工具

EasyChatDM是一个用于D&D游戏的MCP服务器工具,提供随机问答、描述、事件和NPC生成功能,旨在为游戏增添不确定性和随机性。

  • by cote
  • Java
  • 本地部署
  • 16 星标
  • 更新于
在 GitHub 查看 cote/EasyChatDM

使用说明

EasyChatDM - 展示如何创建一个简单的MCP服务器工具

示例:用于与生成式人工智能一起玩Dungeons & Dragons(龙与地下城)的MCP服务器工具。这些工具如同预言者,用于决定随机的“是/否”问题,以及描述、事件、非玩家角色(NPC)等。它们就像是“随机表格”,当你想为游戏引入一些不确定性、曲折情节和随机性时,就可以使用这些工具。此项目旨在教育用途,因此对良好的代码设计关注较少。

这些工具是MCP服务器工具,能够与Claude桌面版及其他MCP客户端协同工作。它们是使用Spring AI MCP编写的。此项目旨在用于教育目的,因此并未过多考虑设计的优良性。相反,代码的编写注重的是便于逐步了解如何创建工具。

运行它

你应该复制内容中的内容(或:你应该将内容中的所有内容复制过来) src/main/easychatdmdir/prompts/ 翻译为中文是:“src/main/easychat目录/prompts/”。不过,这里的“easychatdmdir”可能是一个特定命名或拼写错误,通常我们可能会期望它是一个目录名,比如“easychat_dir”或直接“easychat”,但根据给出的原文,这里直接翻译为“easychatdmdir”。在实际应用中,建议根据上下文或项目规范来确定正确的目录名 to `~/.easychatdm` 可以翻译为“用户的主目录下的 .easychatdm 文件”。不过,通常在中文语境中,我们可能会简化为“用户的 .easychatdm 配置文件”或“用户的 easychatdm 目录(位于主目录下)”,具体取决于上下文和需要强调的方面。这里,“~”代表用户的主目录,`.easychatdm` 是一个隐藏文件或目录,通常用于存储特定应用程序(如 easychatdm)的配置或数据。这些是用于提示、预言(或“神谕”)等用途的文件。

数据库配置

《DM Journal》现在持久化存储到数据库中,而不是普通的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 true 对于 SQLite, false 适用于Postgres 启用时,将日志内容镜像到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}

致谢

更多

见 ChatDM项目 这是一个更复杂、功能更丰富且设计更优的EasyChatDM版本。

以下是 一些视频 审查项目:

  1. 视频系列的第一部分
    在那里,我搭建了一个非常简单的MCP着陆区。
  2. 在 视频系列的第二部分 在那里,我将构建一个基于文件的预言机(或数据库),并讲解如何使用Claude生成的日志,以及如何开始记录你自己的日志。
  3. 在 第三部分,我构建了一个MCP资源 作为DM日志,用于在游戏回合之间持久保存游戏信息。
  4. 最后, 我终于着手制作一个MCP提示(或:我终于开始制作一个MCP提示了)这真的令人兴奋。
    这是首次瞥见某种具有“自主性”的东西

密切关注 播放列表 对于之后陆续发布的其他视频。

参考文献

版本

  • 0.0.4 - DM 日志默认存储在 SQLite 中,可通过系统属性切换到 PostgreSQL。
  • 0.0.3 - 相对稳定,在转换为使用服务进行DM日志存储之前。此版本仍依赖于文件访问。