mcp-rpg-worldstate
MCP RPG Worldstate
ローカルで動作し、システムに依存しないMCPサーバー。AIゲームマスターにロールプレイングゲームの世界の永続的な記憶を提供します。物語の内容は主に自由文として保存し、検索と一貫性に重要なものだけを構造化します:世界の所属、エンティティタイプ、場所、シーン、参加者、アクティブな状態です。
基本理念
保存されるのは、永続的または物語上重要な事実であり、一時的な観察ではありません。壊れた惑星規模の気象制御は重要かもしれませんが、風で変わった髪型は通常重要ではありません。
典型的な取得は意図的に段階的です:
list_worldsは既存のセーブデータを表示します。get_world_overviewはコンパクトなセーブプレビューを提供します。get_current_contextは直近のプレイ可能なシーンを読み込みます。search_entitiesは必要な場合にのみ詳細を取得します。
変更は apply_world_changes を使用して、単一のアトミックな呼び出しにまとめることができます。
新しく作成されたエンティティは、同じ呼び出し内でローカル参照を使用して相互に参照できます。コンパクトなイベントおよびチェックポイントアーカイブは、必要に応じて現在の状態がどのように生じたかを説明し、権威ある世界の状態を置き換えることはありません。
Related MCP server: Librarian
前提条件とインストール
Node.js 24以降(組み込みSQLiteモジュール用)
npm
npm install
npm run build
npm testサーバーはデフォルトで作業ディレクトリの rpg-worldstate.sqlite を使用します。安定した明示的な保存場所のためには、RPG_WORLDSTATE_DB を絶対パスとして設定する必要があります。
MCP設定
ローカルMCPクライアントは、stdioを介してサーバーを起動できます。一般的な設定パターンは次のとおりです:
{
"mcpServers": {
"rpg-worldstate": {
"command": "node",
"args": [
"/home/eurobertics/projects/mcp_rpg_worldstate/dist/index.js"
],
"env": {
"RPG_WORLDSTATE_DB": "/home/eurobertics/projects/mcp_rpg_worldstate/rpg-worldstate.sqlite"
}
}
}
}この設定の正確な場所は、使用するMCPクライアントによって異なります。サーバーはプロトコルメッセージをstderrにのみ書き込み、MCPプロトコルがstdoutでクリーンに保たれるようにします。
Windows上のClaude Desktop、サーバーはWSL内
Claude DesktopがWindowsで実行され、MCPサーバーがWSL内にインストールされている場合、Claudeは wsl.exe を介してサーバーを起動できます。設定は通常、次の場所にあります:
%APPDATA%\Claude\claude_desktop_config.json例:
{
"mcpServers": {
"rpg-worldstate": {
"command": "wsl.exe",
"args": [
"-d",
"Ubuntu",
"--exec",
"bash",
"-lc",
"cd /home/eurobertics/projects/mcp_rpg_worldstate && RPG_WORLDSTATE_DB=/home/eurobertics/projects/mcp_rpg_worldstate/rpg-worldstate.sqlite exec node dist/index.js"
]
}
}
}Ubuntu は使用するWSLディストリビューションの正確な名前と一致している必要があります。インストールされているディストリビューションは、PowerShellで次のコマンドを使用して表示できます:
wsl.exe --list --quietbash -lc はログインシェルを読み込みます。これは、Node.jsが fnm や nvm などのバージョンマネージャーを介してインストールされている場合に特に重要です。プロジェクトとデータベースのパスは、WSL内のLinuxパスです。完全なシェルコマンドは、JSON設定内の args の単一要素として残す必要があります。
起動は、Claude設定の前にPowerShellから直接確認できます:
wsl.exe -d Ubuntu --exec bash -lc "cd /home/eurobertics/projects/mcp_rpg_worldstate && RPG_WORLDSTATE_DB=/home/eurobertics/projects/mcp_rpg_worldstate/rpg-worldstate.sqlite exec node dist/index.js"起動が成功すると、stderrに例えば次のように表示されます:
mcp-rpg-worldstate is using /home/eurobertics/projects/mcp_rpg_worldstate/rpg-worldstate.sqliteプロセスはその後アクティブなまま、stdinを介してMCPメッセージを待ちます。これは期待される動作です。設定ファイルを変更した後は、Claude Desktopを完全に終了して再起動する必要があります。
ChatGPTの注意: この設定は、Claude Desktopのローカル
stdioトランスポートを使用しています。ChatGPT Desktopにそのまま適用することはできません。そのためには、サーバーをChatGPTがサポートするHTTPトランスポートと到達可能なURLを介して追加で提供する必要があります。
ツール
ツール | 目的 |
| すべてのセーブデータのコンパクトなリスト |
| 新しい独立した世界/キャンペーンを作成 |
| 永続的な世界の説明または要約を変更 |
| 世界を依存するすべてのデータとともに再帰的に削除 |
| エンティティをまとめて作成、変更、または削除 |
| キャラクター、場所、プロット、メモ、アイテムを検索 |
| 現在のシーンと参加者をコンパクトに記録 |
| トークン消費の少ないセーブプレビューを読み込む |
| 現在のプレイ可能なコンテキストを読み込む |
| プレイヤーセーフな振り返りとオプションのGMノートを保存 |
| 関連するイベントをページングまたはチェックポイント以降で読み取る |
| 古いセッションおよびチャプターの状態をページングして読み込む |
| 物語上の決定のための中立的な乱数 |
エンティティタイプは character、location、plot、note、item です。キャラクターまたはアイテムは、locationId を介して現在の場所を取得できます。場所は parentId でネストできます。シーンの参加はこれとは別です:短い共通のシーン変更が、すべての永続的な滞在場所を自動的に変更する必要はありません。
バッチ内のローカル参照
Create操作は、呼び出し内で一意の ref を定義できます。他の変更は、参照されたCreate操作が配列内で後にある場合でも、locationRef または parentRef でこれを参照できます:
{
"worldId": 1,
"changes": [
{
"action": "create",
"ref": "mara",
"kind": "character",
"name": "Mara",
"locationRef": "tavern"
},
{
"action": "create",
"ref": "cellar",
"kind": "location",
"name": "Weinkeller",
"parentRef": "tavern"
},
{
"action": "create",
"ref": "tavern",
"kind": "location",
"name": "Zum hinkenden Drachen"
}
],
"summary": "Mara und ihr Gasthaus wurden eingeführt."
}応答には、生成された数値IDを持つ createdRefs が含まれます。不明、重複、循環参照、および例えば locationId と locationRef の同時指定は、トランザクション全体を中断します。
イベント、秘密、チェックポイント
apply_world_changes の summary は、コンパクトな履歴イベントエントリを生成します。バッチが秘密のエンティティに関係する場合、要約は eventSecret: true で秘密としてマークするか、省略する必要があります。これにより、秘密の変更が誤って公開イベント履歴に表示されることはありません。
get_recent_events は、デフォルトで id DESC の順序でイベントを返し、後方ページングのための beforeId、テキスト検索、sinceCheckpointId をサポートします。各チェックポイントは内部に当時のイベント状態を保存するため、「このチェックポイント以降に何が起こったか?」を明確に答えることができます。
list_checkpoints は、古いチェックポイントも新しい順に返し、beforeId でページングします。
プレイヤーセーフなチェックポイント
新しい各チェックポイントは、2つの情報チャネルを分離します:
{
"worldId": 1,
"title": "Die Nacht im hinkenden Drachen",
"playerRecap": "Bernd fand im Keller eine königliche Münze. Mara behauptete, sie noch nie gesehen zu haben.",
"gmNotes": "Mara ist die verschwundene Königin."
}playerRecapは必須であり、既に観察された、明らかにされた、または合理的に知られている事実のみを対象とします。gmNotesはオプションであり、常にゲームマスター専用です。隠された正体、動機、原因、計画、場所、将来の展開は、決して
playerRecapに含めてはなりません。疑わしい場合は、情報は
gmNotes、秘密のエンティティ、または秘密のイベントに属します – 公開の振り返りには含めません。
サーバーはコンテンツを自動的に分類、修正、または再構成しません。呼び出し側のAIが正しい分類に責任を持ちます。エンティティとイベントは権威あるソースのままです。チェックポイントはコンパクトな物語のセーブプレビューです。
get_world_overview と list_checkpoints は、デフォルトで playerRecap のみを返します。gmNotes は、includeSecrets: true の場合にのみ別のフィールドとして出力されます。このオプションは、正当なゲームマスターコンテキストでのみ使用できます。両方のテキストがサーバーによって結合されることはありません。
create_checkpoint の以前の summary 入力は受け入れられなくなりました。これにより、新しい各クライアントは明示的にプレイヤーセーフな振り返りを作成する必要があります。
データベースマイグレーション
スキーマはSQLite PRAGMA user_version でバージョン管理されます。サーバー起動時に、古いデータベースはトランザクション内で自動的に現在の状態に移行されます。古いチェックポイントの summary コンテンツは、慎重を期して潜在的に秘密として扱われます:gmNotes に移され、公開的には中立的なメモに置き換えられます。古い要約が自動的にプレイヤーの知識として公開されることはありません。バージョン変更の前には、SQLiteファイルのバックアップを取ることをお勧めします。
オプションのCodexスキル
skills/rpg-worldstate-gm の下に、控えめな読み込み、関連する状態変更、秘密、チェックポイントのルールを備えた小さな付属スキルがあります。これはMCPサーバーや他のクライアントには必要ありません。
ローカルインストールの場合は、フォルダーを個人のCodexスキルディレクトリにコピーできます:
cp -R skills/rpg-worldstate-gm ~/.codex/skills/削除と一貫性
delete_world は、安全のため正確な確認 DELETE: <世界名> を要求します。その後、SQLiteは外部キーカスケードを介して、その世界のすべてのキャラクター、場所、プロット、シーン、チェックポイント、イベントを削除します。
異なる世界間のリンクは拒否されます。バンドルされた変更はトランザクションで実行されます:1つの変更が無効な場合、どれも保存されません。
開発
npm run dev
npm run check
npm test最も重要なファイルは次のとおりです:
src/store.ts:SQLiteスキーマ、検証、クエリsrc/server.ts:公開MCPツールと入力スキーマsrc/index.ts:ローカルstdioエントリポイントsrc/*.test.ts:データベースおよびMCPプロトコルテスト
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides persistent, local-first AI memory across sessions via MCP tools for storing, searching, and retrieving context from past interactions.1MIT
- AlicenseNot gradedqualityAmaintenanceProvides AI agents with persistent knowledge storage, enabling them to store, search, and retrieve text, documents, and files using semantic and keyword search via MCP tools.31Apache 2.0
- AlicenseAqualityDmaintenanceProvides persistent memory with semantic search for MCP-based AI agents, enabling them to store and recall information across sessions using vector embeddings.41MIT
- AlicenseCqualityCmaintenancePersistent semantic memory for MCP-compatible agents, enabling them to remember and recall text, audio, and documents across sessions.1066MIT
Related MCP Connectors
Shared, governed long-term memory for AI agents across tools and sessions via MCP and REST.
Your memory, everywhere AI goes. Build knowledge once, access it via MCP anywhere.
Shared long-term memory vault for AI agents with 20 MCP tools.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Eurobertics/mcp_rpg_worldstate'
If you have feedback or need assistance with the MCP directory API, please join our Discord server