Tapatalk Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Tapatalk Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
An MCP (Model Context Protocol) server that connects AI assistants to any Tapatalk-enabled forum. This covers thousands of phpBB, vBulletin, XenForo, MyBB, and SMF forums that have the Tapatalk plugin installed.
Built specifically for use with Claude Code, but compatible with any MCP client.
# Clone the repo
git clone <repo-url> tapatalk-mcp
cd tapatalk-mcp
# Install dependencies
npm install
# Build
npm run buildAll configuration is through environment variables.
| Variable | Description | Example |
|---|---|---|
TAPATALK_FORUM_URL | Base URL of the forum (no trailing slash) | https://forums.example.com |
| Variable | Description | Default |
|---|---|---|
TAPATALK_USERNAME | Forum username for authenticated access | _(none — guest mode)_ |
TAPATALK_PASSWORD | Forum password | _(none — guest mode)_ |
When credentials are provided, the server logs in once on startup and automatically re-authenticates if the session expires. No background requests are made — re-login only happens when you actually use a tool and the session has gone stale.
Without credentials, the server operates in guest mode with access to public forums only.
| Variable | Description | Default |
|---|---|---|
TAPATALK_CHROME_CDP_URL | URL of a headless Chrome instance for Cloudflare-protected forums | _(none — direct requests)_ |
Some forums use Cloudflare which blocks server-side requests. When configured, the server first tries a direct request. If it gets a 403, it automatically connects to the headless Chrome instance via CDP, navigates to the forum to establish Cloudflare clearance, then executes XML-RPC calls from within the browser context using the browser's real TLS fingerprint. The browser page is cached for 10 minutes and automatically reconnects when stale.
Example: TAPATALK_CHROME_CDP_URL=http://chrome:9222 (when running alongside a chromedp/headless-shell container).
| Variable | Description | Default |
|---|---|---|
TAPATALK_READ_ONLY | When true, write tools are not registered at all | true |
TAPATALK_ALLOW_HTTP | Must be true to allow non-HTTPS forum URLs | false |
Read-only mode is on by default. The write tools (tapatalk_new_topic, tapatalk_reply_post) are not even available to the AI unless you explicitly set TAPATALK_READ_ONLY=false.
HTTPS is enforced by default. If your forum only supports HTTP, you must explicitly opt in with TAPATALK_ALLOW_HTTP=true. Be aware this transmits credentials in plaintext.
Add the server to your Claude Code MCP configuration:
{
"mcpServers": {
"tapatalk": {
"command": "node",
"args": ["/path/to/tapatalk-mcp/dist/index.js"],
"env": {
"TAPATALK_FORUM_URL": "https://forums.example.com"
}
}
}
}{
"mcpServers": {
"tapatalk": {
"command": "node",
"args": ["/path/to/tapatalk-mcp/dist/index.js"],
"env": {
"TAPATALK_FORUM_URL": "https://forums.example.com",
"TAPATALK_USERNAME": "your_username",
"TAPATALK_PASSWORD": "your_password"
}
}
}
}This gives you access to private forums and features like unread topics, while keeping write operations disabled.
{
"mcpServers": {
"tapatalk": {
"command": "node",
"args": ["/path/to/tapatalk-mcp/dist/index.js"],
"env": {
"TAPATALK_FORUM_URL": "https://forums.example.com",
"TAPATALK_CHROME_CDP_URL": "http://localhost:9222"
}
}
}
}Requires a headless Chrome instance running with remote debugging enabled (e.g. chromedp/headless-shell:stable).
{
"mcpServers": {
"tapatalk": {
"command": "node",
"args": ["/path/to/tapatalk-mcp/dist/index.js"],
"env": {
"TAPATALK_FORUM_URL": "https://forums.example.com",
"TAPATALK_USERNAME": "your_username",
"TAPATALK_PASSWORD": "your_password",
"TAPATALK_READ_ONLY": "false"
}
}
}
}| Tool | Description |
|---|---|
tapatalk_get_config | Get forum capabilities and Tapatalk version. Good for verifying connectivity. |
tapatalk_get_forum | List all forums/subforums in a tree structure. Returns forum IDs needed for other tools. |
tapatalk_get_board_stats | Total threads, posts, members, and online visitors. |
| Tool | Description |
|---|---|
tapatalk_get_topics | List topics in a specific forum. Supports pagination and filtering by stickies/announcements. |
tapatalk_get_latest_topics | Latest topics across all forums, ordered by date. |
tapatalk_get_unread_topics | Unread topics for the logged-in user. Requires authentication. |
tapatalk_get_participated_topics | Topics you've posted in. Requires authentication. |
| Tool | Description |
|---|---|
tapatalk_get_thread | Read posts in a topic. Returns post content, authors, timestamps, attachments. Paginated. |
tapatalk_get_thread_by_unread | Jump to the first unread post in a topic. Requires authentication. |
| Tool | Description |
|---|---|
tapatalk_search_topics | Search topics by keyword. Returns topic matches with short content previews. |
tapatalk_search_posts | Search individual posts by keyword. Returns post-level matches. |
tapatalk_search_advanced | Advanced search with filters: keywords, user, forum, date range, title-only mode. |
| Tool | Description |
|---|---|
tapatalk_get_user_info | Get a user's profile by username or user ID. |
tapatalk_get_online_users | List currently online users. |
TAPATALK_READ_ONLY=false)| Tool | Description |
|---|---|
tapatalk_new_topic | Create a new topic in a forum. Posts publicly to the forum. |
tapatalk_reply_post | Reply to an existing topic. Posts publicly to the forum. |
Once configured, you can interact with the forum through Claude naturally:
All list/search tools support pagination with page (1-based) and per_page (default 20, max 50) parameters. Responses include a meta object with:
{
"meta": {
"total": 142,
"page": 1,
"per_page": 20,
"has_more": true
}
}Search results also include a search_id that can be passed back for efficient pagination through cached server-side results.
The server communicates with the forum through Tapatalk's XML-RPC API, which is exposed at /mobiquo/mobiquo.php on any forum with the Tapatalk plugin installed. The MCP server:
byte[] (base64-encoded string) parameter conventionVisit https://your-forum.com/mobiquo/mobiquo.php in a browser. If you see a response (even an error page from the mobiquo script), Tapatalk is installed. If you get a 404, it's not.
TAPATALK_READ_ONLY=falseThis server works with any forum that has the Tapatalk plugin installed, including:
The Tapatalk API is standardized across all these platforms — the same MCP tools work regardless of the underlying forum software.
# Watch mode (recompile on changes)
npm run dev
# Build once
npm run build
# Run directly
TAPATALK_FORUM_URL=https://your-forum.com node dist/index.jsMIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.