EasyChatDM - Demonstrates creating a simple MCP Server tools について
EasyChatDMは、Spring AI MCPでのMCPツール作成を学ぶ開発者向けのD&Dサンプルプロジェクトです。ランダム判定やゲーム素材を提供し、DMジャーナルを永続化します。
主な機能
- 01ランダム判定とゲーム素材を提供
- 02DMジャーナルを永続化
- 03標準のSQLiteと選択可能なPostgreSQL
- 04ツール、リソース、プロンプトの実装例
活用シーン
- 01D&Dセッションのランダムな結果生成
- 02ゲームへのイベントやキャラクターの追加
- 03Spring AI MCPツールの作成学習
MCP 対応
Claude desktopなどのMCPクライアント向けにツールを提供し、MCPリソースとプロンプトの実装例も示します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
EasyChatDM - シンプルな MCP サーバーのツール作成を紹介します
生成 AI で D&D をプレイするための MCP サーバーのツールの例です。これらのツールは、ランダムな「はい/いいえ」の質問だけでなく、描写、イベント、NPC などを決めるために使うオラクルです。ゲームに不確実性や意外な展開、ランダム性を取り入れたいときに使う「ランダム表」です。このプロジェクトは教育目的のため、適切なコード設計にはあまり配慮していません。
これらは Claude のデスクトップアプリやその他の MCP クライアントで動作する MCP サーバーのツールです。Spring AI MCP で記述されています。このプロジェクトは教育目的のため、優れた設計については考慮していません。その代わり、ツールの作成方法を手順に沿って簡単に追えるようにコードを記述しています。
実行方法
src/main/easychatdmdir/prompts/ の内容をすべて ~/.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 | 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's Play By Writing のオラクル値や方式の一部、および PUM、GUM などのシステムを使用しています。
詳細
この EasyChatDM をより複雑にし、機能を充実させ、設計を多少改善したバージョンについては、ChatDM プロジェクトをご覧ください。
プロジェクトを解説する動画はこちらです。
- 動画シリーズのパート 1
非常にシンプルな MCP ツールランドを作成します。 - 動画シリーズのパート 2 では、ファイルベースのオラクルを作成し、Claude が作成するログの使い方を確認して、自分でログを取り始めます。
- パート 3 では、DM Journal としてゲーム情報をプレイセッション間で保持するための MCP リソースを作成します。
- 最後に、MCP プロンプトを作成します。これは本当にわくわくします。
「エージェント的」と感じられるものを初めて垣間見ることができます。
残りの動画が公開されたら、プレイリストをぜひご覧ください。
参考資料
- 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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。