
Discourse MCP Server: Setup for Claude, Cursor and Other Apps
Lets Claude, Cursor and other assistants search and read Discourse forums, and post or edit if you allow it.
Discourse MCP is the Discourse project's own server for its forum software. Your assistant can search topics and posts, read threads, look up users and run admin reports. It can also post, edit and send private messages if you turn writes on.
It runs on your computer and starts read-only with no sign-in, so it can read any public forum. Pick a forum by asking the assistant to select its address, or start the server with a fixed site. Private messages and admin tools need a Discourse API key.
Good for
- Community managers who want summaries of busy topics and recent activity
- Support teams that search forum answers before replying
- Forum admins who want to run Data Explorer queries or manage the forum with an assistant
Works in
12 should work
Tap an app to see how to set it up and any known problems.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Client does not support this transport.
Client does not support this transport.
Install Discourse MCP
Claude Code
- 1
Copy this prompt.
Add the Discourse MCP server to Claude Code. Run this command: claude mcp add discourse -- npx -y @discourse/mcp Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires Node.js.
Built from the package data we hold. Not yet tested by us.
Tools
Finds forum topics that match a search
Searches a Discourse site and returns matching topics with their titles and links, plus how many results there are. You can use Discourse search syntax, like tags and categories.
Try: “Search the forum for topics about slow uploads.”
Network ·
discourse_searchFinds the exact posts that match, with snippets
Searches for individual posts instead of whole topics. Each match keeps its highlighted snippet, author, topic and category. This is keyword search, not AI search.
Try: “Which posts mention the 2FA bug, and who wrote them?”
Network ·
discourse_search_postsLists topics that match filter rules
Returns topics that match Discourse filter rules, such as a category, a tag or an ordering. Use it when you want a list rather than a text search.
Try: “Show the newest topics in the support category.”
Network ·
discourse_filter_topicsReads a topic and its posts
Returns a topic's details and its posts. Very large post limits can take several requests.
Try: “Summarize the topic about the new theme.”
Network ·
discourse_read_topicReads chosen posts from a long topic
Reads up to 50 posts from a topic: the earliest, latest, around a given post, or only those by one user. It reports how long the topic is, without claiming it read it all.
Try: “Read the last 10 replies in topic 4521.”
Network ·
discourse_read_topic_postsReads one post
Returns a single post with its author, time and raw text.
Try: “Show me post 3 in topic 4521.”
Network ·
discourse_read_postLists what a user has posted
Returns a user's posts and replies page by page, with a short excerpt of each.
Try: “What has user alice posted recently?”
Network ·
discourse_list_user_postsShows a user's profile
Returns a user's name, trust level, join date and bio, and whether they are an admin or moderator.
Try: “Who is user alice and what is her trust level?”
Network ·
discourse_get_userLists the forum's users (admin key)
Lists users through the admin API, about 100 per page. It needs an admin API key.
Try: “List the newest users on the forum.”
Network ·
discourse_list_usersReads messages from a chat channel
Returns the messages in a Discourse chat channel with sender, time and thread details.
Try: “Show the last messages in chat channel 12.”
Network ·
discourse_get_chat_messagesLists your private message inbox
Lists personal or group private-message mailboxes. It needs a key for that site, because private messages are never public.
Try: “List my unread private messages.”
Network ·
discourse_list_private_messagesReads one private message thread
Returns a private message with its posts and who is allowed to see it. It refuses public topics.
Try: “Read private message 987.”
Network ·
discourse_read_private_messageFetches a saved draft
Retrieves a draft you saved earlier, by its key.
Try: “Get my draft for the release announcement.”
Network ·
discourse_get_draftShows a saved Data Explorer query
Returns a saved Data Explorer query with its SQL and parameters. It needs an admin API key.
Try: “Show the SQL of query 14.”
Network ·
discourse_get_queryRuns a Data Explorer query (admin key)
Runs a saved Data Explorer query with your parameters and returns the rows. Queries run in a read-only transaction with a 10-second limit, and need an admin API key.
Try: “Run query 14 for the last 30 days.”
Network ·
discourse_run_queryStarts a new topic (writes on)
Creates a topic with a title, text, category and tags. It exists only when writes are turned on. Posting as another user needs an admin key.
Try: “Start a topic called Agentic workflows in category 1.”
Write ·
discourse_create_topicReplies in a topic (writes on)
Adds a post to an existing topic. It exists only when writes are turned on. It reports the actual author so you can check who it posted as.
Try: “Reply to topic 4521 with a short thank you.”
Write ·
discourse_create_postEdits a topic's title, category or tags (writes on)
Changes a topic's title, category, tags or featured link. It exists only when writes are turned on.
Try: “Move topic 4521 to the how-to category.”
Write ·
discourse_update_topicEdits the text of a post (writes on)
Replaces the content of an existing post. It exists only when writes are turned on.
Try: “Fix the typo in post 3 of topic 4521.”
Write ·
discourse_update_postCreates a category (writes on)
Adds a category with a name, colours and description. It exists only when writes are turned on.
Try: “Create a category called AI Research.”
Write ·
discourse_create_categoryCreates a user account (writes on, admin key)
Creates a user through the signup API using an admin API key. It says whether the forum confirmed it. It exists only when writes are turned on.
Try: “Create a user for a new teammate.”
Write ·
discourse_create_userEdits a user profile or avatar (writes on)
Changes profile fields and can set the avatar from an uploaded file. It exists only when writes are turned on.
Try: “Update alice's bio.”
Write ·
discourse_update_userUploads an image or file (writes on)
Uploads a file from base64 data, a web address or a local path. Local paths work only inside folders you list with the upload-paths setting. It exists only when writes are turned on.
Try: “Upload this screenshot and embed it in my reply.”
Write ·
discourse_upload_fileSaves a draft (writes on)
Creates or updates a draft and returns its key.
Try: “Save this text as a draft reply.”
Write ·
discourse_save_draftDeletes a draft (writes on)
Deletes a draft by key. It needs the current sequence number so it does not clobber a newer edit.
Try: “Delete my draft for the release announcement.”
Delete ·
discourse_delete_draftSends a new private message (writes on)
Starts a private message to users, groups or email addresses. Unknown emails may create staged users. It exists only when writes are turned on.
Try: “Message alice and the reviewers group about the claim.”
Write ·
discourse_create_private_messageReplies to a private message (writes on)
Replies to an existing private message after checking it really is one. It exists only when writes are turned on.
Try: “Reply to message 987 with the result.”
Write ·
discourse_reply_private_messageAdds someone to a private message (writes on)
Adds a user or group to a private message, or sends an email invitation. It exists only when writes are turned on.
Try: “Add the reviewers group to message 987.”
Write ·
discourse_invite_to_private_messageSaves a new Data Explorer query (writes on, admin key)
Creates a saved Data Explorer query. It needs an admin key and writes turned on.
Try: “Save a query that counts topics per category.”
Write ·
discourse_create_queryEdits a saved Data Explorer query (writes on, admin key)
Changes only the fields you give on a saved query. It needs an admin key and writes turned on.
Try: “Rename query 14.”
Write ·
discourse_update_querySoft-deletes a Data Explorer query (writes on, admin key)
Marks a saved query as deleted. An admin can restore it. It needs an admin key and writes turned on.
Try: “Delete query 14.”
Delete ·
discourse_delete_queryUsed by the assistant behind the scenes
Chooses which Discourse site to use
Checks that an address is a Discourse site and selects it. It is hidden when you start the server with a fixed site.
Try: “Connect to https://try.discourse.org.”
Network ·
discourse_select_site
Read from the source code
Permissions
low risk · 5 things to watch
Low risk
By default the assistant can only read forum content. If you turn writes on, it can post, edit and delete things as whoever your API key belongs to.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only modeHow to turn it on
Watch out for
Turning writes on lets it post, edit and delete
With the allow-writes setting, the assistant can create and edit topics, posts, users and private messages, and delete drafts and saved queries. Keep it off unless you need it. github.com
Opt-in tool groups reach admin features
Extra tool groups cover themes, webhooks, site settings and workflows, including deletes. They stay hidden unless you select them or choose all. github.com
The forum can add its own tools
In the default tools mode (auto), the server also looks for tools that the Discourse site publishes through its Remote Tool Execution API, and the toolset setting does not filter them. Start with --tools_mode discourse_api_only to keep to the built-in list. github.com
An admin key reaches every user's data
An admin key can list users and run Data Explorer queries against your forum. Use a user key unless you need admin tools. github.com
Forum text can carry instructions
Posts are written by strangers. Review what the assistant does after reading them, especially with writes on. github.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Turning on read-only | Writes are off by default. Do not pass the allow-writes flag, and the post, edit, upload and delete tools are not registered. The README also lists a read-only setting set to true, but marks it deprecated. |
|---|---|
| Talks to | The Discourse site you select |
| Sign-in and keys | Keys go in the --auth_pairs setting or a profile file. The README suggests a profile file to keep secrets off the command line. |
| Scopes |
|
Questions
Is the Discourse MCP server official?
Yes. It comes from the Discourse organisation on GitHub, and the package on npm is @discourse/mcp.
Do I need an API key?
Not for public forums. Private messages, admin tools and posting need a key for that site. A user key works for personal use, and an admin key is only needed for admin features.
Can it post or delete things?
Only if you start it with writes turned on. Without that, the posting, editing, upload and delete tools are not registered at all.
How do I pick which forum it uses?
Ask the assistant to select the forum's address, or start the server fixed to one site so it cannot be changed. A fixed site is safer for shared setups.
Is the tool list on this page complete?
No. It shows the default set. The published package has more than 130 tools, and the rest sit in opt-in groups such as themes, webhooks, workflows, moderation and AI administration.
How do I add it to Claude Desktop or Cursor?
Use the install box above. The default setup is read-only, so add the allow-writes setting and a key only if you need them.
What do I need installed?
Node.js 24 or newer. The package declares that as its minimum, so older Node versions may fail to start it.
Does it run on my computer or in the cloud?
On your computer, over stdio, and it contacts only the forum you select. It also has a local HTTP mode that listens on loopback only and serves one client at a time.
Information
updated Nov 2, 2026
- Publisher
- Official
- Package
@discourse/mcp- Registry
- npm
- Transport
- stdio
- Auth
- API key
- Version
- 0.3.1
- License
- MIT
- Last commit
- Oct 21, 2026
- Listed in
- Official MCP registry
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 2Hide
- github.com · github.com
- www.npmjs.com · npmjs.com