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 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/linkrobins/mcp-for-flarum'
If you have feedback or need assistance with the MCP directory API, please join our Discord server