Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions servers/destiny2-mcp-server/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://github.com/Nadiar/destiny2-mcp-server#readme
28 changes: 28 additions & 0 deletions servers/destiny2-mcp-server/server.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: destiny2-mcp-server
image: ghcr.io/nadiar/destiny2-mcp-server:latest
type: server
meta:
category: gaming
tags:
- gaming
- destiny2
- bungie
- api
about:
title: Destiny 2 MCP Server
description: MCP server for Destiny 2 API integration. Search players, look up items and perks, get activity history, clan rosters, and more. Features fuzzy player search with confidence scoring, cross-save detection, and day-one raid tracking.
icon: https://www.google.com/s2/favicons?domain=bungie.net&sz=64
source:
project: https://github.com/Nadiar/destiny2-mcp-server
commit: 4c1730de63e5ec54f22b23c651548edb9031f538
run:
allowHosts:
- www.bungie.net:443
- stats.bungie.net:443
config:
description: Configure the Bungie API connection for Destiny 2 data
secrets:
- name: destiny2-mcp-server.api_key
env: BUNGIE_API_KEY
example: YOUR_BUNGIE_API_KEY_HERE
description: Get your API key from https://www.bungie.net/en/Application
272 changes: 272 additions & 0 deletions servers/destiny2-mcp-server/tools.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,272 @@
[
{
"name": "search_player",
"description": "EXACT MATCH ONLY: Search for a Destiny 2 player when you have their complete Bungie Name with code (e.g., \"Guardian#1234\"). If you only have a partial name or don't know the #code, use find_players instead which does fuzzy matching.",
"arguments": [
{
"name": "bungieName",
"type": "string",
"desc": "Complete Bungie Name in format \"DisplayName#Code\" (e.g., \"Datto#6446\", \"ATP#6173\"). IMPORTANT: You must have the exact 4-digit code. If you don't know the code, use find_players tool instead for fuzzy search."
}
]
},
{
"name": "find_players",
"description": "Fuzzy search for Destiny 2 players by partial name. Returns multiple matches sorted by confidence (0-100+), with cross-save primary account detection. Confidence is weighted by: recency (25%), playtime (25%), lifetime triumphs (15%), active triumphs (15%), clan (10%), plus bonuses for day-one raid clears and elite clan status.",
"arguments": [
{
"name": "namePrefix",
"type": "string",
"desc": "ANY part of player name to search for - just type what you know (e.g., \"Datto\" finds \"Datto#6446\", \"ATP\" finds \"ATP#6173\"). Does NOT require the #code. Case-insensitive fuzzy matching."
}
]
},
{
"name": "get_profile",
"description": "Get a Destiny 2 player profile with characters, clan, triumph score, and account info",
"arguments": [
{
"name": "membershipType",
"type": "number",
"desc": "Platform type (1=Xbox, 2=PS, 3=Steam, 6=Epic)"
},
{
"name": "membershipId",
"type": "string",
"desc": "Destiny membership ID"
}
]
},
{
"name": "get_character",
"description": "Get detailed information about a specific Destiny 2 character",
"arguments": [
{
"name": "membershipType",
"type": "number",
"desc": "Platform type"
},
{
"name": "membershipId",
"type": "string",
"desc": "Destiny membership ID"
},
{
"name": "characterId",
"type": "string",
"desc": "Character ID"
}
]
},
{
"name": "get_activity_history",
"description": "Get recent activity history for a character with resolved activity names and time played. Includes completion status, kills, deaths, and assists per activity.",
"arguments": [
{
"name": "membershipType",
"type": "number",
"desc": "Platform type"
},
{
"name": "membershipId",
"type": "string",
"desc": "Destiny membership ID"
},
{
"name": "characterId",
"type": "string",
"desc": "Character ID"
},
{
"name": "mode",
"type": "number",
"desc": "Activity mode (0=All, 4=Raid, 5=PvP, 82=Dungeon)"
},
{
"name": "count",
"type": "number",
"desc": "Number of activities to return (default: 10)"
}
]
},
{
"name": "get_activity_stats",
"description": "Get aggregated activity statistics with customizable fields and pagination. Can fetch beyond 250 activities by using multiple pages. Perfect for calculating total time spent in specific activities.",
"arguments": [
{
"name": "membershipType",
"type": "number",
"desc": "Platform type (1=Xbox, 2=PS, 3=Steam, 6=Epic)"
},
{
"name": "membershipId",
"type": "string",
"desc": "Destiny membership ID"
},
{
"name": "characterId",
"type": "string",
"desc": "Character ID"
},
{
"name": "mode",
"type": "number",
"desc": "Activity mode filter (0=All, 4=Raid, 5=PvP, 82=Dungeon, 46=Nightfall)"
},
{
"name": "activityHash",
"type": "number",
"desc": "Filter to specific activity by hash"
},
{
"name": "maxActivities",
"type": "number",
"desc": "Maximum activities to fetch (default: 250, max: 1000)"
},
{
"name": "fields",
"type": "array",
"desc": "Which stats to include: time, completions, kills, deaths, kd, efficiency"
},
{
"name": "groupBy",
"type": "string",
"desc": "Group results by activity name or return flat totals"
}
]
},
{
"name": "get_pgcr",
"description": "Get a Post-Game Carnage Report for a specific activity with resolved names",
"arguments": [
{
"name": "activityId",
"type": "string",
"desc": "Activity instance ID"
}
]
},
{
"name": "get_manifest",
"description": "Get the current Destiny 2 manifest version and paths",
"arguments": []
},
{
"name": "get_item_definition",
"description": "Look up an item definition from the Destiny 2 manifest",
"arguments": [
{
"name": "itemHash",
"type": "number",
"desc": "Item hash identifier (0-4294967295)"
}
]
},
{
"name": "get_historical_stats",
"description": "Get historical stats for a player account",
"arguments": [
{
"name": "membershipType",
"type": "number",
"desc": "Platform type"
},
{
"name": "membershipId",
"type": "string",
"desc": "Destiny membership ID"
},
{
"name": "characterId",
"type": "string",
"desc": "Character ID (optional, use 0 for account-wide)"
}
]
},
{
"name": "search_items",
"description": "Search for Destiny 2 items by name using the local manifest cache. Returns matching weapons, armor, mods, and other items.",
"arguments": [
{
"name": "searchTerm",
"type": "string",
"desc": "Name to search for (e.g., \"Fatebringer\", \"Navigator\", \"Sunshot\")"
},
{
"name": "limit",
"type": "number",
"desc": "Maximum results to return (default 15)"
}
]
},
{
"name": "get_item_image",
"description": "Get the icon or screenshot for a Destiny 2 item. By default returns the large screenshot if available, or falls back to the small icon.",
"arguments": [
{
"name": "itemHash",
"type": "number",
"desc": "Item hash from search_items (0-4294967295)"
},
{
"name": "imageType",
"type": "string",
"desc": "Type of image: \"screenshot\" (large), \"icon\" (small), or \"auto\" (default)"
}
]
},
{
"name": "get_item_details",
"description": "Get full details for an item including name, type, stats, and sockets/perks with resolved perk names",
"arguments": [
{
"name": "itemHash",
"type": "number",
"desc": "Item hash from search_items (0-4294967295)"
}
]
},
{
"name": "get_plug_set",
"description": "Get all perks in a plug set with resolved names - use plugSetHash from item sockets",
"arguments": [
{
"name": "plugSetHash",
"type": "number",
"desc": "Plug set hash from item socket definition (0-4294967295)"
}
]
},
{
"name": "get_activity_definition",
"description": "Get details about an activity by hash with resolved name (raids, strikes, dungeons, etc.)",
"arguments": [
{
"name": "activityHash",
"type": "number",
"desc": "Activity hash from activity history (0-4294967295)"
}
]
},
{
"name": "search_clan_members",
"description": "Get the full roster of a Destiny 2 clan. Two methods: 1) Search by clan name/tag, or 2) RECOMMENDED: Use knownMember with any clan member's ID to reliably get the roster.",
"arguments": [
{
"name": "clanName",
"type": "string",
"desc": "Clan name or tag to search for (optional if using knownMember)"
},
{
"name": "knownMember",
"type": "object",
"desc": "Object with membershipType and membershipId of any clan member (recommended method)"
},
{
"name": "maxResults",
"type": "number",
"desc": "Maximum number of members to return (default: 50, max: 100)"
}
]
}
]