4pda-mcp
Enables browsing the 4PDA forum through MCP tools for listing forums, topics, and posts using the lightweight lofi text version, with built-in rate-limit handling.
README
4PDA MCP
MCP server exposing the 4PDA forum lofi (text) version without a
browser. Uses impit to pass Cloudflare's TLS
challenge.
Why lofi?
The lofi/text version is ~50x smaller than the full page and has stable, simple
markup — ideal for LLM consumption. The full version (?act=idx, ?showforum=,
?showtopic=) is JS-heavy and Cloudflare-gated.
URL conventions (discovered)
4PDA changed the lofi entry. lofiversion/index.php?index.html now 404s. The
live format is:
lofiversion/index.php?f{forum_id}.html— a forum page (subforums + topics list)lofiversion/index.php?t{topic_id}.html— topic page 1lofiversion/index.php?t{topic_id}-{offset}.html— topic page N, step 20index.php?act=idx— full index, used only to enumerate top categories
The pinned header post repeats on every topic page; this server drops it on page ≥ 2.
Tools
list_forums(forum_id?)— top categories whenforum_idomitted, else the subforums (and topics summary) of a forum as a flat list. Returns a tree the client can nest.list_topics(forum_id)— topics in a forum: id, title, replies, is_important.list_posts(topic_id, page=1)— posts on a page: author, date, html (with internal links rewritten to lofi where possible). Header post dropped on page ≥ 2.
Run
pip install -e .
4pda-mcp # stdio MCP server
# or: mcp run src/fourpda_mcp/server.py
No browser, no auth needed (read-only public content). impit impersonates Chrome to clear Cloudflare.
Rate limiting
4PDA fronts the lofi endpoint with Cloudflare; it is uncached, so every request hits origin and Cloudflare rate-limits it. The limit is not published; measured empirically (Aug 2026):
| Request rate | Result |
|---|---|
| 1 req / 2s | clean (10/10) |
| 1 req / s | clean (20/20) |
| 2 req / s (0.5s gap) | clean (30/30) |
| 5 req / s (0.2s gap) | 429 on ~20th request, Retry-After: 3600 (1h block) |
The server stays well below the trip point by enforcing a minimum interval
between requests (FOURPDA_MIN_INTERVAL, default 1.0 — i.e. 1 req/s, a 2x
margin under the confirmed-safe 2 req/s). If a 429 still occurs, the server
records the Retry-After cooldown and, without sending further requests,
returns a structured rate_limited payload from every tool call:
{"rate_limited": true, "retry_after_seconds": 3600,
"retry_at_utc": "2026-08-24T23:00:00Z",
"hint": "4PDA is rate-limiting requests. Retry after 3600s."}
This is returned as a normal (non-error) result, so the agent can read
retry_after_seconds and wait rather than hammering a blocked endpoint. The
cooldown is capped at one hour so an anomalous Retry-After can't freeze the
process.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
mcp-server-qdrant
这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器