MCP server for Nexus Mods API integration, providing tools to search, retrieve, and manage mod information across games
17 tools with consistent naming (verb_noun pattern: get_, list_, search_, nexus_*). All have descriptions (avg ~120 chars, within baseline 34-392). Input schemas present with type definitions and parameter descriptions. However, output schemas are NOT documented, responses are opaque to the LLM. Parameter descriptions lack constraints (enums, ranges, formats). No error handling guidance. Missing tool annotations (readOnlyHint/destructiveHint). Composition is sound (single responsibility per tool), but schema completeness and LLM-facing documentation fall short of A-grade standards.
Category tree for a game (subset of nexus_get_game): {"categories":[...]}.
List all games on Nexus Mods (domain name, id, and metadata). Use this to resolve game_domain for other tools.
Single game record by domain (REST), including category tree and stats.
Get mod details (REST) for a game domain and mod id.
Changelog history for a mod (REST).
Metadata for one mod file by file_id (REST); avoids downloading full files list when you already know file_id.
Output schemas not documented. LLMs cannot infer response structure, forcing them to guess at field names and types for downstream tool chaining. Responses are opaque.
Parameter descriptions lack constraints. 'offset' and 'count' have no min/max bounds; 'period' in nexus_mods_recently_updated lacks enum declaration (1d, 1w, 1m, 3m). LLMs may pass invalid values.
No error handling guidance. Tool descriptions do not explain what to do if a mod_id is invalid, API rate limit is hit, or game_domain does not exist. Agents cannot self-correct.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Get mod details via GraphQL (v2): full mod object with nested relationships.
Mod dependencies via GraphQL: mods this mod requires (nexusRequirements), mods that require this mod (modsRequiringThisMod), and DLC requirements. Uses game_domain like other tools; resolves internal game id automatically.
Get current API rate limit status for the authenticated user (REST).
List mods tracked by the authenticated user (REST).
Invalidate in-memory response cache: mode all (clear all), games, game, mod, modfiles, modfile, changelog, feeds, modreq, or mod_requirements.
List all files for a mod (REST): archives, versions, categories.
Latest added mods for a game (REST feed).
Latest updated mods for a game (REST feed).
Mods updated in a given period (REST feed): period is 1d, 1w, 1m, or 3m.
Trending mods for a game (REST feed).
Search mods for a game via GraphQL: optional stemmed-name wildcard (query → ModsFilter nameStemmed), optional exact author and category_name. At least one of query, author, category_name is required.
Missing tool annotations. No readOnlyHint on read-only tools or destructiveHint on nexus_invalidate_cache. LLMs cannot distinguish safe from risky operations without explicit hints.
ignore_cache parameter is string-typed ('true', '1', 'yes') instead of boolean. Inconsistent with JSON Schema best practices and forces LLM to guess valid string values.