nexus-mods-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NEXUS_API_KEY | Yes | Personal Nexus key (`apikey` header) | |
| NEXUS_USER_AGENT | No | Identifiable User-Agent, required by Nexus | |
| NEXUS_MAX_RETRIES | No | Retries on network errors / 5xx (default 2) | 2 |
| NEXUS_OAUTH_TOKEN | No | Bearer token for the v2 GraphQL / v3 REST APIs | |
| NEXUS_UPLOAD_ROOT | No | Restricts which directory archives may be uploaded from | |
| NEXUS_ALLOW_WRITES | No | `true` to allow endorse / track / changelog / rename / mutations | |
| NEXUS_DEFAULT_GAME | No | Default domain (`mountandblade2bannerlord`) | mountandblade2bannerlord |
| NEXUS_ALLOW_UPLOADS | No | `true` to allow publishing files (also needs `NEXUS_ALLOW_WRITES`) | |
| NEXUS_TIMEOUT_SECONDS | No | Per-request timeout (default 20) | 20 |
| NEXUS_CACHE_TTL_SECONDS | No | Read cache lifetime (default 300, `0` disables it) | 300 |
| NEXUS_UPLOAD_TIMEOUT_SECONDS | No | Timeout of each presigned transfer (default 900) | 900 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| nexus_validate_userA | Validate the Nexus API key and return the profile (name, user id, premium/supporter status). Call this first when authentication looks broken, or to learn the current user before nexus_list_author_mods. |
| nexus_rate_limit_statusA | Return the remaining Nexus quota (hourly/daily) plus this server's request and cache counters. Free of charge unless refresh=true. Use it before a batch of calls, or to decide whether to back off after an HTTP 429. |
| nexus_list_gamesA | List the games supported by Nexus Mods. Always pass 'filter' (case-insensitive, matches name or domain): the unfiltered catalogue has 2000+ entries. Use it to resolve a game domain before any other tool. |
| nexus_get_gameA | Return details for one game, including its category list (category_id values needed when publishing a mod). |
| nexus_find_modsA | START HERE when you only know a mod's name/keywords: resolves it to a mod_id with version, author, downloads, endorsements, last update and page URL, in ONE call. Backed by the v2 search index - never write a raw GraphQL search yourself. If the name search finds nothing it automatically retries against mod descriptions, so a single call is normally enough. Follow up with nexus_mod_overview only if you need files or changelogs. |
| nexus_list_author_modsA | List every mod published by a Nexus account, newest update first, in ONE call. With no argument it uses the authenticated account ('my mods'). Ideal for 'how are my mods doing?' - returns downloads, endorsements, version and last update for each mod. |
| nexus_mod_overviewA | ONE-CALL mod report: metadata, currently published files grouped by category, recent changelogs and the page URL. Prefer this over chaining nexus_get_mod + nexus_get_mod_files + nexus_get_mod_changelogs. Archived/old files and the upload history are hidden unless you ask for them. |
| nexus_get_modA | Raw metadata for a single mod (name, version, author, counters, status). Narrow follow-up tool: if you also need files or changelogs, call nexus_mod_overview instead of chaining calls. |
| nexus_get_mod_filesA | List the files published for a mod. By default archived/old versions and the upload history are filtered out. Pass file_id for a single file. For a complete picture (metadata + files + changelogs) prefer nexus_mod_overview. |
| nexus_get_mod_changelogsA | Per-version changelogs for a mod, newest first. Narrow follow-up tool: nexus_mod_overview already returns the most recent versions. |
| nexus_list_modsA | Browse a game's feeds: latest_added, latest_updated, trending, or updated (needs period=1d|1w|1m). Use it for discovery; to look for a specific mod use nexus_find_mods instead. |
| nexus_search_md5A | Resolve an MD5 hash to its Nexus mod and file: the reliable way to identify an unknown local archive. |
| nexus_get_download_linkA | Generate a download link for a file. Requires a Premium account, unless nxm_key/expires (taken from an nxm:// link) are supplied. |
| nexus_tracked_modsA | Manage the mods tracked by the authenticated user. action=list is read-only; track/untrack are writes and require NEXUS_ALLOW_WRITES=true. |
| nexus_endorse_modA | Endorse a mod or withdraw the endorsement. Write operation: requires NEXUS_ALLOW_WRITES=true. The version must match the one Nexus knows (nexus_get_mod returns it). |
| nexus_mod_file_targetsA | START HERE before updating a mod: lists the v3 identifiers needed to publish. Returns the internal mod id plus every mod file (the update chain shown on the Files tab) with its mod_file_id and latest versions. Pass the mod_file_id to nexus_upload_mod_file to release a new version of that file; omit it to create a brand new file. The numeric mod_id is the one in the page URL. |
| nexus_upload_mod_fileA | Uploads a local archive to Nexus and publishes it, in ONE call (v3 Upload API): creates the upload session, sends the bytes to the presigned storage URL, finalises, waits for processing, then either appends a new version to an existing file (pass mod_file_id, from nexus_mod_file_targets) or creates a new file on the mod page. Multipart is used automatically above 100 MiB. Optionally posts a changelog entry. Requires NEXUS_ALLOW_WRITES=true and NEXUS_ALLOW_UPLOADS=true. Always run with dry_run=true first to confirm the plan before the real upload. |
| nexus_publish_uploadA | Recovery tool: turns an already finalised upload_id into a mod file or a new version, without re-sending the archive. Use it when nexus_upload_mod_file uploaded the bytes but the publishing step failed, or when the upload was still processing. Check nexus_upload_status shows state=available first. |
| nexus_upload_statusA | Return the state of an upload session: 'created' means Nexus is still processing the archive, 'available' means it can be published with nexus_publish_upload. |
| nexus_add_changelogA | Append changelog text for a version of one of your mods. Additive only: calling it twice for the same version appends, it does not replace. Write operation (NEXUS_ALLOW_WRITES=true). |
| nexus_rename_mod_fileA | Rename an existing mod file (the whole update chain, not a single version). Get the mod_file_id from nexus_mod_file_targets. Write operation (NEXUS_ALLOW_WRITES=true). |
| nexus_graphqlA | Escape hatch for the v2 GraphQL API (collections, media, advanced filters). Read the nexus://graphql-cheatsheet resource first: the schema is already documented, so introspection queries are unnecessary. For plain mod searches use nexus_find_mods. Filters look like {"gameDomainName":[{"value":"","op":"EQUALS"}],"nameStemmed":[{"value":""}]}; sorts look like [{"updatedAt":{"direction":"DESC"}}]. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| nexus_mod_report | Produce a status report for a mod (stats, published files, recent changes). |
| nexus_release_update | Publish a new version of one of your files on an existing mod page. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| nexus-api-cheatsheet | Endpoints, quotas and conventions of the Nexus Mods API, plus tool routing rules. |
| nexus-graphql-cheatsheet | Verified shapes for mods(filter, sort): ModsFilter fields, comparison operators, sort keys. Read this instead of running introspection. |
| nexus-upload-guide | How mod / mod file / mod file version relate, the exact upload sequence, the field constraints and the recovery path. Read this before the first nexus_upload_mod_file call. |
TDQS
Scored across 22 tools
There is real overlap: nexus_get_mod vs nexus_mod_overview, nexus_get_mod_files, and nexus_get_mod_changelogs all target the same mod resource, and nexus_find_mods vs nexus_list_mods vs nexus_graphql all cover search/discovery. The descriptions work hard to disambiguate ('prefer this over chaining', 'narrow follow-up tool', 'START HERE'), which largely resolves the boundaries for an attentive agent.
Every tool uses a consistent nexus_ snake_case prefix with mostly verb_noun patterns (nexus_find_mods, nexus_upload_mod_file, nexus_endorse_mod). A few are noun-only (nexus_mod_overview, nexus_upload_status, nexus_mod_file_targets), a minor deviation but still readable and predictable.
22 tools sits at the upper edge of the comfortable band, but each maps to a distinct capability across auth, discovery, mod lifecycle, uploads/publishing, and a GraphQL escape hatch. The upload chain (targets → upload → status → publish) justifies several tools, though a few read-only report tools could arguably be merged.
The surface is unusually thorough: authentication, quota checks, game/category resolution, search (name, MD5, feeds), mod metadata and files, changelogs, endorsements, tracking, the full upload/publish/recover workflow, file rename, and a documented GraphQL escape hatch. No obvious lifecycle gaps or dead ends for managing mods on Nexus.