NetStone.MCP について
NetStone.MCPは、LLMクライアントやエージェント向けのFFXIVデータ用MCPサーバーです。Lodestoneのキャラクター・ソーシャル情報に加え、収集品、製作、ハウジング、ニュース、Wiki、ストア情報を扱い、StdioとHTTP/SSEに対応します。
主な機能
- 01Lodestoneのキャラクター・ソーシャル情報検索
- 02収集品とアンロック情報の検索
- 03中国語Wikiの検索と要約
- 04アイテムと製作レシピの参照
- 05ハウジング空き区画と抽選情報の参照
- 06ニュース、パッチ、ストア商品の確認
活用シーン
- 01キャラクターのクラス・ジョブレベルとFCの確認
- 02収集品の入手元や解放条件の調査
- 03製作素材とレシピの確認
- 04ハウジング区画やメンテナンス予定の確認
MCP 対応
FFXIVデータの検索機能をツールとしてMCPクライアントに公開します。StdioとHTTP/SSEのトランスポートに対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
NetStone.MCP
.NET 8 で構築された、Final Fantasy XIV 用の Model Context Protocol (MCP) サーバーです。
NetStone.MCP は、LLM クライアント(Claude Desktop、Cursor、ChatGPT、カスタム Discord ボット、自律型エージェント)を FFXIV のゲームデータに直接接続します。公式 Lodestone のキャラクター情報と FC 情報、PaissaDB のリアルタイムなハウジング空き状況、FFXIV Collect のアイテムとマウント、XIVAPI v2 のレシピ、コミュニティの世界設定や Wiki データベースを利用できます。
Stdio(ローカルプロセス)と HTTP / SSE(リモートサーバー)の両方のトランスポートモードに対応しています。
データソース
| ソース | 連携機能 | 提供される機能 |
|---|---|---|
| NetStone | Lodestone スクレイパー | キャラクタープロフィール、クラス/ジョブレベル、マウント数、フリーカンパニー、リンクシェル |
| PaissaHouse | PaissaDB API | 購入可能なハウジング区画、サイズ、価格、抽選への応募状況のリアルタイム情報 |
| FFXIV Collect | Collect API | マウント、ミニオン、エモート、髪型、オーケストリオン、青魔法、チョコボ装甲、ファッション、アチーブメント |
| Huiji Wiki | MediaWiki API | 世界設定、クエスト、ダンジョン/レイド、ボスのギミック、アイテム、翻訳 |
| XIVAPI v2 | XIVAPI REST | アイテム検索、製作レシピ、素材の内訳 |
| FFXIV Lodestone News | ニュース API | 公式メンテナンス予定、トピック、ニュース記事 |
| Thaliak | パッチトラッカー | 最新のゲームクライアントと拡張版のバージョン番号 |
| Square Enix Store | ストアスクレイパー | オンラインストアのカテゴリ、新商品、割引商品 |
クイックスタート
1. Claude Desktop(Stdio モード)
NetStone.MCP を claude_desktop_config.json に追加します。
{
"mcpServers": {
"netstone-mcp": {
"command": "dotnet",
"args": [
"run",
"--project",
"C:\\path\\to\\NetStoneMCP\\src\\NetStoneMCP.csproj",
"--no-build"
]
}
}
}
2. HTTP / SSE モード(Cursor、VS Code、リモートクライアント)
NetStone.MCP を SSE トランスポートで起動します。
export TransportType=SSE
dotnet run --project src/NetStoneMCP.csproj
MCP SSE エンドポイントは次のアドレスで待ち受けます。
http://localhost:5000/sse
3. Docker Compose(サーバー + Discord ボット)
1 つのコマンドで NetStoneMCP とサンプルの Discord ボットを起動します。
cp .env.example .env
# Edit .env and supply OPENAI_API_KEY and DISCORD_BOT_KEY
docker compose up -d --build
利用可能な MCP ツール
キャラクターとソーシャル(Lodestone)
| ツール | 説明 |
|---|---|
get_player_info | 名前とワールドを指定して、キャラクタープロフィール(レベル、アバター、グランドカンパニー、FC、プロフィール文)を取得します。 |
get_player_class_job | キャラクターの全戦闘クラス、クラフター、ギャザラーのレベルを取得します。 |
get_character_mount_count | キャラクターが所持しているマウントの総数を取得します。 |
get_fc_information | フリーカンパニーのプロフィール、ランク、スローガン、有効なカンパニーアクションを取得します。 |
get_fc_members | フリーカンパニーの全メンバー一覧を取得します。 |
get_crossworld_linkshell_information | 名前とデータセンターを指定して、CWLS のプロフィールとメンバー一覧を取得します。 |
get_linkshell_information | 名前とワールドを指定して、リンクシェルのプロフィールとメンバー一覧を取得します。 |
コレクションアイテムとアンロック要素(FFXIV Collect)
| ツール | 説明 |
|---|---|
get_ffxiv_mount | マウントの入手方法、搭乗人数、パッチ、取引可否を取得します。 |
get_ffxiv_minion | ミニオンのドロップ場所、入手方法、説明を取得します。 |
get_ffxiv_emote | エモートの解放コマンド(/emote)、入手方法、パッチを取得します。 |
get_ffxiv_hairstyle | 髪型「ヘアカタログ」の入手方法(MGP、PvP、ボズヤなど)を取得します。 |
get_ffxiv_orchestrion | オーケストリオン譜の番号、カテゴリ、ドロップ元を取得します。 |
get_ffxiv_blue_mage_spell | 青魔法の習得条件(マスクカーニバル、ダンジョン、フィールドのモンスター)を取得します。 |
get_ffxiv_barding | チョコボ装甲の入手方法と取引可否を取得します。 |
get_ffxiv_fashion | ファッションアクセサリー(翼、傘/日傘、眼鏡、バックパック)を取得します。 |
get_ffxiv_achievement | アチーブメントポイント、達成条件、報酬(称号、マウント、アイテム)を取得します。 |
search_ffxiv_collectable | すべてのコレクションアイテムのカテゴリを横断して検索します。 |
設定與 Wiki データベース(Huiji Wiki / 灰機Wiki / 灰机Wiki)
| ツール | 説明 |
|---|---|
search_huiji_wiki | クエスト、ダンジョン、設定、NPC、ギミックを対象に、中国語の FFXIV データベースを検索します。自然言語での検索に対応しています(例:「幫我用灰機查...」)。 |
get_huiji_wiki_summary | トピックまたはページの簡潔な要約と紹介を取得します。 |
get_huiji_wiki_page_section | セクション全体の内容を取得します(例:攻略ガイド、背景設定、ドロップ一覧)。 |
アイテムとクラフティング(XIVAPI v2)
| ツール | 説明 |
|---|---|
get_item_by_name | アイテム名から、アイテム ID とメタデータを検索します。 |
get_item_recipes | クラフティングレシピの内訳、必要なクラフトレベル、素材一覧を取得します。 |
ハウジングとサーバー状況
| ツール | 説明 |
|---|---|
get_house_information | 購入可能なハウジング区画、サイズ、価格、抽選エントリーを取得します(PaissaDB)。 |
get_data_center | すべての公式データセンターを一覧表示します。 |
get_world | すべてのワールドと、所属するデータセンターを一覧表示します。 |
get_ffxiv_cht_lock_server | 繁体字中国語サーバーにおける、現在のキャラクター作成制限状況を取得します。 |
ニュース、バージョン、オンラインストア
| ツール | 説明 |
|---|---|
ffxiv_get_current_maintenance | 現在および今後のメンテナンス予定と説明を取得します。 |
ffxiv_get_topics | Lodestone の最新公式ニュースとトピックを取得します。 |
ffxiv_get_post | ID を指定して、特定の Lodestone 投稿の全文を取得します。 |
get_ffxiv_latest_versions | ベースゲームと拡張パッケージ(boot、ex1~ex5)の最新パッチバージョン文字列を取得します。 |
get_ffxiv_latest_chn_text_patch | コミュニティによる最新の中国語ローカライズパッチ(漢化 / 中文化補丁)のリリース情報とダウンロードリンクを取得します。 |
get_store_categories | FFXIV オンラインストアで利用可能な商品カテゴリを取得します。 |
get_store_new_product | オンラインストアに新しく追加されたアイテムを取得します。 |
get_store_on_sale_product | オンラインストアで現在割引中のアイテムを取得します。 |
get_store_product | カテゴリ名でストアの商品を絞り込みます。 |
サンプルアプリケーション
すぐに使えるサンプルクライアントは、sample/ ディレクトリにあります。
1. Discord ボット(sample/NetStoneDiscordBot)
OpenAI Function Calling と NetStoneMCP ツールを利用し、チャンネルごとのコンテキスト記憶機能を備えた Discord ボットです。
対話形式での選択肢の確認
ユーザーのプロンプトが曖昧な場合や、複数の対象が考えられる場合(例:「查巴哈」と尋ねた場合、Bahamut ワールドサーバー、バハムート侵攻編、蛮神に関する設定のいずれを指す可能性があります)、AI は ask_user_options ツールを呼び出し、対話形式の Discord ボタンを表示します。ユーザーは選択肢をクリックするだけで、推測に頼ることなく、正確なクエリを実行できます。
チャンネルごとの記憶と延長
Discord チャンネルごとに独立した会話コンテキストを保持します。記憶の有効期限が 10 分以内に設定されている場合、対話形式の 延長記憶 10 分鐘 ボタンが表示され、ユーザーはセッションの有効期間を最大 1 時間まで延長できます。
ロールプレイ用ペルソナの切り替え(!skill)
チャット中にいつでもキャラクターのペルソナを切り替えられます。ペルソナは sample/NetStoneDiscordBot/Skills/ に Markdown テンプレートとして定義されています。
| ペルソナコマンド | キャラクター | 説明と別名 |
|---|---|---|
!skill 雅修特拉 | 雅・シュトラ(Y'shtola) | 暁の大魔女。知的で優雅、少し毒舌なエーテル学の大家(永遠の23歳)。別名:yshtola, 貓娘, 魔女 |
!skill 愛梅特賽爾克 | エメトセルク(Emet-Selch) | 厭世的で傲慢ながらも情に厚く博識な古代人(「我らが生きたことを、覚えていてくれ」)。別名:emetselch, 愛梅, 哈迪斯 |
!skill 古拉哈提亞 | グ・ラハ・ティア(G'raha Tia) | 情熱的で率直、英雄に憧れる暁の賢人。食べ物と冒険が大好きです。別名:grahatia, 水晶公, 貓男 |
!skill 塔塔露 | タタル(Tataru) | 暁の財務総責任者にして仕立ての達人。「是也!」を口癖に、一歩も譲りません。別名:tataru, 大掌櫃, 拉拉肥 |
!skill 阿莉塞 | アリゼー(Alisaie) | 率直で負けず嫌い、ツンデレで熱血な赤魔道士の少女。アルフィノへのツッコミには容赦がありません。別名:alisaie, 赤魔 |
!skill 艾斯蒂尼安 | エスティニアン(Estinien) | 孤高で無口な蒼天の竜騎士。実力は抜群ですが、金銭感覚は少々頼りません。別名:estinien, 大師兄, 龍騎 |
!skill 猴子 | 猿(Monkey) | 機知に富んだユーモラスなバナナ好きの猿です。別名:monkey |
!skill off / default | デフォルトモード | 客観的で中立な、FFXIV の専門知識を持つアシスタントです。 |
2. WPF デスクトップクライアント(sample/NetStoneClient)
WPF で構築されたデスクトップチャットアプリケーションです。OpenAI のチャット補完機能と NetStoneMCP のツール呼び出しを統合しています。
設定と環境変数
| 変数 | デフォルト | 説明 |
|---|---|---|
TransportType / TRANSPORT_TYPE | Stdio | MCP のトランスポートモードです。Stdio(標準入出力)または SSE(HTTP Server-Sent Events)を指定します。 |
NETSTONE_SSE_URL | http://localhost:5000/sse | SSE モードで実行する際に、クライアント/ボットが使用するエンドポイントです。 |
OPENAI_API_KEY | (None) | OpenAI API キーです(Discord Bot と WPF Client に必要です)。 |
OPENAI_MODEL | gpt-5.1 | サンプルクライアントが使用する LLM モデルです。 |
DISCORD_BOT_KEY | (None) | Discord Bot トークンです(Discord Bot に必要です)。 |
スクリーンショット
曖昧なクエリに対応する、Discord Bot のインタラクティブな確認ボタン
Claude Desktop が Stdio MCP 経由で Lodestone データを照会
WPF デスクトップクライアントが NetStoneMCP ツールを呼び出す
インタラクティブなコンソールクライアント
開発
# Build the entire solution
dotnet build src/NetStoneMCP.sln
# Run all automated tests
dotnet test src/NetStoneMCP.sln
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。