Lutris MCP Server
The Lutris MCP Server enables AI assistants to manage a Linux gaming library through Lutris, providing tools for browsing, organizing, launching, and installing games.
Library Management
List, filter, search, sort, and paginate games
Get full details for a specific game, add new games, update existing ones, or remove them
Find duplicate games and export the full library as JSON (with optional filters)
Get aggregate statistics (totals, playtime, breakdowns by runner/platform/service)
Perform bulk updates on multiple games at once
Category Management
List all categories with game counts, create new categories
Assign or unassign single or multiple games to/from categories
External Service Integration
Search and import games from services like Steam and GOG synced in Lutris
Game Actions
Launch installed games, install games from installer slugs or local executables
Check if a game is currently running
Configuration & Media
Read, update, or create game YAML configuration files (with deep-merge updates)
Set game cover art, banners, or icons from local files; retrieve all media paths
System & Diagnostics
List available Lutris runners or Wine versions
View the last launch log for a game for troubleshooting
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Lutris MCP ServerShow me my library statistics and most played games."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
lutris-mcp
MCP server for managing your Lutris game library. Gives AI assistants direct access to browse, search, organize, launch, and install games in your Linux gaming collection.
Examples
Here are some things you can ask your AI assistant once this server is connected:
"What games do I have installed?"
"Show me my most played games"
"Search my Steam library for Hades"
"Launch Balatro"
"Install this game from
/path/to/setup.exe""Add all my roguelike games to a 'Roguelike' category"
"Are there any duplicate games in my library?"
"Show me the log for my last Hades II session"
"Export my installed games as JSON"
"Set the cover art for Timberborn from this image"
Related MCP server: isthereanydeal-mcp
Installation
Quick Start (npx)
No install needed — just add to your MCP client config:
{
"mcpServers": {
"lutris": {
"command": "npx",
"args": ["-y", "lutris-mcp"]
}
}
}Global Install
npm install -g lutris-mcpThen configure your MCP client:
{
"mcpServers": {
"lutris": {
"command": "lutris-mcp"
}
}
}From Source
git clone https://github.com/Praeses0/lutris-mcp.git
cd lutris-mcp
npm install
npm run build{
"mcpServers": {
"lutris": {
"command": "node",
"args": ["/path/to/lutris-mcp/dist/index.js"]
}
}
}Requirements
Lutris installed and set up
Node.js 20+
Tools
Library
Tool | Description |
| List and filter games with pagination, sorting, and smart search |
| Get full game details including categories, config, and media paths |
| Add a new game to the library |
| Update fields on an existing game |
| Remove a game from the database (does not delete files) |
| Aggregate stats: totals, playtime, breakdowns by runner/platform/service |
| Find potential duplicate games (same directory or similar slugs) |
| Export full library as JSON with optional filters (category, runner, installed) |
Categories
Tool | Description |
| List all categories with game counts |
| Create a new category |
| Add a game to a category |
| Remove a game from a category |
| Add multiple games to a category at once |
Services
Tool | Description |
| Search games synced from Steam, GOG, etc. |
| Import a service game into your Lutris library |
Launch & Install
Tool | Description |
| Launch an installed game via Lutris |
| Install a game from a Lutris installer slug or local setup executable |
| Check if a game is currently running (multi-strategy detection) |
Configuration
Tool | Description |
| Read a game's YAML configuration file |
| Update or create a game's YAML configuration (deep-merged) |
Media
Tool | Description |
| Set a game's cover art, banner, or icon from a local file |
| Get all media paths for a game with existence check |
System
Tool | Description |
| List available Lutris runners or Wine versions |
| Read the last launch log for a game (for troubleshooting) |
Bulk Operations
Tool | Description |
| Update a field on multiple games at once |
Environment Variables
Variable | Default | Description |
|
| Path to Lutris SQLite database |
|
| Path to game YAML configs |
|
| Path to Lutris data directory (media, logs) |
Development
npm install # install dependencies
npm run build # compile TypeScript
npm test # run tests (219 tests)
npm run dev # run with tsx (hot reload)License
MIT
Available Tools
11 toolsadd_gameC
Add a new game to the Lutris library
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Game name | |
| runner | Yes | Runner (e.g. linux, wine, steam) | |
| platform | No | Platform | |
| directory | No | Install directory | |
| executable | No | Executable path | |
| year | No | Release year | |
| service | No | Service (e.g. steam) | |
| service_id | No | Service ID | |
| slug | No | Custom slug (auto-generated if omitted) | |
| installed | No | Mark as installed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It states this is an 'Add' operation, implying mutation/write behavior, but doesn't disclose any other traits: no information about permissions required, whether it's idempotent, what happens on duplicate entries, error conditions, or what the response contains. For a mutation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the core purpose without any fluff or redundancy. It's appropriately sized and front-loaded, with every word earning its place. No structural issues or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a mutation tool with 10 parameters, no annotations, and no output schema, the description is incomplete. It doesn't address behavioral aspects (permissions, side effects), usage context, or what the tool returns. The agent lacks sufficient information to use this tool effectively beyond basic parameter passing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 10 parameters thoroughly. The description adds no parameter-specific information beyond what's in the schema (e.g., it doesn't explain relationships between parameters like 'runner' and 'service', or clarify what 'slug' is used for). Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add a new game') and target resource ('to the Lutris library'), which is specific and unambiguous. It distinguishes from siblings like 'update_game' or 'remove_game' by indicating creation rather than modification or deletion. However, it doesn't explicitly differentiate from 'search_service_games' which might also involve adding games indirectly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., whether the game must be installed first), when to use 'update_game' instead for existing games, or how it relates to 'search_service_games' for discovering games. The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assign_categoryC
Add a game to a category
| Name | Required | Description | Default |
|---|---|---|---|
| game_id | Yes | Game ID | |
| category_name | Yes | Category name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Add' implies a mutation, but it doesn't disclose behavioral traits like permission requirements, whether duplicates are allowed, error conditions, or side effects. This leaves significant gaps for a tool that modifies data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero waste. It's appropriately sized and front-loaded, efficiently conveying the core purpose without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a mutation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavior, error handling, or return values, making it inadequate for safe and effective use by an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters ('game_id' and 'category_name') with basic descriptions. The description adds no additional meaning beyond implying these parameters are used for the assignment, meeting the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add') and the target ('a game to a category'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'unassign_category' or explain how this relates to 'create_category' for new categories versus assigning to existing ones.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., the game and category must exist), when not to use it, or how it interacts with siblings like 'unassign_category' or 'create_category'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_categoryC
Create a new game category
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Category name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'create' implies a write operation, it doesn't specify whether this requires authentication, what happens on duplicate names, whether the operation is idempotent, or what the response looks like. This leaves significant behavioral gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that communicates the core purpose without any wasted words. It's appropriately sized for a simple tool with one parameter and gets straight to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after creation, what gets returned, error conditions, or how this tool fits into the broader workflow with sibling tools like 'list_categories' or 'assign_category'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage with the 'name' parameter clearly documented. The description adds no additional parameter information beyond what the schema already provides, so it meets the baseline for high schema coverage without adding extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('create') and resource ('game category'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'add_game' or 'assign_category' that might also involve creation operations in the same domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'add_game' or 'assign_category'. There's no mention of prerequisites, timing considerations, or relationships with other tools in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gameC
Get full details for a specific game including categories and YAML config
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Game ID | |
| slug | No | Game slug |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves details but doesn't cover critical aspects like whether it's a read-only operation, error handling (e.g., if the game doesn't exist), authentication needs, rate limits, or response format. For a tool with no annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('Get full details') and specifies key inclusions ('categories and YAML config') without unnecessary words. It avoids redundancy and wastes no space, making it highly concise and well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete for a tool that retrieves detailed game information. It doesn't explain what 'full details' entail beyond categories and YAML config, nor does it address behavioral aspects like error cases or response structure. For a read operation with no structured output documentation, more context is needed to guide effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters ('id' and 'slug') documented in the schema. The description adds no additional parameter semantics beyond implying that one of these identifiers is needed to fetch game details. Since the schema already provides full coverage, the baseline score of 3 is appropriate, as the description doesn't enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('full details for a specific game'), specifying what information is retrieved ('including categories and YAML config'). It distinguishes from siblings like 'list_games' (which lists multiple games) and 'search_service_games' (which searches external services). However, it doesn't explicitly contrast with 'get_library_stats' or 'update_game', keeping it from a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a game ID or slug), exclusions, or comparisons to siblings like 'list_games' for browsing or 'update_game' for modifications. This lack of contextual direction leaves the agent to infer usage based on the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_library_statsB
Get aggregate statistics about the Lutris game library
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states what the tool does but lacks behavioral details: it doesn't specify if this is a read-only operation, what permissions are needed, how data is formatted, or any rate limits. For a tool with no annotations, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any fluff. It's appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description is minimal but covers the basic purpose. However, it lacks details on what 'statistics' includes (e.g., counts, averages) and behavioral context, which would help an agent use it effectively. It's adequate but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add param info, but that's acceptable here—it implies no inputs are required, which aligns with the schema. Baseline is 4 for zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('aggregate statistics about the Lutris game library'), making the purpose understandable. However, it doesn't explicitly differentiate this tool from siblings like 'list_games' or 'search_service_games'—it implies aggregate data vs. listing, but could be more specific about what 'statistics' includes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'list_games' and 'search_service_games', it's unclear if this tool is for summaries, counts, or other metrics, and there's no mention of prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesB
List all categories with game counts
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool lists categories with game counts, implying a read-only operation, but doesn't specify details like whether it returns all categories at once, if there's pagination, error conditions, or performance considerations. This leaves gaps in understanding how the tool behaves beyond its basic purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's front-loaded with the core action and includes essential context ('with game counts'), making it easy to understand at a glance. Every part of the sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no annotations, no output schema), the description is adequate but has clear gaps. It explains what the tool does but lacks details on behavior, usage context, or output format. For a read operation with no structured output schema, more information on return values would be helpful, though the description meets the minimum viable threshold.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, meaning there are no parameters to document. The description doesn't need to add parameter semantics, so it appropriately focuses on the tool's purpose. A baseline of 4 is applied since no parameters exist, and the description doesn't attempt to explain non-existent inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List all categories') and includes additional context ('with game counts'), which specifies what information is returned. However, it doesn't explicitly distinguish this tool from sibling tools like 'create_category' or 'assign_category' in terms of purpose, though the verb 'List' inherently suggests a read operation versus creation or modification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, such as needing categories to exist, or compare it to other tools like 'get_library_stats' that might provide related information. Usage is implied by the action but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_gamesC
List and filter games in the Lutris library with pagination
| Name | Required | Description | Default |
|---|---|---|---|
| runner | No | Filter by runner (e.g. steam, wine, linux) | |
| platform | No | Filter by platform | |
| installed | No | Filter by installed status | |
| category | No | Filter by category name | |
| search | No | Search by name or slug | |
| service | No | Filter by service (e.g. steam) | |
| limit | No | Results per page | |
| offset | No | Offset for pagination | |
| sort_by | No | Sort column | name |
| sort_order | No | Sort direction | asc |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'with pagination', which hints at output structure, but lacks details on rate limits, authentication needs, error handling, or what the response looks like (e.g., format, fields). This is inadequate for a tool with 10 parameters and no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core functionality ('List and filter games') and includes key scope ('with pagination'). There is no wasted verbiage, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (10 parameters, no output schema, and no annotations), the description is insufficient. It doesn't explain return values, error conditions, or behavioral nuances like pagination mechanics. For a list/filter tool with many options, more context is needed to guide effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value by implying filtering capabilities but doesn't provide additional context beyond what the schema offers, such as examples or usage tips for parameters like 'runner' or 'service'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List and filter') and resource ('games in the Lutris library'), with the addition of 'with pagination' providing scope. However, it doesn't explicitly differentiate from sibling tools like 'search_service_games' or 'get_game', which could offer overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'search_service_games' or 'get_game', nor does it mention prerequisites or context for filtering. Usage is implied through the mention of filtering and pagination, but explicit comparisons are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_gameB
Remove a game from the Lutris database (does not delete files)
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Game ID to remove | |
| confirm | Yes | Must be true to confirm deletion |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool removes from the database but not files, which is useful context. However, it lacks details on permissions, reversibility, or response behavior, leaving gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action and clarifies a key limitation. There is no wasted text, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is minimal but covers the basic purpose and a critical behavioral note (no file deletion). However, it lacks details on prerequisites, effects, or error handling, making it incomplete for safe agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters ('id' and 'confirm'). The description doesn't add any parameter-specific details beyond what the schema provides, such as format or constraints, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove') and resource ('game from the Lutris database'), and distinguishes it from file deletion. However, it doesn't explicitly differentiate from sibling tools like 'unassign_category' or 'update_game' which might also modify game records, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'unassign_category' or 'update_game' for modifying game records. The description mentions it doesn't delete files, but this is more about behavioral transparency than usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_service_gamesB
Search games from external services (Steam, GOG, etc.) synced in Lutris
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search by name or app ID | |
| service | No | Service to search (e.g. steam) | steam |
| limit | No | Results per page | |
| offset | No | Offset for pagination |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the search scope but doesn't disclose behavioral traits such as rate limits, authentication needs, error handling, or what 'synced in Lutris' entails operationally. This leaves gaps in understanding how the tool behaves beyond its basic function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary details. It earns its place by clearly stating the tool's function and scope, making it easy to scan and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters with full schema coverage but no output schema and no annotations, the description is minimally adequate. It covers the 'what' but lacks context on 'how' (e.g., return format, pagination behavior, or error cases), leaving the agent with incomplete information for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all parameters. The description adds no additional meaning beyond what's in the schema (e.g., it doesn't explain 'service' options like 'steam' or 'GOG' in more detail). Baseline 3 is appropriate as the schema handles parameter semantics adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Search games') and the resource ('from external services synced in Lutris'), specifying the scope. It distinguishes from siblings like 'list_games' by focusing on external services rather than the local library, though it doesn't explicitly contrast them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'list_games' or 'get_game'. The description implies usage for searching external services, but lacks explicit context, prerequisites, or exclusions, leaving the agent to infer based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unassign_categoryC
Remove a game from a category
| Name | Required | Description | Default |
|---|---|---|---|
| game_id | Yes | Game ID | |
| category_name | Yes | Category name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action is 'Remove', implying a mutation, but does not cover permissions, reversibility, error conditions, or side effects. This leaves significant gaps for a tool that modifies data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no wasted words, making it highly concise and front-loaded. It efficiently communicates the core purpose without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool performs a mutation with no annotations and no output schema, the description is incomplete. It lacks information on behavioral traits, error handling, and what happens upon success, which are critical for safe and effective use by an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting both parameters ('game_id' and 'category_name'). The description adds no additional meaning beyond what the schema provides, such as format details or constraints, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove') and the target ('a game from a category'), which is specific and unambiguous. However, it does not explicitly differentiate this tool from its sibling 'assign_category' beyond the opposite action, missing a direct comparison that would elevate it to a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'assign_category' or 'remove_game', nor does it mention prerequisites such as the game being assigned to the category. It lacks context for selection among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_gameC
Update fields on an existing game
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Game ID to update | |
| name | No | ||
| slug | No | ||
| runner | No | ||
| platform | No | ||
| directory | No | ||
| executable | No | ||
| year | No | ||
| service | No | ||
| service_id | No | ||
| installed | No | ||
| sortname | No | ||
| discord_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Update' implies a mutation operation, but the description doesn't specify whether this requires authentication, what happens to unspecified fields (partial vs. full updates), whether changes are reversible, or any rate limits. This leaves significant behavioral gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a basic tool description and front-loads the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 13 parameters, 8% schema coverage, no annotations, and no output schema, the description is severely inadequate. It doesn't explain what happens when the tool executes, what values are returned, or provide any context about the update operation's scope or effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 8% schema description coverage (only the 'id' parameter has a description), the description provides no additional parameter information beyond what's implied by the tool name. It doesn't explain what fields can be updated, their purposes, or any constraints, failing to compensate for the poor schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('update') and target resource ('fields on an existing game'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'add_game' or 'remove_game' beyond the basic verb distinction, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'add_game' for creating new games or 'get_game' for reading. There's no mention of prerequisites, constraints, or typical use cases, leaving the agent to infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
11 tool updates
v1.0.0- First observed
add_game - First observed
assign_category - First observed
create_category - First observed
get_game - First observed
get_library_stats - First observed
list_categories - First observed
list_games - First observed
remove_game - First observed
search_service_games - First observed
unassign_category - First observed
update_game
TDQS
Each tool has a clearly distinct purpose with no ambiguity. Tools like add_game, remove_game, and update_game handle different lifecycle stages, while category management tools (create_category, assign_category, unassign_category) are separate from game operations. The search_service_games tool is distinct from list_games, targeting external services versus the local library.
All tools follow a consistent verb_noun naming pattern (e.g., add_game, list_categories, update_game). The naming is uniform across all 11 tools, using clear action verbs paired with specific nouns, making it easy to predict functionality without any deviations in style.
With 11 tools, the count is well-scoped for managing a game library and categories. Each tool serves a clear purpose, such as CRUD operations for games and categories, plus utilities like search and stats, avoiding redundancy while covering the domain comprehensively.
The tool set provides complete coverage for the Lutris game management domain. It includes full CRUD for games (add, get, update, remove) and categories (create, list, assign/unassign), plus utilities for searching external services and library statistics, leaving no obvious gaps for agent workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
The media memory layer for AI agents and their humans. Your AI client gets 29 tools to search your collection, add items, update ratings, preview music, and find patterns across everything you've read, watched, and listened to.
Gateway between LLM agents and world data through eight tools and a bundled endpoint catalog.
Academic literature search, retrieval, and private library management on top of OpenAlex.
SEO & marketing toolkit for AI agents: GA4, Search Console, AdSense, GTM, PageSpeed, Trends.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to control Hydra Launcher programmatically — search games, manage downloads, configure Proton, organize library, and more via 46 MCP tools.MIT
- FlicenseCqualityDmaintenanceEnables querying game deals, prices, and managing collections using the IsThereAnyDeal API with 53 specialized tools.531-
- AlicenseNot gradedqualityCmaintenanceProvides comprehensive video game metadata and assets from Steam, SteamGridDB, and ScreenScraper, enabling game search, details, DLCs, reviews, player counts, and visual assets.133MIT
- FlicenseNot gradedqualityCmaintenanceProvides access to your Steam game library data through Claude Desktop, enabling game search, filtering, details, recommendations, and statistics.7-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Praeses0/lutris-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server