flarum-mcp
The flarum-mcp server provides an MCP interface to interact with Flarum forums, enabling both read and write operations on forum content.
Read tools (no authentication required):
list_tags– List all forum tags/categories, including their numeric IDs, slugs, descriptions, and discussion counts.search_discussions– Full-text search across forum discussions, returning titles, IDs, authors, and tags (up to 50 results).recent_discussions– Fetch the most recently active discussions (up to 50 results).discussions_by_tag– List discussions under a specific tag slug (e.g.,malware-analysis), up to 50 results.get_discussion– Fetch a full discussion by ID, including its posts rendered as plain text (up to 50 posts).
Write tools (require authentication via API token or username/password):
create_discussion– Start a new discussion with a title, Markdown body, and at least one tag ID.reply_to_discussion– Post a Markdown reply to an existing discussion by its ID.upload files– Upload images or other files to embed in posts when creating or replying to discussions (requires thefof/uploadFlarum extension).
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@flarum-mcp show recent discussions"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
flarum-mcp
An MCP server for Flarum forums. It lets any MCP client (Claude Code, Claude Desktop, …) search, read, and post discussions through Flarum's REST/JSON:API. Read tools need no auth; write tools use a personal access token. Ships preconfigured for reverser.id.
Tools
Tool | Auth | What it does |
| – | List categories/labels with id, slug, description, count |
| – | Full-text search discussions |
| – | Most recently active discussions |
| – | Discussions under a tag slug (e.g. |
| – | Read a discussion + its posts as plain text |
| token | Start a new discussion (needs ≥1 tag id); optional |
| token | Reply to an existing discussion; optional |
| token | Upload an image/file (local path or URL) → embed snippet |
| – | Read a single post + permalink |
| token | Show which user the credentials authenticate as |
| token | Find users by username/name |
| token | Like / unlike a post |
| token | Follow / ignore a discussion |
| token | Replace a post's content |
| token | Change a discussion's title |
| token | Replace a discussion's tags |
| token | Pin / unpin a discussion |
| token | Lock / unlock a discussion |
| token | Delete a discussion (irreversible) |
| token | Delete a post (irreversible) |
create_discussion and reply_to_discussion accept an optional attachments
array of local file paths or http(s) URLs — each is uploaded and embedded in
the post (images render inline, other files as download links). Uploading
requires the fof/upload extension
enabled on the forum.
Related MCP server: discord-mcp
Configuration
Env var | Required | Default |
| no |
|
| write tools | – |
| write tools | – |
| optional alternative to the above | – |
Auth is only needed for the write tools (create_discussion,
reply_to_discussion); read tools work anonymously.
The recommended way is to just give it a username/email + password — the
server logs in for you via POST /api/token and caches the token for the life
of the process, so you never mint one by hand:
"env": {
"FLARUM_BASE_URL": "https://reverser.id",
"FLARUM_USERNAME": "your-username",
"FLARUM_PASSWORD": "your-password"
}Prefer not to store a password? Supply a ready-made token instead (takes precedence if set):
curl -s https://reverser.id/api/token -H 'Content-Type: application/json' \
-d '{"identification":"USERNAME_OR_EMAIL","password":"PASSWORD"}'
# -> {"token":"xxxxxxxxxxxx...","userId":1}
# then set FLARUM_API_TOKEN to that valueLegacy
REVERSER_*names (REVERSER_BASE_URL,REVERSER_USERNAME,REVERSER_PASSWORD,REVERSER_API_TOKEN) are still read as fallbacks.
Use with Claude Code
Once published, no install needed — run it with npx:
claude mcp add flarum-mcp \
--env FLARUM_BASE_URL=https://reverser.id \
--env FLARUM_USERNAME=your-username \
--env FLARUM_PASSWORD=your-password \
-- npx -y flarum-mcpOr a project-local .mcp.json:
{
"mcpServers": {
"flarum-mcp": {
"command": "npx",
"args": ["-y", "flarum-mcp"],
"env": {
"FLARUM_BASE_URL": "https://reverser.id",
"FLARUM_USERNAME": "your-username",
"FLARUM_PASSWORD": "your-password"
}
}
}
}Use with Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"flarum-mcp": {
"command": "npx",
"args": ["-y", "flarum-mcp"],
"env": {
"FLARUM_BASE_URL": "https://reverser.id",
"FLARUM_USERNAME": "your-username",
"FLARUM_PASSWORD": "your-password"
}
}
}
}Local development
git clone https://github.com/ReverserID/flarum-mcp.git
cd flarum-mcp
npm install # runs the build via the "prepare" script
npm start # node build/index.jsQuick manual test — handshake + list_tags over stdio, no client needed:
printf '%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"t","version":"0"}}}' \
'{"jsonrpc":"2.0","method":"notifications/initialized"}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_tags","arguments":{}}}' \
| node build/index.jsLayout
flarum-mcp/
├── src/
│ ├── index.ts # MCP server + tool definitions
│ └── flarum.ts # tiny Flarum JSON:API client + helpers
├── package.json
├── tsconfig.json
├── .env.example
└── LICENSENotes
stdio transport uses stdout for the protocol — the server only ever logs to stderr. Keep it that way if you extend it.
Extend with more tools (likes, flags, user lookup, notifications) by following the same
server.registerTool(...)pattern.
License
MIT © ReverserID
Available Tools
7 toolscreate_discussionCreate a discussionA
Start a new discussion (requires REVERSER_API_TOKEN). Flarum needs at least one primary tag — pass tag ids from list_tags. Content is Markdown.
Inputs: title (required), tagIds (required), content (required).
discussions_by_tagDiscussions in a tagA
List discussions filed under a given tag (category), by tag slug — e.g. 'malware-analysis'.
Inputs: slug (required), limit.
get_discussionRead a discussionA
Fetch a discussion by id, including its posts rendered as plain text.
Inputs: id (required), postLimit.
list_tagsList forum tagsA
List every category/tag on the reverser.id forum with its numeric id, slug, and discussion count. Use the ids here when creating a discussion.
Inputs: no named parameters.
recent_discussionsRecent discussionsB
List the most recently active discussions on the forum.
Inputs: limit.
reply_to_discussionReply to a discussionA
Post a reply to an existing discussion (requires REVERSER_API_TOKEN). Content is Markdown.
Inputs: content (required), discussionId (required).
search_discussionsSearch discussionsB
Full-text search discussions on the forum. Returns matching titles with id, author, and tags.
Inputs: query (required), limit.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 7 tools
Each tool targets a distinct action or query (create, list-by-tag, get, list-tags, recent, reply, search) with no overlap in functionality.
Most tools follow verb_noun pattern with snake_case, but 'discussions_by_tag' and 'recent_discussions' deviate slightly (preposition, adjective-first) from the dominant pattern.
7 tools is a reasonable count for a forum MCP, covering essential operations without being too sparse or bloated.
Covers create, read (by ID, by tag, recent, search), and reply; missing update and delete capabilities, but core read/write workflows are present.
Maintenance
Related MCP Connectors
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
Publish and discover MCP servers via the official MCP Registry. Powered by HAPI MCP server.
Public MCP server for discovering open jobs. Search, filter, and get application links.
MCP registry & directory: search, find & install 31k+ MCP servers & tools. Catalog and marketplace.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server for interacting with Discord.19203 npm12MIT
- AlicenseAqualityDmaintenanceMCP server for interacting with Discord via REST API, enabling guild, channel, and message operations using a bot token.7MIT
- AlicenseAqualityFmaintenanceProvides MCP-compatible AI clients with full access to a Flarum forum's API, enabling reading, searching, creating discussions, replying, moderation, and management of users, tags, and groups.151MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for NodeBB forums that enables AI assistants to access forum data, search topics, and perform semantic search via the Model Context Protocol.9 npmMIT