An MCP server that exposes the Team Fortress Wiki to LLM clients over stdio.
Project description
tf2-wiki-mcp
An MCP server that exposes the Team Fortress Wiki to LLM clients (Claude Desktop, Claude Code, Cursor) over stdio.
Not affiliated with Valve Corporation or the Team Fortress Wiki contributors. Team Fortress 2 is a trademark of Valve Corporation. This is unofficial fan tooling.
What it does
Gives an LLM live, accurate access to TF2 wiki content so it stops guessing at weapon stats, patch notes, and cosmetic details.
- Generic wiki access — search, fetch pages, get summaries, list recent changes.
- TF2 domain tools — structured weapon stats, class loadouts, cosmetic lookup, event item lists, patch notes.
Tools
| Tool | Purpose |
|---|---|
search_wiki(query, limit) |
Full-text search |
get_page(title, format) |
Page content as wikitext, plain, or html |
get_page_summary(title) |
Lead-section plaintext |
get_page_sections(title) |
Section TOC for selective fetching |
get_recent_changes(limit, namespace) |
Recently edited pages |
get_weapon_stats(weapon_name) |
Parsed weapon infobox → structured stats |
list_class_loadout(class_name) |
All weapons in a class's wiki category |
get_cosmetic(name) |
Cosmetic item infobox params |
list_event_items(event_name) |
Items added in an update/event |
get_patch_notes(update_name) |
Patch notes for a specific update |
Plus: resource tf2wiki://main, prompts analyze_loadout and compare_weapons.
Install
Requires Python 3.11+ and uv.
git clone https://github.com/yusufaf/tf2-wiki-mcp
cd tf2-wiki-mcp
uv sync
Use with Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"tf2-wiki": {
"command": "uv",
"args": ["run", "--directory", "/absolute/path/to/tf2-wiki-mcp", "tf2-wiki-mcp"]
}
}
}
Restart Claude Desktop. The TF2 wiki tools appear in the tool picker.
Use with Claude Code
claude mcp add tf2-wiki uv run --directory /absolute/path/to/tf2-wiki-mcp tf2-wiki-mcp
Use with Cursor
Similar mcpServers entry in ~/.cursor/mcp.json — same shape as the Claude Desktop config above.
Development
uv sync --dev
uv run pytest # offline, uses recorded cassettes
uv run pytest --live # also hits the real wiki
Licensing & Attribution
Code: MIT (see LICENSE).
Wiki content: Not redistributed. This project contains zero scraped wiki data. All page content is fetched live from wiki.teamfortress.com at the user's request and returned directly to the user's LLM client — the same posture as a browser extension.
Wiki content is © its respective contributors under Valve's Steam Subscriber Agreement (Game Site terms). Users of this tool are responsible for compliance with Valve's terms. Code license ≠ content license: MIT covers this codebase, not the wiki content it fetches.
Requests to the wiki include a descriptive User-Agent (tf2-wiki-mcp/<version> (https://github.com/yusufaf/tf2-wiki-mcp)) per MediaWiki etiquette and respect maxlag/Retry-After responses.
Contributing
Don't check in scraped wiki text. Infobox examples for parser tests are fine (short, fair-use-grade fixtures). Full page dumps are not.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tf2_wiki_mcp-0.1.0a1.tar.gz.
File metadata
- Download URL: tf2_wiki_mcp-0.1.0a1.tar.gz
- Upload date:
- Size: 88.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d3587d0f72d993bdee29bf65ab8e87a4d84a8ebfa263f5125f187d7144c88a1
|
|
| MD5 |
31a412a1a51e298e790bb673394cac9b
|
|
| BLAKE2b-256 |
b09fcf5734ba19caf0c455d0998cca417a693a816a4afac2cb91e69c677d6173
|
Provenance
The following attestation bundles were made for tf2_wiki_mcp-0.1.0a1.tar.gz:
Publisher:
release.yml on yusufaf/tf2-wiki-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tf2_wiki_mcp-0.1.0a1.tar.gz -
Subject digest:
5d3587d0f72d993bdee29bf65ab8e87a4d84a8ebfa263f5125f187d7144c88a1 - Sigstore transparency entry: 1383334609
- Sigstore integration time:
-
Permalink:
yusufaf/tf2-wiki-mcp@4bc70f559f601e7786f278a1b3f3f30610a75180 -
Branch / Tag:
refs/tags/v0.1.0a1 - Owner: https://github.com/yusufaf
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4bc70f559f601e7786f278a1b3f3f30610a75180 -
Trigger Event:
push
-
Statement type:
File details
Details for the file tf2_wiki_mcp-0.1.0a1-py3-none-any.whl.
File metadata
- Download URL: tf2_wiki_mcp-0.1.0a1-py3-none-any.whl
- Upload date:
- Size: 11.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc6fe178c7c8ba95a6e85bdb735aa7914a6373afc0ba9312e1cc5c87e7e88bc2
|
|
| MD5 |
be657d3c9112d1ffb261527cdc15f8be
|
|
| BLAKE2b-256 |
8bacb561f427306c236ca7799ebe04d0b1455047fd108baaeb4978be7ad32750
|
Provenance
The following attestation bundles were made for tf2_wiki_mcp-0.1.0a1-py3-none-any.whl:
Publisher:
release.yml on yusufaf/tf2-wiki-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tf2_wiki_mcp-0.1.0a1-py3-none-any.whl -
Subject digest:
bc6fe178c7c8ba95a6e85bdb735aa7914a6373afc0ba9312e1cc5c87e7e88bc2 - Sigstore transparency entry: 1383334636
- Sigstore integration time:
-
Permalink:
yusufaf/tf2-wiki-mcp@4bc70f559f601e7786f278a1b3f3f30610a75180 -
Branch / Tag:
refs/tags/v0.1.0a1 - Owner: https://github.com/yusufaf
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4bc70f559f601e7786f278a1b3f3f30610a75180 -
Trigger Event:
push
-
Statement type: