Skip to main content
Glama
L4D2 Workshop Mirror MCP

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 + 死图缓存)。

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

Inputs: title, workshop_id. Returns: object

find_series_partsA

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

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

Inputs: workshop_id (required), aggressive. Returns: object

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}

Inputs: job_id (required). Returns: object

get_map_detailA

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

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

Inputs: workshop_id (required), include_description. Returns: object

install_campaignA

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

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

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

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

Inputs: force, title, strict, async_mode, +2 more. Returns: object

list_new_campaignsA

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

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

Inputs: days, limit. Returns: object

query_curated_listA

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

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

Inputs: tag, limit, keyword. Returns: object

refresh_curated_listA

手动刷新 echocn 缓存。

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

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

Inputs: no named parameters. Returns: object

resolve_mapA

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

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

Inputs: query (required), limit. Returns: object

search_campaignsA

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

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

Inputs: days, sort, limit, keyword, +1 more. Returns: object

sync_idle_folderA

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

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

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

Inputs: no named parameters. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.1/5.0

    Scored across 11 tools

    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

    ActivityMaintained
    ResponsivenessNo recent community issues

    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
      3
      MIT