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}致谢
- 一些使用的占卜数值和方案来自 JeansenVaars的即兴创作游戏(或:边写边玩的游戏)以及PUM、GUM等系统。
更多
见 ChatDM项目 这是一个更复杂、功能更丰富且设计更优的EasyChatDM版本。
以下是 一些视频 审查项目:
在那里,我搭建了一个非常简单的MCP着陆区。
- 在 视频系列的第二部分 在那里,我将构建一个基于文件的预言机(或数据库),并讲解如何使用Claude生成的日志,以及如何开始记录你自己的日志。
- 在 第三部分,我构建了一个MCP资源 作为DM日志,用于在游戏回合之间持久保存游戏信息。
- 最后, 我终于着手制作一个MCP提示(或:我终于开始制作一个MCP提示了)这真的令人兴奋。\
这是首次瞥见某种具有“自主性”的东西
密切关注 播放列表 对于之后陆续发布的其他视频。
参考文献
- 在Claude桌面版中启用开发者模式
- ChatDM项目 - 更加先进、设计更佳的ChatDM工具,具备更多功能等。
- Dan Vega的MCP示例.
- 情节展开机(或:故事发展机制/情节推进器) - 一些提示基于JeansenVaar的PUM系统,该系统遵循CC BY-NC-SA 4.0许可协议。
- 我与ChatGPT和生成式AI一起玩《龙与地下城》(Dungeons & Dragons)的体验 - 我与AI玩《龙与地下城》(Dungeons & Dragons)的视频笔记。
版本
- 0.0.4 - DM 日志默认存储在 SQLite 中,可通过系统属性切换到 PostgreSQL。
- 0.0.3 - 相对稳定,在转换为使用服务进行DM日志存储之前。此版本仍依赖于文件访问。
