Unknowncheat
MCP server for UnknownCheats forum β Cloudflare bypass via puppeteer-real-browser, thread scraping, code extraction
Ask AI about Unknowncheat
Powered by Claude Β· Grounded in docs
I know everything about Unknowncheat. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
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:
