MCP for Flarum
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FLARUM_URL | Yes | Your forum's base URL, e.g. https://discuss.example.com | |
| FLARUM_MODE | No | write (default) or read. In read mode the server refuses every mutating request. READ_ONLY=1 does the same. | write |
| FLARUM_API_KEY | No | A Flarum API key (from the api_keys table). Without it, only public read access is available. | |
| FLARUM_TIMEOUT | No | Request timeout in ms (default 30000) | 30000 |
| FLARUM_USER_ID | No | Act as this user id when using a master API key |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| flarum_listA | List or search any Flarum resource collection (discussions, posts, users, tags, groups, notifications, flags, etc., including third-party extension resources). Supports JSON:API filter, include, sort, pagination, and sparse fieldsets. Long text fields are truncated by default to protect context -- raise maxFieldChars or use fields/flarum_get to read full content. Example: type="discussions", filter={ q: "search terms" }, include="user,tags". |
| flarum_getA | Fetch a single Flarum resource by type and id, optionally including relationships and narrowing fields. Returns full field values by default (no truncation). Example: type="discussions", id="42", include="posts,user". |
| flarum_searchA | Full-text search across discussions using Flarum's gambit/search (filter[q]). Long fields are truncated by default. Example: query="upgrade postgres". |
| flarum_requestA | Escape hatch: make an arbitrary request to any Flarum API endpoint, for anything not covered by the typed tools (custom extension routes, non-JSON:API endpoints, etc.). In read-only mode, non-GET methods are refused. Path is relative to the API root, e.g. "/discussions" or "/fof/gamification/ranks". |
| flarum_whoamiA | Return the forum's basic info and the user the configured API key acts as. Useful to verify connectivity and permissions. |
| flarum_createB | Create any Flarum resource via JSON:API. Provide the resource type, its attributes, and optional relationships. Requires an API key whose user has permission. Example: type="discussions", attributes={ title, content }, relationships={ tags: { data: [{ type: "tags", id: "1" }] } }. |
| flarum_updateA | Update (PATCH) any Flarum resource by type and id. Used for editing posts/discussions and for moderation: lock/sticky a discussion, approve/hide a post, change user groups, etc. Example: type="discussions", id="42", attributes={ isLocked: true }. |
| flarum_deleteA | Delete any Flarum resource by type and id (e.g. delete a post, discussion, or user). Irreversible. Requires appropriate permissions on the API key's user. |
| flarum_create_discussionA | Start a new discussion (thread) with a title and first-post content. Optionally attach tag ids (required by forums that use the Tags extension). |
| flarum_replyB | Post a reply (comment) to an existing discussion by its id. |
| flarum_docs_searchA | Search the official Flarum 2.0 documentation (docs.flarum.org/2.x) and return ranked results with their page path and a snippet. Use this to look up how something works -- admin settings, permissions, extenders, REST API usage, extension development -- before acting on a forum. Reads the live docs, so results reflect the current docs. Then call flarum_docs_get with a result's "page" to read the full page. Example: query="approve posts permission". |
| flarum_docs_getA | Fetch the full Markdown of one Flarum 2.0 documentation page. Accepts a page slug ("rest-api", "extend/api"), a site path ("/2.x/rest-api"), or a full docs URL (any #anchor is ignored). Reads the page's Markdown source, so code blocks and headings are preserved. Pair with flarum_docs_search to find the right page first. |
| flarum_docs_listA | List the available Flarum 2.0 documentation pages (paths and URLs), from the live sitemap. Useful to discover what pages exist before reading one with flarum_docs_get. Optionally pass a substring to filter by path, e.g. filter="extend". |
| flarum_devA | A development reference for building or reviewing a Flarum 2.0 extension: scaffolding and architecture, composer.json, the TypeScript frontend, backend (API resources/models/migrations), scaling (queue-driver portability, Redis, multi-server file storage), optional ecosystem integrations (realtime, audit, fof widgets, fof sitemap), i18n, testing, static analysis & CI, releasing, and porting a 1.x extension to 2.0. Combines the conventions the official docs establish, the de-facto FriendsOfFlarum standard, and patterns that prevent real production bugs (fail-closed API fields, lazy-chunk-safe extends, atomic creation, the PHPStan/testing setup). Consult it before scaffolding, when adding a feature, or when reviewing extension code. Pair with flarum_docs_search/flarum_docs_get for the authoritative API reference. Omit |
| flarum_troubleshootA | A plain-language guide for forum ADMINS and non-developers to diagnose a broken or misbehaving Flarum forum and prepare a request for help (distinct from flarum_dev, which is for building extensions). Covers safe first-aid fixes, how to run |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| build-flarum-extension | Scaffold and implement a new Flarum 2.0 extension the right way, consulting the built-in flarum_dev reference and live flarum_docs at each step so it follows the conventions and compatibility contracts from the start. |
| review-flarum-extension | Audit an existing Flarum 2.0 extension against the canonical flarum_dev contracts, topic by topic, reporting concrete violations with file:line and fixes. |
| check-flarum-compatibility | Focused audit of whether an extension works on a real production stack (database/Redis queues, Horizon, multi-server file sync) and with the optional ecosystem extensions (realtime, audit, widgets, sitemap), per the flarum_dev `scaling` and `integrations` contracts. |
| prepare-flarum-support-request | Help a non-developer turn a broken or misbehaving Flarum forum into a clean, redacted support request: auto-collect what the forum's API exposes, guide them through the rest, and tell them where to post it. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/karl-bullock/mcp-for-flarum'
If you have feedback or need assistance with the MCP directory API, please join our Discord server