goldsrc-query-mcp
This MCP server lets AI assistants query and control GoldSrc game servers (Half-Life, Counter-Strike 1.6, etc.).
ping: Measure round-trip latency to check server reachability.
get_server_info: Retrieve server metadata (name, map, player counts, VAC status, etc.).
get_players: List current players with names, scores, and time in-game.
get_rules: Fetch all server cvars (configuration variables).
get_all: Combine server info, players, and rules in one request.
send_rcon: Execute a single RCON command (e.g.,
sv_gravity 800).send_rcon_batch: Run multiple RCON commands over one authenticated connection, returning per-command responses.
Provides tools to query GoldSrc game servers (including Counter-Strike 1.6) for server information, player lists, rules, latency, and to send RCON commands.
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., "@goldsrc-query-mcpWhat map is 192.168.1.10:27015 running?"
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.
goldsrc-query-mcp
An MCP server that lets AI assistants query GoldSrc game servers (Half-Life, Counter-Strike 1.6, etc.) using the goldsrc-query library.
Tools
Tool | Description |
| Round-trip latency in milliseconds |
| Server name, map, player counts, VAC status, and more |
| Current player list with names, scores, and time in-game |
| All server cvars |
| Server info, player list, and rules in one call |
| Send a single RCON command and return the response |
| Send multiple RCON commands over a single authenticated connection |
Related MCP server: mc-rcon-mcp
Installation
npx goldsrc-query-mcpOr install globally:
npm install -g goldsrc-query-mcpRequirements: Node.js >=20.12.0
Usage
Transports
The server supports three transports selected via the MCP_TRANSPORT environment variable (or the --http flag for HTTP).
stdio (default)
node dist/index.js
# or
npx goldsrc-query-mcpHTTP
MCP_TRANSPORT=http MCP_PORT=3000 node dist/index.js
# shorthand flag
node dist/index.js --httpHTTPS
MCP_TRANSPORT=https MCP_PORT=443 MCP_TLS_CERT=cert.pem MCP_TLS_KEY=key.pem node dist/index.jsMCP_TLS_CERT and MCP_TLS_KEY must both be set; the server exits with an error if either is missing.
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"goldsrc": {
"command": "npx",
"args": ["goldsrc-query-mcp"]
}
}
}Example prompts
"What map is
192.168.1.10:27015running?""How many players are on the server at
cs.example.com?""Show me all the cvars on my server."
"Run
sv_gravity 800on my server at192.168.1.10with passwordsecret.""Kick all bots and change the map to de_dust2 on my server."
Tool reference
All tools accept address (required), port (default 27015), and timeout (default 3000ms).
ping
Returns the round-trip latency in milliseconds.
get_server_info
Returns server metadata as JSON - name, map, player counts, VAC status, server type, environment, and optional EDF fields.
get_players
Returns the player list as JSON - index, name, score, and duration (seconds in-game) per player.
get_rules
Returns all server cvars as JSON - total count and a list of { name, value } pairs.
get_all
Returns server info, player list, and rules in a single call. Use this instead of calling get_server_info, get_players, and get_rules separately.
send_rcon
address: "192.168.1.10"
password: "your_rcon_password"
command: "status"Sends a single RCON command and returns the server response.
send_rcon_batch
address: "192.168.1.10"
password: "your_rcon_password"
commands: ["sv_gravity 800", "mp_friendlyfire 1", "changelevel de_dust2"]Sends multiple RCON commands over a single authenticated connection. Returns an array of { command, response } pairs. Use instead of send_rcon when running more than one command.
Available Tools
7 toolsget_allGet AllARead-only
Get server info, player list, and rules in one call. Use this instead of calling get_server_info, get_players, and get_rules separately.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | Port number (default: 27015) | |
| address | Yes | IP address or hostname | |
| timeout | No | Request timeout in milliseconds (default: 3000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only and non-destructive, and the description adds useful context that it aggregates multiple data types into a single call. While not detailing response structure, it covers the key behavioral nuance of being a combined operation.
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 only two sentences long, with the first sentence stating the purpose and the second giving usage direction. Every word earns its place, making it highly efficient.
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 read-only tool with no output schema, the description communicates the core purpose and what data will be returned (server info, players, rules). While it does not explain the exact response structure, it gives enough context for an agent to decide when to invoke this tool. A slightly richer description of return format would push it to 5.
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 provides 100% coverage with descriptions and defaults for all parameters (address, port, timeout). The description does not add any parameter-specific meaning, so the baseline score of 3 is appropriate.
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 states exactly what the tool does: it gets server info, player list, and rules in one call. It also explicitly names the sibling tools it replaces, making the distinction clear.
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?
It explicitly recommends using this tool instead of calling get_server_info, get_players, and get_rules separately. This provides clear when-to-use guidance and names the alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_playersGet PlayersARead-only
Get the current player list with names, scores, and time in-game. Use to see who is on a server.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | Port number (default: 27015) | |
| address | Yes | IP address or hostname | |
| timeout | No | Request timeout in milliseconds (default: 3000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds that it returns 'names, scores, and time in-game,' which clarifies the data behavior but does not disclose additional traits like pagination or network specifics. This is adequate but not rich, matching a 3 given annotation coverage.
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 two short sentences with no fluff. The main action is front-loaded ('Get the current player list'), and the second sentence adds a usage hint. Every word 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?
For a simple read-only query tool with no output schema, the description sufficiently explains the return value (player list with names, scores, time) and the intended use case. It could mention the required game server context, but the sibling tools imply a server query environment. Overall, it is complete enough for an agent to select and invoke correctly.
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 all three parameters (address, port, timeout) having descriptions in the schema. The tool description itself does not add parameter-level detail, so it relies on the schema. Baseline 3 is appropriate because the schema handles parameter semantics fully.
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 tool's function: 'Get the current player list with names, scores, and time in-game.' This specific verb and resource make it easy to understand what the tool does, and it distinguishes itself from siblings like get_server_info or get_rules by focusing on player data.
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 a clear usage context: 'Use to see who is on a server.' This tells the agent when to invoke the tool, though it does not explicitly mention alternatives or exclusions. That fits the 'clear context, no exclusions' level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rulesGet RulesARead-only
Get all server cvars. Use to inspect server configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | Port number (default: 27015) | |
| address | Yes | IP address or hostname | |
| timeout | No | Request timeout in milliseconds (default: 3000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds that it returns 'all server cvars' but gives no further behavioral detail such as response format or timeout behavior.
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?
Two succinct sentences that front-load the purpose without any redundant or vague phrasing.
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 simple read-only tool, the description adequately covers purpose and usage. No output schema exists, but the return is implied ('server cvars'), and the annotation fills the safety context. Slight improvement possible by describing the return format.
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 descriptions cover 100% of parameters (address, port, timeout) with clear explanations, so the description adds no parameter-specific meaning. Baseline 3 is appropriate.
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 'Get all server cvars' with a specific verb and resource, and 'inspect server configuration' elaborates the intent. This distinguishes it from sibling tools like get_players and ping, which address different resources.
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?
Provides clear usage context ('Use to inspect server configuration') but does not explicitly mention when not to use or compare with alternatives like get_server_info. No exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_server_infoGet Server InfoARead-only
Get server metadata: name, map, player counts, VAC status, and more. Use to get an overview of a server or check if it is online.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | Port number (default: 27015) | |
| address | Yes | IP address or hostname | |
| timeout | No | Request timeout in milliseconds (default: 3000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds the 'check if it is online' behavior, but does not disclose potential timeouts, error handling, or what happens if the server is unreachable. It adds some value beyond annotations but is not rich in behavioral detail.
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?
Two sentences are concise and front-loaded with the core action. The phrase 'and more' is slightly vague but not wasteful. Overall well-structured and easy to scan.
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 simple read-only query tool with 3 parameters and no output schema, the description covers the purpose, key output fields, and a usage scenario. It is not overly complex, so this level of detail is sufficient.
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 coverage is 100% with descriptions for all parameters (address, port, timeout). The description does not add extra parameter guidance beyond the schema, so the baseline of 3 is appropriate.
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 tool retrieves server metadata and lists specific fields (name, map, player counts, VAC status). It distinguishes from sibling tools like get_players and get_rules by focusing on an overview, though it does not explicitly name alternatives.
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?
Provides a clear use case: 'overview of a server or check if it is online.' It implies when to use the tool but does not explicitly exclude use cases for sibling tools like ping or get_all, which could also handle online status or full information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pingPingARead-only
Measure round-trip latency to a GoldSrc server. Use to check if a server is reachable and responsive.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | Port number (default: 27015) | |
| address | Yes | IP address or hostname | |
| timeout | No | Request timeout in milliseconds (default: 3000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so the description need not restate those. It adds that this is a latency measurement, but doesn't disclose output format, timeout behavior, or the network protocol used. This is adequate but not rich.
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?
Two concise sentences, front-loaded with the action and purpose. No wasted words.
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?
The tool is simple, has read-only annotations, and no output schema. The description explains what it does and when to use it, but doesn't specify the return value (e.g., latency in ms or a boolean). Slight ambiguity, but acceptable for a basic ping tool.
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 provides 100% coverage with descriptions for all three parameters (address, port, timeout). The description adds no additional parameter semantics, so the baseline score of 3 is appropriate.
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 tool measures round-trip latency to a GoldSrc server, using a specific verb and resource. It is easily distinguished from sibling tools that retrieve server info or send RCON commands.
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?
It provides a clear use case: checking if a server is reachable and responsive. It doesn't explicitly mention alternatives or exclusions, but the context is sufficient for an agent to select this tool over the listed siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_rconSend RCONADestructive
Send a single RCON command and return the response. Use for one-off commands; prefer send_rcon_batch when sending multiple commands.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | Port number (default: 27015) | |
| address | Yes | IP address or hostname | |
| command | Yes | Command to execute | |
| timeout | No | Request timeout in milliseconds (default: 3000) | |
| password | Yes | RCON password |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, covering the mutation/destruction risk. The description adds that it sends a single command and returns the response, which is helpful but does not elaborate on side effects, authorization, or response format. Credit is given for the scope clarification, but no significant context is added beyond annotations.
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?
Two concise sentences: the first states the core function, the second gives usage guidance. No wasted words, and information is front-loaded.
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?
Description covers purpose, return value, and usage context. It distinguishes from send_rcon_batch and aligns with the destructive annotation. Given the simple tool nature and rich schema, nothing else is needed.
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?
All five parameters have schema descriptions (100% coverage), so the schema fully documents each parameter. The tool description itself adds no parameter-specific information, so the baseline score of 3 is appropriate.
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?
Description states 'Send a single RCON command and return the response,' clearly specifying the action, resource, and scope. It explicitly contrasts with sibling tool send_rcon_batch by emphasizing 'single' and noting the batch alternative.
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?
Provides explicit guidance: 'Use for one-off commands; prefer send_rcon_batch when sending multiple commands.' This clearly states when to use this tool and names the alternative for other cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_rcon_batchSend RCON BatchADestructive
Send multiple RCON commands over a single authenticated connection. Use instead of rcon when running more than one command.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | Port number (default: 27015) | |
| address | Yes | IP address or hostname | |
| timeout | No | Request timeout in milliseconds (default: 3000) | |
| commands | Yes | Commands to execute in order | |
| password | Yes | RCON password |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, so the safety profile is known. The description adds value by disclosing the single authenticated connection and the batch benefit, which goes beyond the structured data. It doesn't detail failure modes or execution order, but the annotations cover the destructive nature adequately.
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 two concise sentences. The first sentence states the core function, the second gives usage direction. No filler or redundancy.
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?
The description covers purpose and usage, and the schema documents all parameters. Annotations cover destructiveness. The only gap is the lack of mention of the return format or per-command result behavior, which is notable given there is no output schema, but the description is still sufficiently complete for an agent to select and invoke the tool correctly.
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 all five parameters having clear descriptions in the schema. The tool description adds no extra meaning beyond what the schema already provides, so the baseline of 3 applies.
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 tool sends multiple RCON commands over a single authenticated connection. It explicitly distinguishes from the sibling tool send_rcon by advising this batch variant when running more than one command, making the purpose unambiguous.
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 gives explicit usage guidance: 'Use instead of rcon when running more than one command.' This tells the agent exactly when to prefer this tool and implies that send_rcon is for single commands.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose: ping for latency, get_server_info for metadata, get_players for player list, get_rules for cvars, get_all for a combined query, and send_rcon/send_rcon_batch for command execution. The descriptions explicitly clarify when to use each, especially distinguishing the single vs. batch RCON tools and the combined vs. individual getters.
All tool names follow a consistent verb_noun pattern with lowercase and underscores: ping, get_*, send_*. This makes the toolset predictable and easy to navigate.
With 7 tools, the server is well-scoped. Each tool serves a necessary function for querying and managing a GoldSrc server, with no redundancy or excessive bloat.
The toolset covers the full lifecycle of interacting with a GoldSrc server: checking reachability (ping), retrieving server info, players, and rules, fetching everything in one call, and sending RCON commands in both single and batch modes. There are no obvious gaps.
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
Steam Web API: profiles, owned games, achievements, app news, player counts.
Live read-only discovery for public s&box packages, servers, and player activity.
Trust, freshness, policy, and discovery layer for public MCP servers.
Steam profiles, SteamID conversion, bans, FACEIT stats, friends and comparisons. Free, no API key.
Related MCP Servers
- AlicenseAqualityCmaintenanceIntegrates with Steam Web API to enable querying user profiles, game libraries, store data, and community features like reviews and workshop items.16MIT
- AlicenseAqualityDmaintenanceEnables Minecraft server management via RCON: execute commands, list players, get server info, manage whitelist and operators.91MIT
- AlicenseAqualityAmaintenanceEnables interaction with Steam: search games, get store details, reviews, prices, discounts, news, and player profiles, libraries, and achievements via the Steam Web API.252194MIT
- FlicenseAqualityCmaintenanceEnables control and inspection of a Factorio 2.0 server via RCON, with tools for administration, player management, game state queries, and Lua execution.19
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/omar-hindawi98/goldsrc-query-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server