Skip to content
Agentmart
Submit a tool

discourse/mcp

Discourse MCP CLI server (stdio) exposing Discourse tools.

Connector by discourse · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)★ 77
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/discourse-mcp

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Discourse MCP CLI server (stdio) exposing Discourse tools via MCP

Use cases: social-media, agent-orchestration

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.

Tools
63 read · 43 write · 16 delete · 9 not yet classified
Secrets
None asked for
Install scripts
Not scanned yet
Runs as
Node.js package

Tools by what they do 131

Read from the source code; the running server may list different tools.

Read 63 · Look things up without changing anything.

  • discourse_ai_get_agent
  • discourse_ai_get_custom_tool
  • discourse_ai_get_custom_tool_guide
  • discourse_ai_get_feature_config
  • discourse_ai_get_topic_summary
  • discourse_ai_list_agents
  • discourse_ai_list_custom_tools
  • discourse_ai_list_features
  • discourse_ai_list_sentiment_posts
  • discourse_evaluate_workflow_expression
  • discourse_filter_topics
  • discourse_get_chat_messages
Show 51 more tools
  • discourse_get_draft
  • discourse_get_group
  • discourse_get_post_replies
  • discourse_get_post_revision
  • discourse_get_query
  • discourse_get_review_queue_count
  • discourse_get_reviewable
  • discourse_get_support_dashboard
  • discourse_get_tag_group
  • discourse_get_theme
  • discourse_get_topic_view_stats
  • discourse_get_user
  • discourse_get_user_moderation_summary
  • discourse_get_user_summary
  • discourse_get_webhook
  • discourse_get_workflow
  • discourse_get_workflow_execution
  • discourse_list_categories
  • discourse_list_directory_items
  • discourse_list_group_members
  • discourse_list_group_membership_requests
  • discourse_list_group_posts
  • discourse_list_groups
  • discourse_list_latest_posts
  • discourse_list_private_messages
  • discourse_list_reports
  • discourse_list_reviewable_topics
  • discourse_list_reviewables
  • discourse_list_site_settings
  • discourse_list_tag_groups
  • discourse_list_themes
  • discourse_list_user_actions
  • discourse_list_user_posts
  • discourse_list_users
  • discourse_list_webhook_events
  • discourse_list_webhooks
  • discourse_list_workflow_credentials
  • discourse_list_workflow_executions
  • discourse_list_workflow_node_types
  • discourse_list_workflow_templates
  • discourse_list_workflow_versions
  • discourse_list_workflows
  • discourse_ping_webhook
  • discourse_read_post
  • discourse_read_private_message
  • discourse_read_topic
  • discourse_read_topic_posts
  • discourse_run_query
  • discourse_search
  • discourse_search_posts
  • discourse_search_tag_groups

Write 43 · Create, change, send or run things.

  • discourse_ai_create_agent
  • discourse_ai_create_agent_user
  • discourse_ai_create_custom_tool
  • discourse_ai_update_agent
  • discourse_ai_update_custom_tool
  • discourse_ai_update_feature_config
  • discourse_create_category
  • discourse_create_group
  • discourse_create_post
  • discourse_create_private_message
  • discourse_create_query
  • discourse_create_tag_group
Show 31 more tools
  • discourse_create_theme
  • discourse_create_topic
  • discourse_create_user
  • discourse_create_webhook
  • discourse_create_workflow
  • discourse_discard_workflow_draft
  • discourse_handle_group_membership_request
  • discourse_install_theme
  • discourse_invite_group_members_by_email
  • discourse_invite_to_private_message
  • discourse_reply_private_message
  • discourse_resolve_workflow_entity
  • discourse_restore_workflow_version
  • discourse_run_workflow
  • discourse_run_workflow_step
  • discourse_save_draft
  • discourse_select_site
  • discourse_sync_remote_theme
  • discourse_update_group
  • discourse_update_post
  • discourse_update_query
  • discourse_update_theme
  • discourse_update_theme_setting
  • discourse_update_theme_translations
  • discourse_update_topic
  • discourse_update_user
  • discourse_update_webhook
  • discourse_update_workflow
  • discourse_update_workflow_pin_data
  • discourse_upload_file
  • discourse_upload_theme_asset

Delete 16 · Delete, drop, revoke or wipe things.

  • discourse_ai_delete_agent
  • discourse_ai_delete_custom_tool
  • discourse_ai_import_agent
  • discourse_ai_import_custom_tool
  • discourse_delete_draft
  • discourse_delete_group
  • discourse_delete_query
  • discourse_delete_tag_group
  • discourse_delete_theme
  • discourse_delete_webhook
  • discourse_delete_workflow
  • discourse_manage_user_activation
Show 4 more tools
  • discourse_perform_reviewable_action
  • discourse_update_site_setting
  • discourse_update_tag_group
  • discourse_update_theme_fields

Not yet classified 9 · We could not tell from the name and description.

  • discourse_ai_export_agent
  • discourse_ai_export_custom_tool
  • discourse_ai_semantic_search
  • discourse_ai_test_custom_tool
  • discourse_get_report
  • discourse_join_group
  • discourse_leave_group
  • discourse_redeliver_webhook_event
  • discourse_request_group_membership

Files it touches

  • Any path the agent passes to its tools

Tools (131)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • discourse_ai_create_agentCreate AI Agent

    Create a typed Discourse AI agent, including an optional subagent delegation allowlist of up to 20 existing agent IDs. Requires admin credentials and write mode. Tool entries may be names or [name, options, force] tuples.

  • discourse_ai_create_agent_userCreate AI Agent User

    Explicitly create the bot user used by an AI agent for mention/chat entry points. Requires admin credentials and write mode.

  • discourse_ai_create_custom_toolCreate AI Custom Tool

    Create a database-backed synchronous MiniRacer scripted tool. Call discourse_ai_get_custom_tool_guide before authoring. Never provide raw secret values. Requires admin credentials and write mode.

  • discourse_ai_delete_agentDelete AI Agentcan change or delete data

    Delete a non-system AI agent. Requires admin credentials and write mode.

  • discourse_ai_delete_custom_toolDelete AI Custom Toolcan change or delete data

    Delete a scripted tool. Agents referencing it may stop functioning as configured. Requires admin credentials and write mode.

  • discourse_ai_export_agentExport AI Agent

    Export a portable AI agent bundle. It may include referenced custom-tool definitions but excludes secret bindings. Treat prompts and scripts as sensitive.

  • discourse_ai_export_custom_toolExport AI Custom Tool

    Export portable custom-tool JSON. Discourse excludes secret bindings; MCP also strips them defensively. Treat script source as sensitive. Requires admin credentials.

  • discourse_ai_get_agentGet AI Agent

    Get the full editable configuration of one Discourse AI agent. Custom tools use custom-<id>; native tools use native-<id> in tool tuples.

  • discourse_ai_get_custom_toolGet AI Custom Tool

    Get one database-backed scripted AI tool, including source and configured secret bindings. Treat the response as sensitive. Requires admin credentials.

  • discourse_ai_get_custom_tool_guideGet AI Custom Tool Guide

    Retrieve one focused MiniRacer authoring topic. Usually pass only topic. preset_id is optional and used only with topic=presets to load one live example; extra preset_id values on other topics are ignored. Requires admin credentials.

  • discourse_ai_get_feature_configGet AI Feature Configuration

    Resolve a visible feature module ID and return its computed state plus editable settings from its exact ai-features/<module> area. Credential settings are omitted. Requires admin credentials.

  • discourse_ai_get_topic_summaryGet Discourse AI Topic Summary

    Retrieve an existing cached upstream Discourse AI topic summary, including algorithm and staleness evidence. Requires Discourse AI; this tool does not generate or claim complete MCP-authored output.

  • discourse_ai_import_agentImport AI Agentcan change or delete data

    Import a portable AI agent bundle. The bundle may create or overwrite embedded custom tools. force requires confirm_force=true. Requires admin credentials and write mode.

  • discourse_ai_import_custom_toolImport AI Custom Toolcan change or delete data

    Import portable custom-tool JSON. force overwrites a matching tool_name and requires confirm_force=true. Secret IDs may be bound, but raw secret values are never accepted. Requires admin credentials and write mode.

  • discourse_ai_list_agentsList AI Agents

    List concise Discourse AI agent summaries and slim tool/model metadata. Defaults to slim; use discourse_ai_get_agent to load one full configuration, or view=full only when the complete index is explicitly needed. Requires admin credentials.

Show 116 more tools
  • discourse_ai_list_custom_toolsList AI Custom Tools

    List concise database-backed custom-tool summaries and compact live preset metadata. Scripts, bindings, verbose parameter descriptions, and full records are omitted; use discourse_ai_get_custom_tool or the guide's preset lookup to zoom in. Requires admin credentials.

  • discourse_ai_list_featuresList AI Features

    List visible computed Discourse AI modules, feature enabled state, assigned agents, and effective LLMs. Requires admin credentials.

  • discourse_ai_list_sentiment_postsList Discourse AI Sentiment Posts

    List staff-visible posts classified positive, negative, or neutral by Discourse AI for an exact category/tag and date window. Classification is model output, not proof of tone, satisfaction, risk, or an argument.

  • discourse_ai_semantic_searchDiscourse AI Semantic Search

    Run Guardian-filtered Discourse AI semantic search and return bounded grouped post/topic evidence. Requires Discourse AI embeddings. Results are bounded and expose no fabricated page cursor.

  • discourse_ai_test_custom_toolTest AI Custom Tool

    Actually execute a persisted or unsaved custom-tool script. It can make external requests and cause side effects; this is not dry validation. Requires admin credentials and write mode.

  • discourse_ai_update_agentUpdate AI Agent

    Partially update one AI agent, including enabled state, permissions, model, prompt, tools, subagent delegation, and RAG configuration. Only supplied fields are sent. Requires admin credentials and write mode.

  • discourse_ai_update_custom_toolUpdate AI Custom Tool

    Partially update a scripted tool. Call the guide before substantial script changes. Omitted scalar fields and RAG uploads are preserved; changing secret_contracts can prune orphan bindings unless secret_bindings are supplied. Raw secret values are never accepted. Requires admin credentials and write mode.

  • discourse_ai_update_feature_configUpdate AI Feature Configuration

    Atomically bulk-update only non-secret settings freshly exposed by one exact AI feature area, with optional compare-before-write original_values. Refreshes effective state afterward. Production behavior changes immediately. Requires admin credentials and write mode.

  • discourse_create_categoryCreate Category

    Create a new category. Returns JSON with id, slug, and name.

  • discourse_create_groupCreate Group

    Create a custom group with complete core settings, initial members and owners, custom fields, associations, and optional plugin fields. Requires staff group-creation permission.

  • discourse_create_postCreate Post

    Create a post in a topic. author_username requires a global API key. Returns the actual upstream author so callers can verify attribution.

  • discourse_create_private_messageCreate Private Message

    Create a private message for typed user, group, or email recipients. Unknown emails may create staged users. author_username requires a global API key; the response reports actual attribution.

  • discourse_create_queryCreate Data Explorer Query

    Create a new saved Data Explorer query. Requires admin API key and write access.

  • discourse_create_tag_groupCreate Tag Group

    Create a tag group with an explicit complete permission list such as permissions: [{group_id: 0, access: "full"}] for everyone, nonempty members, an optional parent selector, and one-per-topic policy. Omit parent_tag or use null when there is no parent; blank placeholders are safely treated as omitted. New tag names require allow_tag_creation=true because they create persistent tags and trigger normal indexing/plugin hooks. Duplicate-name and ID checks are advisory; upstream staff authority, tagging_enabled, and constraints remain authoritative.

  • discourse_create_themeCreate Theme

    Create a local Discourse theme or component. For textual HTML/SCSS/JS fields provide value and omit upload_id; for assets provide numeric upload_id with type=upload and omit value. Supplied code can execute or deploy for visitors; explicit confirmations and admin write access are required.

  • discourse_create_topicCreate Topic

    Create a new topic. author_username requires a global API key. Returns the actual upstream author so callers can verify attribution.

  • discourse_create_userCreate User

    Create a user through Discourse's signup API using a global admin API key. Reports whether upstream confirmed creation; anti-enumeration responses without user_id remain indeterminate. Optional avatar assignment runs only after confirmed creation.

  • discourse_create_webhookCreate Webhook

    Create a guarded outbound webhook using the live event and content-type catalog. External delivery and risky options require explicit confirmation.

  • discourse_create_workflowCreate Workflow

    Create a draft from a complete small graph or template. Prefer a complete graph over blank creation. Authoring loop: inspect the slim node catalog, request identifiers for schemas and output keys, resolve entity ids, create from a template or complete graph, GET before edits, test the draft, then publish. Interpolating strings start with =. Filter/if use leftValue/rightValue and output ports true/false. Connection type is the source output key, not always main. Prefer declarative nodes over action:code. Manual runs execute the current draft. Omitting a node on whole-graph update deletes it. no…

  • discourse_delete_draftDelete Draft

    Delete a draft by key. Requires current sequence number to prevent conflicts.

  • discourse_delete_groupDelete Group

    Permanently delete a custom group. Automatic groups cannot be deleted. Requires staff access.

  • discourse_delete_queryDelete Data Explorer Query

    Soft-delete a Data Explorer query. The query can be restored by an admin. Requires admin API key and write access.

  • discourse_delete_tag_groupDelete Tag Groupcan change or delete data

    Permanently delete one exact tag group after fresh name/state-hash checks and explicit acknowledgements for category relationship cascades and unresolved plugin dependencies. Deletion removes memberships, permissions, and category allowed/required relationships, but not tags or topic-tag rows. Dependency discovery is not exhaustive (plugins such as RSS polling may depend on groups). Scoped API keys may not include this delete route. A 200 response is only dispatch acknowledgement; absence is verified before success.

  • discourse_delete_themeDelete Theme

    Permanently delete one non-system, non-default theme/component after a fresh exact-name check. Dependencies are not detached automatically and bulk deletion is not exposed.

  • discourse_delete_webhookDelete Webhook

    Delete one webhook after a fresh exact destination-fingerprint precondition.

  • discourse_delete_workflowDelete Workflow

    Permanently delete a workflow. Fails when another workflow calls it.

  • discourse_discard_workflow_draftDiscard Workflow Draft

    Replace the draft with its published snapshot. Requires an existing published version.

  • discourse_evaluate_workflow_expressionEvaluate Workflow Expression

    Evaluate a workflow expression without mutating the forum. Interpolating expressions start with =.

  • discourse_filter_topicsFilter Topics

    Discover topics through a filtered, top, or hot view. Filtered uses Discourse TopicsFilter syntax; top uses Discourse's authoritative top score and defaults to weekly; hot is defined exactly as daily top (not sentiment, controversy, or real-time velocity). Returns a uniform rich topic projection and truthful pagination metadata.

  • discourse_get_chat_messagesGet Chat Messages

    Get messages from a chat channel. Returns JSON object with channel_id, messages array (id, username, created_at, message, edited, thread_id, in_reply_to_id), and meta.

  • discourse_get_draftGet Draft

    Retrieve a specific draft by key. Returns JSON with draft_key, sequence, and parsed data (title, reply, categoryId, tags, action).

  • discourse_get_groupGet Group

    Get complete visible group details by numeric ID or name, including caller capabilities and group settings.

  • discourse_get_post_repliesGet Post Replies

    Read reply relationships for a post as recursive descendant IDs, bounded rich direct replies, or the upstream-bounded ancestor history. Preserves upstream ordering and references.

  • discourse_get_post_revisionGet Post Revision

    Get a staff/Guardian-authorized post revision with bounded diffs, edit reason, actor, version, and hidden-state evidence.

  • discourse_get_queryGet Data Explorer Query

    Get full details of a Data Explorer query including SQL and parameters. Requires admin API key.

  • discourse_get_reportGet Report

    Execute one discovered staff-visible Discourse report with dates, facets, typed filters, limit, and upstream caching. This exposes existing reports, not arbitrary SQL.

  • discourse_get_review_queue_countGet Review Queue Countread-only

    Get the authoritative count of pending reviewable records visible to the authenticated user. This counts queue items, not individual flag/score records; upstream Guardian permissions remain authoritative.

  • discourse_get_reviewableGet Reviewableread-only

    Refresh one shortlisted reviewable's bounded context, current version, claim state, scores, and exact dynamic actions. Paginated list results already include evidence/actions, so do not fan this tool out across the queue. Optionally includes Discourse's score explanation; never generates a recommendation.

  • discourse_get_support_dashboardGet Solved Support Dashboard

    Get the staff Solved support dashboard. Requires Discourse Solved. 'Unanswered' means unsolved with no qualifying regular reply, not no reply from a configured support team.

  • discourse_get_tag_groupGet Tag Group

    Get authoritative tag-group state by ID. Requires a locally configured API credential and upstream staff authority. The deterministic state_hash is an MCP optimistic precondition, not an upstream atomic lock; a race remains possible after preflight.

  • discourse_get_themeGet Theme

    Inspect one local, ZIP-imported, or Git-backed Discourse theme/component as an administrator. Source values are bounded, opt-in, and may be unavailable for remote records; private key material is never returned.

  • discourse_get_topic_view_statsGet Topic View Stats

    Get up to 300 ascending daily topic view counts. Views combine anonymous and logged-in views; they are not unique viewers or an engagement judgment.

  • discourse_get_userGet User

    Get user info. Returns JSON with id, username, name, trust_level, created_at, bio, admin, and moderator.

  • discourse_get_user_moderation_summaryGet User Moderation Summary

    Get staff-authorized behavioral moderation counters for a user. Omits unrelated administrative capability flags; Discourse permissions remain authoritative.

  • discourse_get_user_summaryGet User Summary

    Get profile-visible aggregate user activity, top topics/replies/links, interaction partners, categories, badges, likes, visits, reading, and post/topic counts. Missing metrics remain null when hidden or unavailable.

  • discourse_get_webhookGet Webhook

    Get one fresh safe webhook configuration for inspection and mutation preconditions.

  • discourse_get_workflowGet Workflow

    Get the complete round-trippable workflow graph. GET immediately before updating it.

  • discourse_get_workflow_executionGet Workflow Execution

    Poll an execution for status, errors, timing, trigger data, and steps.

  • discourse_handle_group_membership_requestHandle Group Membership Request

    Approve or deny one pending group membership request. Approval adds the requester to the group; denial only removes the request.

  • discourse_install_themeInstall Theme

    Install a Git repository or ZIP/gzip archive. Set source to exactly one nested variant: {kind:repository, remote_url...}, {kind:archive, archive_data...}, or {kind:archive, archive_path...}; never add placeholder fields from another variant. External code and migrations can have site-wide impact and are not sandboxed.

  • discourse_invite_group_members_by_emailInvite Group Members by Email

    Add existing accounts immediately when an address matches, and invite unknown addresses to the forum with this group preassigned. Use add_group_members_by_email when every address is known to belong to an account.

  • discourse_invite_to_private_messageInvite to Private Message

    Add a user or group to a private message, or submit an opaque email invitation. Email success does not confirm delivery or participant access. author_username requires a global API key.

  • discourse_join_groupJoin Group

    Join a visible group that allows public admission as the authenticated user.

  • discourse_leave_groupLeave Group

    Leave a group that allows public exit as the authenticated user.

  • discourse_list_categoriesList Categories

    Exhaustively list categories visible to the selected identity through bounded pagination. Returns stable IDs, slugs, hierarchy (parent_category_id; pid is a legacy alias), access flags, counts, structured completion metadata, and JSON text fallback. Opt in with the administration toolset.

  • discourse_list_directory_itemsList Directory Items

    List user-directory/cohort metrics with authoritative totals and continuation. Supports Discourse periods, ordering, visible groups, page 0-10, and the upstream maximum of 50 rows.

  • discourse_list_group_membersList Group Members

    List a group's members and owners with filtering, ordering, and pagination. Visibility is enforced by Discourse.

  • discourse_list_group_membership_requestsList Group Membership Requests

    List pending membership requests and reasons for a group the caller can manage, with filtering and pagination.

  • discourse_list_group_postsList Group Posts

    List visible posts authored by a group using Discourse's fixed 20-row page, ID or timestamp cursor, and optional category filter. Group authorship is cohort evidence, not proof of organizational responsibility.

  • discourse_list_groupsList Groups

    List visible groups. Empty input exhaustively traverses the bounded directory; any explicit page or filter field preserves the existing single-page query behavior. Both modes return one structured envelope with truthful completion metadata and JSON text fallback. Opt in with the groups toolset.

  • discourse_list_latest_postsList Latest Posts

    List the site's latest visible posts using Discourse's fixed 50-post page and post-ID cursor. Anonymous upstream responses expire after one minute; results are a feed, not an exhaustive history.

  • discourse_list_private_messagesList Private Messages

    List authenticated personal or group private-message mailboxes. Returns normalized JSON messages and pagination metadata.

  • discourse_list_reportsList Reports

    Discover staff-visible Discourse report identifiers and metadata. The catalog is authoritative because core and plugins can add or hide reports.

  • discourse_list_reviewable_topicsList Reviewable Topicsread-only

    Non-exhaustive topic-level signal only: list pending topics at or above Discourse's minimum review priority. Do not use this tool to work through or rank the full queue because it omits reviewable IDs, actions, low-priority items, and items without topics. Use discourse_list_reviewables for moderation triage.

  • discourse_list_reviewablesList Reviewablesread-only

    Work through the exhaustive visible Discourse queue in pages of 10. For ordinary triage, call with only status=pending and offset=0—do not guess topic/category/type filters. Use meta.total and follow next_offset while has_more is true. Each result already includes bounded evidence and exact dynamic actions; fetch detail only for a shortlisted item that needs fresher context.

  • discourse_list_site_settingsList Site Settings

    List admin-visible Discourse site settings with bounded metadata, optionally returning only settings whose current value differs from the default. Secret and credential-like values are always masked.

  • discourse_list_tag_groupsList Tag Groups

    Authoritative unpaginated tag-group inventory ordered by name. Requires a locally configured API credential and upstream staff authority; Discourse returns a privacy-preserving 404 to non-staff. Staff reads can work when tagging is disabled. Returns canonical tags, parent, one-per-topic, explicit permissions entries ({group_id, access}; group_id 0 is everyone), and optimistic state hashes.

  • discourse_list_themesList Themes

    List admin-visible Discourse themes and components. This opt-in admin read returns bounded summaries and local pagination; it does not expose theme source code.

  • discourse_list_user_actionsList User Actions

    List a user's visible activity using model-friendly action names. Plugin-backed action families can legitimately be empty; emptiness does not prove that a feature is unavailable.

  • discourse_list_user_postsList User Posts

    Get paginated list of user posts/replies. Returns JSON object with posts array (id, topic_id, post_number, slug, title, created_at, excerpt, category_id) and meta (page, limit, has_more).

  • discourse_list_usersList Users

    List users via admin API. Requires admin API key. Returns ~100 users per page (Discourse's fixed page size). Returns JSON with users array and pagination meta.

  • discourse_list_webhook_eventsList Webhook Events

    List bounded webhook delivery diagnostics. Payload and response previews are omitted unless explicitly confirmed.

  • discourse_list_webhooksList Webhooks

    List safe webhook summaries and the live authoring catalog without exposing webhook secrets or destination credentials.

  • discourse_list_workflow_credentialsList Workflow Credentials

    List workflow credentials with secrets redacted. Credential creation remains in the admin UI.

  • discourse_list_workflow_executionsList Workflow Executions

    List global or per-workflow execution history.

  • discourse_list_workflow_node_typesList Workflow Node Types

    List a slim catalog, or pass identifier for schemas, ports, and output contracts. Authoring loop: inspect the slim node catalog, request identifiers for schemas and output keys, resolve entity ids, create from a template or complete graph, GET before edits, test the draft, then publish. Interpolating strings start with =. Filter/if use leftValue/rightValue and output ports true/false. Connection type is the source output key, not always main. Prefer declarative nodes over action:code. Manual runs execute the current draft. Omitting a node on whole-graph update deletes it. nodes and connections…

  • discourse_list_workflow_templatesList Workflow Templates

    List templates or retrieve a complete template graph by id. Authoring loop: inspect the slim node catalog, request identifiers for schemas and output keys, resolve entity ids, create from a template or complete graph, GET before edits, test the draft, then publish. Interpolating strings start with =. Filter/if use leftValue/rightValue and output ports true/false. Connection type is the source output key, not always main. Prefer declarative nodes over action:code. Manual runs execute the current draft. Omitting a node on whole-graph update deletes it. nodes and connections must always be sent t…

  • discourse_list_workflow_versionsList Workflow Versions

    List workflow version history and UUIDs available for restore.

  • discourse_list_workflowsList Workflows

    List compact Discourse Workflow summaries. Requires an admin API key.

  • discourse_manage_user_activationManage User Activationcan change or delete data

    Activate, approve, activate-and-approve, or deactivate one user through Discourse's authoritative admin routes. Requires explicit confirmation and upstream staff authorization.

  • discourse_perform_reviewable_actionPerform Reviewable Actioncan change or delete data

    Perform one exact dynamic action after a fresh serialized preflight. Choose by the action's full description, not label alone (for example delete-and-agree differs from delete-and-ignore). The displayed action ID may be UI-prefixed; this tool safely routes its server_action. Requires confirm=true and write enablement.

  • discourse_ping_webhookPing Webhook

    Enqueue one explicitly confirmed external webhook ping after a fresh destination precondition.

  • discourse_read_postRead Post

    Read a specific post. Returns JSON with id, topic_id, post_number, username, created_at, and raw content.

  • discourse_read_private_messageRead Private Message

    Read an authenticated private message, its posts, and direct allowed-user and allowed-group records. Rejects public topics.

  • discourse_read_topicRead Topic

    Read topic metadata and posts. Large post limits can require multiple upstream requests. For moderation queues, prefer reviewable list/detail evidence instead of fanning this tool out across flagged topics.

  • discourse_read_topic_postsRead Selected Topic Posts

    Read exact, earliest, latest, around-post, or username-filtered topic evidence. Selection is bounded to 50 posts and reports the visible stream size without claiming the entire topic was loaded.

  • discourse_redeliver_webhook_eventRedeliver Webhook Event

    Redeliver exactly one old webhook event after destination, ownership, and status preconditions. Bulk redelivery is not exposed.

  • discourse_reply_private_messageReply to Private Message

    Safely reply to an existing private message after verifying its archetype. author_username requires a global API key; the response reports actual attribution.

  • discourse_request_group_membershipRequest Group Membership

    Request membership in a visible group that allows requests, sending the reason to its owners.

  • discourse_resolve_workflow_entityResolve Workflow Entity

    Resolve category, tag, group, user, badge, chat channel, or data-table ids for workflow parameters.

  • discourse_restore_workflow_versionRestore Workflow Version

    Restore a historical workflow version by UUID into the draft.

  • discourse_run_queryRun Data Explorer Query

    Execute a Data Explorer query with parameters. Returns columns, rows, result_count, duration_ms. Queries run in read-only transactions with 10-second timeout. Requires admin API key.

  • discourse_run_workflowRun Workflow Draft

    Run the current unpublished draft asynchronously. This can create posts, send chat, or call external HTTP; poll the returned execution id.

  • discourse_run_workflow_stepRun Workflow Step

    Run one non-trigger, non-waiting draft node asynchronously. Requires upstream pin-data or a prior successful run.

  • discourse_save_draftCreate/Save Draft

    Create or update a draft. Returns JSON with draft_key and new sequence number.

  • discourse_searchDiscourse Search

    Search site content. Returns JSON object with results array of matching topics (id, slug, title) and meta (total, has_more).

  • discourse_search_postsSearch Posts

    Search post-level evidence with Discourse query syntax. Unlike discourse_search, this preserves matched posts, highlighted blurbs, authors, topics, categories, and truthful bounded continuation. This is keyword search, not Discourse AI semantic search.

  • discourse_search_tag_groupsSearch Tag Groups

    Public visibility-filtered tag-group search. q and names combine with AND semantics; upstream treats % and _ in q as SQL LIKE wildcards. Results intentionally omit group IDs, parent tags, and permissions and are not authoritative staff inventory. Exact case-insensitive group name is the supported correlation key. Always sends an explicit limit and reports possible truncation.

  • discourse_select_siteSelect Site

    Validate and select a Discourse site. Returns JSON with site URL and title.

  • discourse_sync_remote_themeSync Remote Theme

    Check or install updates for an existing Git-backed theme. Both actions clone external code and persist state; update deploys code and runs settings migrations, requiring explicit confirmations.

  • discourse_update_groupUpdate Group

    Update all core group profile, visibility, admission, notification-default, association, email, SMTP, custom, and plugin settings supported by the caller and group type.

  • discourse_update_postUpdate Post

    Update the content of an existing post. Returns JSON with updated post details.

  • discourse_update_queryUpdate Data Explorer Query

    Update an existing Data Explorer query. Only provided fields are updated. Requires admin API key and write access.

  • discourse_update_site_settingUpdate Site Settingcan change or delete data

    Set or reset one ordinary admin-visible Discourse site setting after a fresh optimistic-concurrency check. Secret and structured settings are excluded.

  • discourse_update_tag_groupUpdate Tag Groupcan change or delete data

    Safely replace complete tag-group state after a fresh expected_state_hash preflight. Omitted mutable fields are preserved locally, but Discourse receives full tags, parent, one-per-topic, and permissions because partial upstream bodies clear state. For parent_tag, omit or pass a blank placeholder to preserve the current parent; pass null to clear it. Permissions use explicit {group_id, access} entries; group_id 0 means everyone. Tag/parent removals, permission replacement, and possible materialization of serializer-synthesized everyone/full permissions require explicit acknowledgements. The ha…

  • discourse_update_themeUpdate Theme Metadata

    Update bounded metadata, default status, or complete theme-component relationships. Relationship arrays replace the entire graph side; source, settings, translations, and remote refresh are intentionally excluded.

  • discourse_update_theme_fieldsUpdate Theme Fields

    Replace or explicitly delete selected fields on a local or ZIP-imported theme. Text replacements require value and prohibit upload_id; asset replacements require numeric upload_id with type=upload and prohibit value. This can deploy executable code; Git-backed and system themes are rejected.

  • discourse_update_theme_settingUpdate Theme Setting

    Set or explicitly revert one declared setting owned by a theme/component. This does not mutate themeable global site settings; object values are validated upstream against the declared schema.

  • discourse_update_theme_translationsUpdate Theme Translations

    Replace values for explicit translation keys declared by a theme, after a fresh locale read. Unknown keys are rejected; deletion/revert is not supported in this release.

  • discourse_update_topicUpdate Topic

    Update an existing topic (title, category, tags, featured_link). Returns JSON with updated topic details.

  • discourse_update_userUpdate User

    Update user profile fields. If upload_id is provided, also sets the user's avatar. Returns JSON with success status and updated user details.

  • discourse_update_webhookUpdate Webhook

    Partially update a webhook after fresh destination and active-state preconditions. Relationship arrays are complete replacements.

  • discourse_update_workflowUpdate Workflow

    GET first. A replace PUT replaces the whole draft graph; omitted nodes are deleted. Use complete nodes+connections or operations[], never both. Authoring loop: inspect the slim node catalog, request identifiers for schemas and output keys, resolve entity ids, create from a template or complete graph, GET before edits, test the draft, then publish. Interpolating strings start with =. Filter/if use leftValue/rightValue and output ports true/false. Connection type is the source output key, not always main. Prefer declarative nodes over action:code. Manual runs execute the current draft. Omitting …

  • discourse_update_workflow_pin_dataUpdate Workflow Pin Data

    Pin test items to a node name, or omit items to unpin it.

  • discourse_upload_fileUpload File

    Upload an image or file to Discourse. Provide either: image_data (base64 with filename), a remote HTTP(S) URL, or an absolute local file path. user_id is required for avatar/background uploads. Returns upload_id for use in avatar/profile updates. Use short_url to embed images in posts.

  • discourse_upload_theme_assetUpload Theme Asset

    Upload a bounded local/base64 asset for later attachment to a theme field. No remote URL fetch is supported; upload alone does not attach or deploy the asset.

Signals

Stars
77
Forks
45
Open issues
0
Weekly downloads
11,504
Last commit
Aug 25, 2026 (2 months ago)
Last release
Aug 25, 2026 (2 months ago)
Last package publish
Aug 25, 2026 (2 months ago)

From GitHub (fetched Oct 24, 2026) and the package registry.

Details

Registry name
io.github.discourse/mcp
Version
0.3.1
Auth
No auth
Packages
npm @discourse/mcp
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 25, 2026
Cite this page

discourse/mcp. Agent Mart. https://agentmart.dev/connectors/discourse-mcp (last updated 2026-10-25)