-
Notifications
You must be signed in to change notification settings - Fork 490
Add destiny2-mcp-server: Destiny 2 API integration #883
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
Nadiar
wants to merge
3
commits into
docker:main
Choose a base branch
from
Nadiar:add-destiny2-mcp-server
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+301
−0
Open
Changes from 1 commit
Commits
Show all changes
3 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| https://github.com/Nadiar/destiny2-mcp-server#readme |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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.bungie.net/7/ca/destiny/icons/icon_d2_social.png | ||
| 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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 weighs: 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)" | ||
| } | ||
| ] | ||
| } | ||
| ] | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The phrase "Confidence weighs:" is grammatically incorrect. The verb "weighs" requires an object. Consider changing to "Confidence weights:" (noun) or "Confidence is weighted by:" for clarity.