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 "Install 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-mcpshow 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 |
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 Server
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
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ReverserID/flarum-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server