Skip to main content
Glama
FlameTN7

L4D2 Workshop Mirror MCP

by FlameTN7

L4D2 Workshop Mirror MCP

由LLM驱动的一站式群服求生之路2地图下载器

L4D2 工坊战役地图的 MCP 服务器:包含搜索、战役判定、依赖解析、一键下载、死图拦截。 所有脏活(网络请求、判定、去重、文件校验)在 MCP 内部完成,接上支持 MCP 的机器人(如 AstrBot)后, 用户一句"下xx地图"即可完成从找图到落盘游戏服务器全流程,并可引导LLM将地图文件传至群聊,达成全程懒人的目的。

由于借助了镜像站,该工具还可以拯救国内服务器的无代理网络环境问题!

其他的说明都是AI写的,嘻嘻。

Related MCP server: Steam-MCP

特性

  • 一站式下载:支持 workshop id / steam 链接 / 中文标题三种输入,自动解析依赖、自动补齐系列 Part

  • 战役判定:phase2 多因子打分,过滤 mod/皮肤等噪音,策展名单交叉验证

  • Part 系列识别:兼容 part1 / PART-1/2 / XXX 2/5 / [1/5] / 第一章 / Chapter N 等 10 种命名

  • 死图拦截:Steam 已删除/私密物品自动识别并缓存(30 天 TTL),不再反复推荐和下载

  • 异步下载:大图后台下载 + 进度轮询,群聊不阻塞

  • 去重与黑名单:75 天去重窗口、黑名单永不可绕过

  • 数据源融合:echocn(尼姑服的人工维护三方图列表,注意是明文传输)+ zhrradiant 创意工坊镜像站 + SteamWorkshopDownloader.io(依赖解析) + Steam 官方 API 四级数据源

快速开始(3 步)

# 1. 安装
python3 -m venv .venv && source .venv/bin/activate
pip install -e .

# 2. 配置(模板见 config.example.json,字段说明见 DEPLOYMENT.md §3.3)
cp config.example.json config.json
# 编辑 config.json:workshop_dir / filter_json_path / http_proxy 必填

# 3. 接入 AstrBot(MCP 配置模板见 DEPLOYMENT.md §3.5)

启动验证:python3 server.py(stdio 模式,日志出现 L4D2 Workshop Mirror MCP starting 即正常)。

文档导航

文档

读者

内容

README.md(本文档)

所有人

项目简介、快速开始、文档导航

DEPLOYMENT.md

部署/运维者

安装、配置格式约定、AstrBot 接入、升级、排障

ARCHITECTURE.md

开发者

架构设计、数据源、判定规则、决策记录

skills/l4d2-workshop-mirror/SKILL.md

LLM(可选但不建议,如果你依赖LLM自动部署可考虑)

LLM 使用说明书:工具指令、决策规则、回复纪律。需要 AstrBot skill 形态时可整体拷贝到 astrbot/data/skills/

examples/

部署者

各 JSON 配置/数据文件的格式模板

工具总览(11 个)

工具

用途

install_campaign

一站式下载(id / 链接 / 标题,可选异步)

resolve_map

标题解析为候选(不下载)

get_download_job

异步下载进度轮询

search_campaigns

搜索战役(自动过滤 mod/黑名单/去重/死图)

get_map_detail

单图详情 + 战役判定

check_eligibility

下载前预检(黑名单/去重/死图,零网络)

find_series_parts

系列 Part 识别

list_new_campaigns

最近 N 天新战役

query_curated_list

查 三方列表名单(模糊/繁简)

refresh_curated_list

手动同步最新三方列表缓存

sync_idle_folder

闲置目录同步到去重名单

环境要求

  • Python ≥ 3.10(3.14 测试通过)

  • 网络:元数据查询走 HTTP 代理;vpk 下载走内置加速线路

  • 可选:Steam Web API key(死图确认、三级回退兜底,无 key 也能运行)

Available Tools

11 tools
check_eligibilityA

检查一张图是否能下载。零网络调用,纯本地查询(filter.json + 死图缓存)。

适用场景:下载前预检、批量过滤。

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo物品标题(workshop_id 没传或不命中时使用)
workshop_idNo工坊物品 ID(与 title 至少传一个)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It discloses key behaviors: zero network calls, pure local query using filter.json and dead-image cache, implying a read-only, offline operation. This gives a strong sense of side effects, though edge-case behavior like cache updates isn't specified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two succinct phrases, front-loading the core purpose and then adding a one-line scenario note. Every sentence earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with 100% schema coverage and an output schema, the description adequately covers purpose, behavior, and usage context. It doesn't detail return format, but that is likely handled by the output schema. It omits failure modes, but overall the tool is simple enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both title and workshop_id already documented, including precedence and the requirement for at least one. The description adds no additional parameter semantics beyond what the schema provides, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks whether an image can be downloaded, with a specific verb ('检查') and resource ('一张图'). It also mentions the underlying mechanism (local query), which distinguishes it from sibling tools like get_download_job that handle actual download jobs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit use cases: pre-download checks and batch filtering. It also highlights zero network calls, which informs when it's appropriate (e.g., for lightweight filtering). It doesn't mention exclusions or alternatives, but the context is strong enough for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_series_partsA

识别一张图所属的完整系列(所有 Part)。

融合三路信号:①正向依赖(required_items+children+description) ②反向查询作者全部物品(/user-files) ③命名模式识别。

ParametersJSON Schema
NameRequiredDescriptionDefault
aggressiveNo命名像系列但 API 查不到关系时是否按 base_name 自动归类(默认 True)
workshop_idYes工坊物品 ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of behavioral disclosure. It does reveal that the tool fuses three signals including forward dependencies, reverse author queries, and naming pattern recognition, which gives some insight into its operation. However, it does not explicitly state whether the tool is read-only, what side effects it may have (e.g., API calls), or error behavior. This is moderate transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is exceptionally concise, with a clear main purpose followed by a bulleted list of three signal paths. Every sentence earns its place, and the structure makes the method easy to scan. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description outlines the core function and the three signals used, but lacks details on how these signals are combined, edge cases, or interpretation of results. While an output schema exists and can clarify return values, the description alone leaves some gaps for a tool with this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema descriptions cover 100% of parameters, each with clear explanations. The tool description's mention of '命名模式识别' aligns with the aggressive parameter's schema description but adds no new information beyond what the schema already provides. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: identifying the complete series (all Parts) that a given image belongs to. The verb '识别' (identify) and the resource '一张图' (an image/workshop item) are specific, and the description differentiates this tool from the campaign-related siblings by focusing on series parts discovery.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: to find all parts of a series for a workshop item. However, it does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions. The three fusion signals hint at the approach but not the decision criteria for when this tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_download_jobA

查询异步下载任务(install_campaign async_mode=True 时返回的 job_id)进度。

Returns: {job_id, status: "queued"|"running"|"done"|"error", elapsed_s, result: install 结果|null, error: str|null}

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the polling nature of the tool and provides the full return shape including statuses (queued/running/done/error), elapsed time, and result/error fields. While it does not explicitly state it is read-only or discuss rate limits, the query semantics and return contract are transparent enough for a simple async job monitoring tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the purpose, followed by a clearly formatted Returns section. Every sentence earns its place, and the structured return format is easy to parse. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, async job polling) and the presence of an output schema, the description is sufficiently complete. It explains the job_id source, the progress statuses, and the return structure. It could mention error scenarios or repeated polling behavior, but these are minor gaps for a minimal tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema only defines job_id as a string with no description (coverage 0%). The description compensates by explaining that job_id comes from install_campaign's async_mode=True response, which adds essential meaning. It does not specify format or validation rules, but the provenance detail is valuable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool queries the progress of an asynchronous download task, specifically the job_id returned by install_campaign when async_mode=True. This is a specific verb (query) and resource (download job progress), and it distinguishes itself from siblings like install_campaign by being the status-check counterpart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly indicates when to use this tool: after calling install_campaign with async_mode=True and receiving a job_id. It does not explicitly state when not to use it or mention alternatives, but the usage context is clear and likely sufficient for an agent to select it correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_map_detailA

查询单张地图的完整详情,包含 phase2 战役判定结果。

默认不返回 description(省 token),需要时设 include_description=True(截断到 500 字符)。

ParametersJSON Schema
NameRequiredDescriptionDefault
workshop_idYes工坊物品 ID
include_descriptionNo是否返回 description(截断到 500 字符)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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 transparently states the default behavior (description not returned to save tokens) and the truncation limit (500 characters), plus the inclusion of phase2 results. It does not mention permissions or error handling, but the 'query' verb implies a read-only operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: two short sentences that front-load the primary purpose and then clarify the key parameter behavior. There is no redundant information or unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with an output schema, the description adequately covers the essential context: what the tool does, the specific phase2 result it includes, and the critical default/optional behavior. It lacks edge-case context like not-found behavior or prerequisites, but the overall completeness is sufficient for this query tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides complete descriptions for both parameters (workshop_id and include_description) with 100% coverage. The description adds the rationale for the default ('省 token' - save tokens) and reiterates the truncation behavior, but this is largely redundant with the schema. No significant additional parameter semantics are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '查询单张地图的完整详情' (query complete details of a single map), and adds a specific distinguishing feature: '包含 phase2 战役判定结果' (including phase2 campaign determination result). This differentiates it from sibling list/search tools by focusing on singular detail retrieval with a unique data point.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives. It implies usage by describing a single-map detail query, but there is no mention of when not to use it or alternative tools. The only usage-related guidance is about the include_description parameter, which is more about parameter semantics than tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

install_campaignA

一站式下载:识别 → 解析依赖 → 下载 → 落盘 → 更新去重名单。

适用:用户给出 workshop_id、steam 链接或具体地图名要下载时。 workshop_id 与 title 至少传一个:

  • workshop_id 可为纯数字 id、steamcommunity 链接(自动提取 id)

  • title 为中文/英文标题时走内部解析链(curated 模糊 → 镜像搜索 → phase2 判定), 唯一高可信匹配自动下载,多候选返回 candidates[] 待确认

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo忽略 dedup_active 限制(黑名单永远不可绕过)
titleNo地图标题(workshop_id 为空时使用)
strictNo严格模式(默认 True)。definitely_mod 物品直接拒绝下载; ambiguous 物品返回 preview 不下载,需用户/LLM 确认后传 strict=False 重试。
async_modeNoTrue 时后台异步下载,立即返回 job_id,用 get_download_job 查询进度
auto_partsNo自动识别并下载同系列 Part
workshop_idNo工坊物品 ID 或 steam 链接

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It discloses the full pipeline side effects (dependency parsing, disk write, dedup list update) and the matching behavior (unique high-confidence match auto-downloads, multiple candidates returned for confirmation). It does not discuss all edge behaviors like force/blacklist or async handling, but those are covered in schema parameter descriptions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured, with a pipeline summary followed by bullet-point clarifications for the two key parameters. Every sentence adds value, and the formatting makes the workflow and input rules easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (6 parameters, output schema present), the description provides a strong high-level overview of the workflow and input requirements. It does not explain the return structure, but the output schema covers that. It also relies on schema parameter descriptions for strict/async/force behavior, which is acceptable given full schema coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds meaningful semantics beyond the schema: workshop_id may be a numeric ID or a Steamcommunity link (auto-extracted), and title triggers a multi-stage internal resolution chain with candidate confirmation. This goes beyond the raw schema fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs a one-stop download pipeline: identify, resolve dependencies, download, save, and update the dedup list. It explicitly names the supported input forms (workshop_id, Steam link, map title) and distinguishes it from sibling tools like get_download_job and resolve_map by focusing on the full download workflow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states when to use the tool: when the user provides a workshop_id, Steam link, or map name for download. It also gives the key prerequisite that at least one of workshop_id or title must be provided, and explains the resolution behavior for titles. It does not mention alternatives or exclusions, but the context is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_new_campaignsA

列出最近 N 天新增的战役地图(增量发现)。

自动跳过黑名单和 active 去重,融合 echocn 策展名单。

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo时间范围(默认 7)
limitNo返回条数上限(默认 20)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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 explicitly mentions that blacklists are skipped, active maps are deduplicated, and the results incorporate the echocn curated list. This adds useful behavioral context beyond the schema, though it does not discuss side effects or error handling, which are less relevant for a read-only list operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences. The first sentence front-loads the primary purpose, and the second adds key filtering behavior. Every word earns its place without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple list tool with only two optional parameters and an existing output schema. The description, combined with the schema, fully covers what the tool does, how results are filtered, and what parameters are available. There are no critical gaps given the tool's low complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides full documentation for both parameters ('days' and 'limit') with defaults, achieving 100% schema coverage. The description adds no additional parameter semantics beyond reinforcing that 'days' corresponds to the 'N' in the description. Since the schema does the heavy lifting, a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the action ('列出' / list), the resource ('最近 N 天新增的战役地图' / campaign maps newly added in the last N days), and the scope ('增量发现' / incremental discovery). It distinguishes itself from siblings like search_campaigns by highlighting its incremental, blacklist-skipping, and deduplicating behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: to discover campaign maps added within a recent time window. It implies this is for incremental discovery rather than general search, but it does not explicitly name alternatives or state when not to use the tool, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query_curated_listA

查询 echocn 人工策展的 461 条高质量战役地图名单。

含 16 种中文标签、章节信息、人工标注。 这是质量最高的数据源,应优先用于判定和推荐。

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNo中文标签名(如 "高质量"/"高难度"/"推荐")
limitNo返回条数上限(默认 20)
keywordNo中英文标题模糊搜索(空字符串不限定)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the transparency burden. It conveys that this is a read-only query over a fixed curated list of 461 entries and lists content dimensions, but it does not mention data freshness, pagination behavior, or whether refresh_curated_list should be called first. The query verb implies no side effects, making it 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short sentences, front-loaded with the core query target. Each sentence adds distinct information: what is queried, what it contains, and when to prefer it. There is no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema is present, so return value details are already covered. The description sufficiently explains scope (461 curated maps), content (tags, chapters, annotations), and usage priority (highest quality for judging/recommending). It omits minor operational details such as ordering or refresh behavior, but the definition is still well-rounded.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaningful context by revealing that the `tag` parameter operates over 16 possible Chinese labels and that results include chapter info and human annotations, which clarifies what the keyword and tag filters act upon. This lifts it above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb ('查询') and a concrete resource ('echocn 人工策展的 461 条高质量战役地图名单'), clearly distinguishing it from generic search/list tools. It further specifies content ('16 种中文标签、章节信息、人工标注') and adds a prioritization signal ('质量最高的数据源,应优先用于判定和推荐'), which reinforces its distinct role among siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool: '应优先用于判定和推荐' (should be prioritized for judging and recommending), and labels it as the highest-quality data source. However, it does not explicitly name alternative tools or provide when-not-to-use criteria, so it misses the full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refresh_curated_listA

手动刷新 echocn 缓存。

MCP 启动时已自动拉取,每日后台也会自动刷新。 此工具用于:①首次部署验证 ②怀疑缓存过期 ③排障。

Returns: {success, total, sha256, cached_at, error?}

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses the return format ({success, total, sha256, cached_at, error?}) and that it's a manual override of automatic processes. However, it does not mention potential side effects like overwriting existing cache, whether the operation is idempotent, or blocking behavior—gaps given the absence of annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, well-structured with numbered use cases and a clear return format section. Every sentence contributes: purpose, automatic behavior context, use cases, and return shape. No redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter tool with an output schema (indicated by the Returns section), the description adequately covers purpose, usage scenarios, and return structure. It does not address relationship to sibling tools like query_curated_list beyond the refresh/query distinction, but the tool is simple and self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description adds no parameter details, but none are needed. The return format description partially helps understand what the tool produces, which is useful context beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with '手动刷新 echocn 缓存' (manually refresh echocn cache), providing a specific verb and resource. It clearly distinguishes itself from the sibling tool 'query_curated_list' by focusing on refresh operation rather than query/read.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states automatic refresh on MCP startup and daily background refresh, then lists three concrete use cases (initial deployment verification, suspected stale cache, troubleshooting). This provides clear when-to-use guidance and implicitly when not to use, as manual refresh is reserved for exceptional cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_mapA

解析地图标题为工坊候选(不下载)。

适用:用户说"XXX 有没有 / XXX 的 id 是什么",或 install_campaign 传标题 前先看看候选。融合 echocn 人工策展名单与镜像站搜索,按 phase2 判定排序。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo返回候选条数上限(默认 5)
queryYes中文/英文标题关键词

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses the tool does not download, fuses echocn curated list with mirror search, and sorts by phase2 criteria. This gives a solid safety and behavior profile, though 'phase2' is left undefined and empty-result handling isn't mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first states the purpose, the second packs usage scenarios and behavioral specifics. Every phrase earns its place with no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, usage context, and behavioral constraints (no download, source fusion, sorting) well. With an output schema present, it doesn't need to detail return values. Minor gaps are the unexplained 'phase2' term and no mention of zero-result behavior, but overall it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters are documented with descriptions. The tool description only restates that query is a map title and limit is candidate count, adding no meaningful semantic beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool resolves map titles into workshop candidates and notes it does not download. This clearly distinguishes it from installation and search tools in the sibling set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The '适用' section provides concrete scenarios: when users ask about map existence/ID or before installing via install_campaign. This gives clear context for usage, though it doesn't explicitly enumerate alternatives or when-not-to-use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_campaignsA

在工坊中搜索战役地图,用 phase2 多因子规则预筛, 自动过滤黑名单和 active 去重。

默认只返回 score≥3 的高可信结果。模棱两可的(score 1-2,可能是 mod) 默认不返回;如需查看,设 include_ambiguous=True。

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo时间范围 1/7/30/90/180/365/-1(默认 -1 = 所有时间)
sortNo排序 trend/new/relevancetrend
limitNo返回条数上限(默认 10,最大 30)
keywordNo搜索关键词(空字符串表示不限定)
include_ambiguousNo是否返回 score=1-2 的模糊判定结果(默认 False)。 开启后每条会带 likely_mod 提示,便于 LLM/用户决策。

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of disclosure. It reveals the internal scoring system (score≥3 threshold), the blacklist and active deduplication filtering, and the behavior of the include_ambiguous flag (adding likely_mod hints). This goes well beyond a simple 'search' and gives the agent confidence about what to expect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with no redundant words. It front-loads the core purpose ('search campaign maps'), then explains the filtering behavior and the key parameter option, all in a compact, well-structured manner.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema is present, so return value details are not required in the description. The description covers the primary purpose, the default filtering behavior, and the include_ambiguous flag, which is enough context for a search tool. It does not mention the generic parameters (keyword, sort, limit, days) but those are self-explanatory from the schema, leaving the description complete for the unique behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides descriptions for all 5 parameters, so the baseline is 3. The description text adds context about the scoring threshold and the include_ambiguous behavior, but it does not introduce new per-parameter semantics beyond what the schema already captures. Each parameter's meaning is fully documented in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches for campaign maps in the workshop, with a specific verb ('search') and resource ('campaign maps'). It also introduces unique filtering behavior (phase2 multi-factor rules, blacklist, active dedup) that distinguishes it from sibling list tools like list_new_campaigns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the default behavior (only returns high-confidence score≥3 results) and explicitly tells the user when to set include_ambiguous=True to see ambiguous, mod-like results. However, it does not explicitly compare with alternative tools or state when not to use this tool, leaving some room for interpretation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sync_idle_folderA

扫描闲置地图目录(已玩过的图),将未在 dedup 名单的 .vpk 加入去重列表。

适用场景:手动整理闲置目录后触发同步;install_campaign 完成后会自动调用一次。 已在 dedup 名单的会跳过,不会重复添加。

Returns: { "synced": int, # 新加入条数 "skipped_duplicates": int, # 已在名单跳过的条数 "scanned_total": int, # 扫描到的 .vpk 总数 "idle_dir": str }

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral disclosure burden. It explains the scanning, filtering, adding, and return summary, but lacks details on error handling, side effects beyond the list addition, or prerequisites such as directory existence.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured, with the core action first, followed by usage scenarios and duplicate handling, and a clear return format. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with a described output schema, the description covers the essential behavior, usage contexts, and return values. It could mention edge cases like missing directories or failure states, but overall it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters, the schema needs no elaboration. The description adds meaningful context about the dedup logic and the output fields, which aligns with the baseline for parameterless tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: scanning an idle map directory and adding .vpk files not in a dedup list to that list. It uses specific verbs (scan, add) and identifies the resource (.vpk files, dedup list), making it distinct from siblings like install_campaign.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage contexts: manual cleanup of the idle directory and automatic invocation after install_campaign. It also clarifies that duplicates are skipped, providing clear when-to-use guidance, though it does not explicitly name alternative tools.

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.

  1. 11 tool updatesv0.3.0
    • First observedcheck_eligibility
    • First observedfind_series_parts
    • First observedget_download_job
    • First observedget_map_detail
    • First observedinstall_campaign
    • First observedlist_new_campaigns
    • First observedquery_curated_list
    • First observedrefresh_curated_list
    • First observedresolve_map
    • First observedsearch_campaigns
    • First observedsync_idle_folder

TDQS

A4.1/5.0
Disambiguation4/5

Most tools target distinct operations: eligibility check, detail lookup, search, resolution, download, job status, etc. Some overlap exists between resolve_map and search_campaigns (both return map candidates), but descriptions clarify their different intents.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern (check_eligibility, refresh_curated_list, get_map_detail, etc.), making the set predictable and easy to navigate.

Tool Count5/5

11 tools is well within the ideal 3-15 range. Each tool serves a clear purpose in the L4D2 workshop mirror workflow, from search and eligibility to installation and cache management, without redundancy.

Completeness4/5

The domain covers discovery, search, resolution, installation, job tracking, curation, and local folder sync. Minor gaps exist (e.g., no explicit tool to cancel a download or remove from dedup list), but core workflows are fully supported.

Maintenance

ActivitySlowing
ResponsivenessNo issues

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables discovery and automatic installation of MCP servers via mcpmarket.com integration. Searches repositories, scrapes GitHub READMEs for configuration details, and provides one-click installation to MCP clients.
    -
  • A
    license
    A
    quality
    B
    maintenance
    MCP server for Valve's Steam that enables querying game libraries, player profiles, achievements, friends, store listings, Workshop items, and current player counts. Provides 14 tools across 5 categories with a React dashboard and REST bridge.
    14
    1
    MIT

Latest Blog Posts

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/FlameTN7/L4D2-Map-AutoDownloader-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server