UnknownCheats MCP
Enables programmatic interaction with the UnknownCheats forum by bypassing Cloudflare protection using a headed Chrome browser. Supports searching forums, reading threaded discussions with pagination, extracting code blocks in multiple languages, and maintaining persistent authenticated sessions.
README
uc-mcp-server
An MCP (Model Context Protocol) server for programmatically interacting with the UnknownCheats forum. Bypasses Cloudflare protection using a real Chrome instance and provides structured data extraction via Cheerio.
Features
- Cloudflare bypass — Uses
puppeteer-real-browserwith a headed Chrome instance to solve Turnstile challenges automatically - Cookie persistence — Session cookies saved to
cookies.jsonand reused across restarts - Auto-recovery — Detects detached frame / browser crash errors and relaunches automatically
- 6 MCP tools — Login, search, thread reading, pagination, code extraction, and debug
Tools
| Tool | Description | Parameters |
|---|---|---|
check_login |
Check if the browser session is logged in | — |
login |
Auto-fill credentials and log in | username, password |
search_forum |
Search UC or browse a subforum | query, subforum? |
get_thread |
Fetch thread posts with pagination | url, fetch_all_pages? |
extract_code |
Extract C++/C#/Python/Lua code blocks | url, limit?, export_to_file? |
debug_page |
Inspect raw page structure for debugging | url |
extract_code details
| Parameter | Default | Description |
|---|---|---|
url |
required | Thread URL |
limit |
10 (max 50) |
Max blocks to return inline |
export_to_file |
false |
Save all blocks to exports/<slug>_<timestamp>.json |
When the limit is hit, the response includes truncated: true, last_post_id (so you know where to resume), and a hint on how many blocks were skipped. Each block also carries a postId so you can trace it back to the exact post on the page.
Stack
- Runtime: Bun
- Language: TypeScript (ESM)
- Protocol: @modelcontextprotocol/sdk
- Browser: puppeteer-real-browser
- Parsing: cheerio
Requirements
- Bun v1.0+
- Google Chrome installed (required by puppeteer-real-browser)
Installation
# via npm
npx uc-mcp-server
# or clone
git clone https://github.com/amaralkaff/mcp-unknowncheat.git
cd mcp-unknowncheat
bun install
Setup with Claude Code
claude mcp add uc-mcp bun -- run "/path/to/mcp-unknowncheat/src/index.ts"
Or with npx:
claude mcp add uc-mcp npx -- uc-mcp-server
Setup with Claude Desktop
Add to %APPDATA%\Claude\claude_desktop_config.json (Windows) or ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"uc-mcp": {
"command": "npx",
"args": ["uc-mcp-server"]
}
}
}
Usage
On first run, Chrome opens in headed mode. Log in manually or use the login tool:
login({ username: "your_username", password: "your_password" })
Cookies are saved automatically. Subsequent runs reuse the session.
Examples
# Check login status
check_login()
# Browse the Apex Legends subforum
search_forum({ subforum: "apex-legends" })
# Search across all forums
search_forum({ query: "pubg offsets" })
# Get a thread (single page)
get_thread({ url: "https://www.unknowncheats.me/forum/..." })
# Get all pages of a thread
get_thread({ url: "https://www.unknowncheats.me/forum/...", fetch_all_pages: true })
# Extract code blocks (up to 10 inline)
extract_code({ url: "https://www.unknowncheats.me/forum/..." })
# Extract all code blocks and save to file
extract_code({ url: "https://www.unknowncheats.me/forum/...", export_to_file: true })
Project Structure
src/
├── index.ts # MCP server entry + tool registration
├── browser.ts # Chrome lifecycle, Cloudflare bypass, cookie persistence
├── types.ts # Shared TypeScript interfaces
├── tools/
│ ├── check-login.ts
│ ├── login.ts
│ ├── search-forum.ts
│ ├── get-thread.ts
│ ├── extract-code.ts
│ └── debug-page.ts
└── parsers/
├── thread.ts # Post extraction, pagination
├── search-results.ts # Search result parsing
├── code-blocks.ts # Code extraction + language detection
└── tags.ts # Thread tag detection ([Source], [Release], etc.)
Notes
- All logging uses
console.error()—console.log()is reserved for the MCP stdio transport - Thread pagination capped at 50 pages by default for
fetch_all_pages - Language detection supports: C++, C#, Python, Lua
- Exported files are saved to
./exports/and are excluded from git and npm
Issues
Found a bug or want to request a feature? Open an issue at:
https://github.com/amaralkaff/mcp-unknowncheat/issues
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.