mcpField
H
helldivers2-mcp

helldivers2-mcp

リモート
github.com/xerno42ゲーム・エンタメ25 週間前に更新
リポジトリ

helldivers2-mcp について

helldivers2-mcp は、コミュニティ API から Helldivers 2 の銀河戦争のライブデータを LLM に提供するステートレスな MCP サーバーです。戦況統計、惑星、主要命令、通信、Steam ニュース、宇宙ステーションをツールで扱えます。

主な機能

  1. 01銀河全体の戦況統計の表示
  2. 02進行中の Major Orders の取得
  3. 03惑星一覧と詳細の確認
  4. 04通信と Steam ニュースの取得
  5. 05宇宙ステーション詳細の確認

活用シーン

  1. 01現在の戦況の確認
  2. 02Major Order の目標確認
  3. 03惑星の状態と戦闘データの調査
  4. 04ゲーム内通信とニュースの閲覧

MCP 対応

ステートレスな Streamable HTTP トランスポートを使い、api.helldivers2.dev の Helldivers 2 ライブデータをツールとして公開します。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://mcp.avengersofsuperearth.com/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

パッケージ
npmhelldivers2-mcp1.0.2
ocidocker.io/xerno42/helldivers2-mcp:1.0.2

ツール

7

このツールにパラメーターはありません。

詳細

helldivers2-mcp

npm version CI Docker Hub License: MIT

LLM に Helldivers 2 の銀河規模戦争に関するライブデータを提供する、ステートレスな Model Context Protocol(MCP)サーバーです。

データは、コミュニティ API の api.helldivers2.dev から取得します。

パッケージ

レジストリパッケージ
npmhelldivers2-mcp
Docker Hubxerno42/helldivers2-mcp
GitHub Container Registryghcr.io/xerno42/helldivers2-mcp
MCP Registryio.github.xerno42/helldivers2-mcp

ツール

ツール説明
get_war_status銀河全体の戦争統計(陣営別撃破数、ミッションの勝敗、命中率、死亡数、影響倍率)と、所有者、プレイヤー数、進行中のイベント、攻撃経路、地域の耐久度を含む活動中の惑星
get_assignmentsタイトル、ブリーフィング、デコード済みタスクリスト(陣営、難易度、目標惑星)、現在の進捗数、報酬の種類と量、有効期限までの時間を含む進行中の大規模作戦
get_all_planetsID、名前、セクターを含む全惑星のリスト
get_planet_details惑星ごとの詳細情報:バイオーム、危険要因、初期/現在の所有者、耐久度、ウェイポイント、進行中のイベント、全戦闘統計、攻撃中の惑星、地域(呼び出しあたり最大 5 惑星)
get_dispatchesゲーム内の配信フィード — 公開日(相対時間)とメッセージ本文を含む最高司令部からのブロードキャスト。limit パラメーターは任意(デフォルト 20、最大 50)
get_steam_newsHelldivers 2 の Steam ニュース。タイトル、URL、公開日(相対時間)、記事全文を含みます。limit パラメーターは任意(デフォルト 10、最大 30)
get_space_station_detailsDSS の詳細:現在の母星(惑星の全情報)、次回選挙までの時間、名前、説明、ステータス、惑星への効果、リソースコストを含む実行中の戦術行動

クイックスタート

前提条件
  • Node.js 22+ または Docker
  • X-Super-Contact ヘッダー用の連絡先メールアドレス(上流 API が必須としています)
ローカル開発
cp .env.example .env   # set [email protected]
npm install
npm run dev               # hot-reload via tsx watch on :3000
本番ビルド
npm run build   # tsc → dist/
npm run start
Docker

イメージは Docker Hub および GitHub Container Registry で利用できます。

docker pull xerno42/helldivers2-mcp        # pull from Docker Hub
# or
docker pull ghcr.io/xerno42/helldivers2-mcp # pull from GHCR
# or
docker build -t helldivers2-mcp . # build locally

#then run with:
docker run -p 3000:3000 -e [email protected] helldivers2-mcp

設定

すべての設定は環境変数で行います。

変数デフォルト説明
X_SUPER_CONTACT(必須)利用ガイドラインに従い、上流 API に X-Super-Contact として転送されます
PORT3000リッスンする HTTP ポート
BIND_HOST127.0.0.1バインドするインターフェース(Docker/コンテナーでは 0.0.0.0)
MCP_ALLOWED_ORIGINS(未設定)許可するブラウザーの Origin ヘッダーをカンマ区切りで指定します。未設定の場合、ブラウザーからのリクエストはブロックされます。サーバー間の呼び出し(Origin ヘッダーなし)は常に許可されます
MCP_RATE_LIMIT_PER_MIN60継続的なリクエストレート制限(1 分あたりのリクエスト数)
MCP_RATE_LIMIT_BURST= MCP_RATE_LIMIT_PER_MINトークンバケット方式のレートリミッターのバースト容量

エンドポイント

メソッドパス説明
POST/mcpMCP Streamable HTTP トランスポートのエンドポイント
GET/health稼働確認 — { "ok": true } を返します

サーバーはステートレスな Streamable HTTP トランスポートを使用します。各 POST /mcp リクエストで新しい McpServer とトランスポートのペアを作成し、リクエストを処理した後に破棄します。セッション状態はありません。


コードでの使用方法

Streamable HTTP トランスポートを使用して、HTTP 経由で MCP サーバーを直接呼び出します。各リクエストは、POST /mcp に送信する JSON-RPC の tools/call メッセージです。

JavaScript / TypeScript

公式の MCP TypeScript SDK を使用する場合:

import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const client = new Client({ name: "my-app", version: "1.0.0" });

const transport = new StreamableHTTPClientTransport(
  new URL("https://mcp.avengersofsuperearth.com/mcp")
);

await client.connect(transport);

// List available tools
const { tools } = await client.listTools();
console.log(tools.map((t) => t.name));

// Get current war status
const warStatus = await client.callTool({
  name: "get_war_status",
  arguments: {},
});
console.log(warStatus.content[0].text);

// Get details for specific planets by index (up to 5)
const planets = await client.callTool({
  name: "get_planet_details",
  arguments: { planetindices: [57, 153] },
});
console.log(planets.content[0].text);

await client.close();

SDK を使用せず、fetch で生の JSON-RPC を送信する場合:

async function callTool(name: string, args: Record<string, unknown> = {}) {
  const res = await fetch("https://mcp.avengersofsuperearth.com/mcp", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "Accept": "application/json, text/event-stream",
    },
    body: JSON.stringify({
      jsonrpc: "2.0",
      id: 1,
      method: "tools/call",
      params: { name, arguments: args },
    }),
  });
  const text = await res.text();
  // The response is an SSE frame ("event: message\ndata: {json}\n\n");
  // concatenate its data line(s) to recover the JSON-RPC payload.
  const json = text
    .split("\n")
    .filter((line) => line.startsWith("data:"))
    .map((line) => line.slice(5).trim())
    .join("");
  const data = JSON.parse(json);
  return data.result.content[0].text;
}

const status = await callTool("get_war_status");
const assignments = await callTool("get_assignments");
const dispatches = await callTool("get_dispatches", { limit: 5 });
const planets = await callTool("get_planet_details", { planetindices: [57, 153] });
Python

公式の MCP Python SDK を使用する場合:

import asyncio
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

async def main():
    async with streamablehttp_client("https://mcp.avengersofsuperearth.com/mcp") as (read, write, _):
        async with ClientSession(read, write) as session:
            await session.initialize()

            # List available tools
            tools = await session.list_tools()
            print([t.name for t in tools.tools])

            # Get current war status
            result = await session.call_tool("get_war_status", {})
            print(result.content[0].text)

            # Get details for specific planets by index (up to 5)
            result = await session.call_tool(
                "get_planet_details",
                {"planetindices": [57, 153]},
            )
            print(result.content[0].text)

asyncio.run(main())

SDK を使用せず、httpx で生の JSON-RPC を送信する場合:

import httpx

MCP_URL = "https://mcp.avengersofsuperearth.com/mcp"

def call_tool(name: str, arguments: dict = {}) -> str:
    payload = {
        "jsonrpc": "2.0",
        "id": 1,
        "method": "tools/call",
        "params": {"name": name, "arguments": arguments},
    }
    headers = {
        "Content-Type": "application/json",
        "Accept": "application/json, text/event-stream",
    }
    response = httpx.post(MCP_URL, json=payload, headers=headers)
    response.raise_for_status()
    import json
    # The response is an SSE frame ("event: message\ndata: {json}\n\n");
    # concatenate its data line(s) to recover the JSON-RPC payload.
    text = "".join(
        line[5:].strip()
        for line in response.text.splitlines()
        if line.startswith("data:")
    )
    return json.loads(text)["result"]["content"][0]["text"]

status = call_tool("get_war_status")
assignments = call_tool("get_assignments")
planets = call_tool("get_planet_details", {"planetindices": [57, 153]})

Claude Desktop への接続

ホスト型サーバー(最も簡単)

公開インスタンスを https://mcp.avengersofsuperearth.com/mcp で利用できます。セットアップは不要です。claude_desktop_config.json に追加するだけです。

{
  "mcpServers": {
    "helldivers2": {
      "url": "https://mcp.avengersofsuperearth.com/mcp"
    }
  }
}
セルフホスト(ローカルバイナリ)
{
  "mcpServers": {
    "helldivers2": {
      "command": "node",
      "args": ["/path/to/helldivers2-mcp/dist/index.js"],
      "env": {
        "X_SUPER_CONTACT": "[email protected]"
      }
    }
  }
}
セルフホスト(HTTP サーバー)
{
  "mcpServers": {
    "helldivers2": {
      "url": "http://localhost:3000/mcp"
    }
  }
}

開発

npm run test              # Jest (ESM mode)
npm run test:watch
npm run test:coverage
npm run lint              # ESLint

単一のテストファイルを実行します:

npm run test src/__tests__/tools.war.test.ts
ツールの追加
  1. src/tools/your-tool.ts を作成し、.definition と .handler を含む Tool オブジェクトをエクスポートします。
  2. src/index.ts でインポートし、TOOLS 配列に追加します。
  3. 成功時は textResponse(...) を、失敗時は errorResponse(...) を返します。ハンドラーから例外をスローしないでください。
  4. 上流へのすべての呼び出しは hd2Fetch(メモリ内の2分間キャッシュと、レート制限を考慮したキュー)を経由する必要があります。

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。