Commonly MCP Server
OFFICIAL SERVERConnects a coding agent to a Commonly pod to chat, take on tasks and keep memory there
Read, search and, when allowed, post to and administer a Discourse forum over MCP
Official · Discourse TypeScript Local · stdio CommunicationProductivity
69 popularity score ★ 79 ↓ 26k/wk
Opens the app, which asks before it adds the server.
claude mcp add discourse -- npx -y @discourse/mcp@latest{
"mcpServers": {
"discourse": {
"command": "npx",
"args": [
"-y",
"@discourse/mcp@latest"
]
}
}
}{
"mcpServers": {
"discourse": {
"command": "npx",
"args": [
"-y",
"@discourse/mcp@latest"
]
}
}
}{
"servers": {
"discourse": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@discourse/mcp@latest"
]
}
}
}[mcp_servers.discourse]
command = "npx"
args = ["-y", "@discourse/mcp@latest"]gemini mcp add --scope user discourse npx -- -y @discourse/mcp@latestDiscourse MCP is the Discourse team's own MCP server for working with Discourse forums. It runs on your machine over stdio (or, with --transport http, as a loopback HTTP endpoint for a single client) and talks to a forum's JSON API. You either pick a forum at runtime with discourse_select_site or pin the server to one with --site.
With no key it reads what an anonymous visitor could: topic search, topic filters (latest, top, hot), whole topics, single posts, user profiles and a user's posts. With an Admin API key or a per-user User API key it also reaches private messages, drafts, chat messages, Data Explorer queries and staff-only listings. Writing is off until you pass --allow_writes; then tools for creating posts, topics, categories, users, uploads, drafts and private messages are registered.
Tools are grouped into toolsets chosen with --toolsets. The default catalog leaves out the administrative domains, which must be picked by name: moderation queue, groups, tag groups, themes, webhooks, site settings, analytics reports, the experimental workflows plugin, and Discourse AI agents, custom tools and features. In v0.3.1 the code registers 141 built-in tools in all (catalog.ts, plus twelve group member and owner tools generated in groups/members.ts), far more than the README's tool list shows; it also lists tools from a forum's own Tool Execution API unless --tools_mode discourse_api_only is set. All tools return JSON only, a breaking change made in 0.2.x.
| Runtime | Node.js 24+ |
|---|
Node.js 24 or newer (npx). A Discourse forum to point it at: public forums can be read without a key. For private messages, drafts, writes and admin toolsets, an Admin API key (key plus username, made in the forum's admin panel) or a User API key that any member can create with the package's generate-user-api-key command, passed in --auth_pairs or a --profile file. Data Explorer, workflows, AI and analytics toolsets need the matching Discourse plugins enabled on the forum.
Writes are off by default and are paced to about one request a second. Search returns 10 results by default, up to 50 with max_results; topic reads return 5 posts by default, up to 50; post text is cut at 50,000 characters unless --max-read-length is changed. Local file uploads only work from folders named in --allowed_upload_paths. HTTP mode serves one client session per process and must be restarted after it closes. The workflows toolset targets a plugin its makers call experimental, and workflow runs are not dry runs. Bulk webhook redelivery, bulk site-setting changes and secret settings are deliberately not supported.
Suits forum owners, moderators and community teams who want an assistant to read threads, triage the review queue or run admin tasks on their own Discourse, and anyone who wants read-only access to a public forum without a key. Because it is published by Discourse and covers admin areas, it fits sites that want one maintained server rather than a scraper. Pick something else if you only need a few read tools and cannot run Node 24, or if you cannot keep admin-level keys on the machine running it.
discourse_select_sitediscourse_searchdiscourse_search_postsdiscourse_filter_topicsdiscourse_read_topicdiscourse_read_topic_postsdiscourse_read_postdiscourse_get_post_repliesdiscourse_list_latest_postsdiscourse_get_userdiscourse_list_user_postsdiscourse_get_user_summarydiscourse_list_user_actionsdiscourse_list_directory_itemsdiscourse_list_usersdiscourse_get_chat_messagesdiscourse_get_draftdiscourse_save_draftdiscourse_delete_draftdiscourse_create_postdiscourse_create_topicdiscourse_update_topicdiscourse_create_categorydiscourse_create_userdiscourse_update_userdiscourse_upload_filediscourse_list_private_messagesdiscourse_read_private_messagediscourse_create_private_messagediscourse_reply_private_messagediscourse_invite_to_private_messagediscourse_list_categoriesdiscourse_list_groupsdiscourse_list_group_membersdiscourse_list_group_postsdiscourse_search_tag_groupsdiscourse_list_tag_groupsdiscourse_get_tag_groupdiscourse_create_tag_groupdiscourse_update_tag_groupdiscourse_delete_tag_groupdiscourse_get_review_queue_countdiscourse_list_reviewablesdiscourse_list_reviewable_topicsdiscourse_get_reviewablediscourse_perform_reviewable_actiondiscourse_list_themesdiscourse_get_themediscourse_get_workflow_executiondiscourse_ai_list_agentsdiscourse_ai_get_agentdiscourse_ai_list_custom_toolsdiscourse_ai_get_custom_tooldiscourse_ai_get_custom_tool_guidediscourse_ai_test_custom_tooldiscourse_ai_semantic_search