使用说明
项目简介
EasyChatDM 是一个演示如何创建 MCP (Model Context Protocol) 服务器工具的示例项目,专为龙与地下城 (D&D) 跑团游戏设计。它提供了一系列预言 (Oracle) 工具,可以帮助玩家和 DM (地下城城主) 在游戏过程中进行随机决策、生成灵感和丰富剧情。该项目基于 Spring AI MCP 框架构建,旨在教育用户如何开发 MCP 服务器工具,代码简洁易懂。
主要功能点
- 预言工具 (Oracles): 提供多种预言工具,包括:
- 确定性预言 (Deterministic Oracle): 回答明确的“是/否”问题,并带有强度等级(强是/否、弱是/否),用于快速决策。
- 主观性预言 (Subjective Oracle): 回答开放式问题,提供更具解释性和启发性的答案,用于触发新的剧情走向。
- NPC 动机 (NPC Motivation): 随机生成 NPC 的当前动机、情绪或心态。
- NPC 对话 (NPC Conversations): 提供 NPC 可能谈论的话题,用于启动或丰富 NPC 对话。
- 外貌描述 (Description Looks): 提供描述事物外观的灵感,例如细节、印象等。
- 可配置数据: 预言工具的数据(如对话话题、外貌描述)来源于项目目录下的文本文件,用户可以根据需要自定义这些文件来扩展或修改预言内容。
- 易于理解: 代码结构清晰,注释详尽,适合学习和理解 MCP 服务器工具的开发过程。
安装步骤
- 安装 Java: 确保您的计算机上已安装 JDK (Java Development Kit)。
- 安装 Maven 或 Gradle: 选择 Maven 或 Gradle 作为构建工具。如果未安装,请根据您的操作系统安装 Maven 或 Gradle。
- 克隆仓库: 使用 Git 克隆 EasyChatDM 仓库到本地:
git clone https://github.com/cote/EasyChatDM.git cd EasyChatDM - 构建项目: 在项目根目录下,使用 Maven 或 Gradle 构建项目。
- 使用 Maven: './mvnw package' (Windows: 'mvnw package')
- 使用 Gradle: './gradlew build' (Windows: 'gradlew build') 构建成功后,将在 'target' 目录下生成 JAR 文件 (例如 'easychatdm-0.0.1-SNAPSHOT.jar')。
服务器配置
MCP 客户端需要配置以下信息以连接到 EasyChatDM 服务器。这是一个 JSON 格式的配置示例,您需要根据实际情况进行调整:
{ "servers": [ { "name": "EasyChatDM Server", "command": "java", "args": [ "-jar", "path/to/easychatdm-0.0.1-SNAPSHOT.jar" ], "description": "EasyChatDM 示例 MCP 服务器,提供 D&D 跑团辅助工具。", "capabilities": [ "tools" ] } ] }
配置参数说明:
- '"name"': 服务器名称,可以自定义,例如 "EasyChatDM Server"。
- '"command"': 启动服务器的命令,这里是 'java'。
- '"args"': 启动命令的参数列表。
- '"-jar"': 指定运行 JAR 文件。
- '"path/to/easychatdm-0.0.1-SNAPSHOT.jar"': 请替换为实际的 JAR 文件路径。这个路径应该是 MCP 客户端能够访问到的服务器 JAR 文件路径。如果客户端和服务器在同一台机器上,可以使用相对或绝对路径。
- '"description"': 服务器的描述信息,方便客户端用户了解服务器的功能。
- '"capabilities"': 声明服务器提供的能力,这里声明了 '"tools"',表示该服务器提供工具功能。
重要提示:
- 请确保将 '"path/to/easychatdm-0.0.1-SNAPSHOT.jar"' 替换为您实际构建生成的 JAR 文件路径。
- MCP 客户端需要能够执行 'java' 命令并访问到指定的 JAR 文件。
基本使用方法
-
启动服务器: MCP 客户端配置完成后,启动 MCP 客户端,客户端会自动尝试连接到 EasyChatDM 服务器。
-
调用工具: 在 MCP 客户端中,您可以使用以下工具名称来调用 EasyChatDM 服务器提供的预言功能:
- 'EasyChatDM_Deterministic_Oracle' (确定性预言)
- 'EasyChatDM_Subjective_Oracle' (主观性预言)
- 'EasyChatDM_NPC_Motivation' (NPC 动机)
- 'EasyChatDM_NPC_Conversations' (NPC 对话)
- 'EasyChatDM_description_looks' (外貌描述)
例如,在支持工具调用的 LLM 应用中,您可以指示 LLM 使用 'EasyChatDM_Deterministic_Oracle' 工具来回答一个“是/否”问题,并提供问题背景作为工具的参数。服务器会返回预言结果给 LLM 应用,LLM 应用可以根据结果进行后续处理。
示例对话流程 (假设使用 Claude 客户端):
用户在 Claude 中输入: "Is there a hidden door behind the bookshelf?"
Claude 客户端 (如果配置了 EasyChatDM 服务器并启用了开发者模式) 可能会识别到这是一个适合使用 'EasyChatDM_Deterministic_Oracle' 工具的问题,并自动调用该工具,将问题背景 (例如 "checking for hidden door") 作为参数发送给 EasyChatDM 服务器。
EasyChatDM 服务器执行 'EasyChatDM_Deterministic_Oracle' 工具,随机返回一个确定性预言结果 (例如 "Yes")。
Claude 客户端接收到预言结果 "Yes",并将其融入到回复中,例如: "Yes, according to the oracle, there is a hidden door behind the bookshelf."
通过这种方式,EasyChatDM 服务器作为 MCP 服务器,为 LLM 应用提供了 D&D 跑团游戏的辅助功能。
信息
分类
生产力应用