# io.github.discourse/mcp (npm · @discourse/mcp)

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

- Trust score: 81/100 (high trust)
- Change this week: +29
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-04

## Components

- npm · `@discourse/mcp`: 81/100 (this document), [markdown](https://verifymcp.io/servers/discourse-mcp/discourse-mcp.md), [page](https://verifymcp.io/servers/discourse-mcp/discourse-mcp)

## Channel facts

- Registry: `npm`
- Package: `@discourse/mcp`
- Version: `0.2.9`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-04.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to discourse/discourse-mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 32 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 82/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 1256 tokens (~62/item across 20 items; 12 tools + 8 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 30/100
  - Stability observed for 9 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 94/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 81% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add discourse-mcp -- npx -y @discourse/mcp
```

### Codex

```bash
codex mcp add discourse-mcp -- npx -y @discourse/mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "discourse-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@discourse/mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add discourse-mcp --command npx --arg -y --arg @discourse/mcp
```

### Hermes

```yaml
mcp_servers:
  discourse-mcp:
    command: "npx"
    args: ["-y", "@discourse/mcp"]
```

### Other

```json
{
  "mcpServers": {
    "discourse-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@discourse/mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-04 (score 81, +1)

No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-02 (score 80, +39)

- [security improvement] Install scripts: unverified → pass
- [security improvement] Provenance: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security] The attested source repository moved: discourse/discourse-mcp
- [functional improvement] License: unverified → pass
- [functional improvement] Stability: unverified → 0.23
- [functional improvement] Schema quality: unverified → good
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional] Licence: MIT

### 2026-08-01 (score 41, +7)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-31 (score 34, −18)

- [security regression] Malware scan: pass → unverified

### 2026-07-27 (score 52)

First indexed and scored.

## MCP tools (12)

### `discourse_select_site` (~39 tokens)

Select Site

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

Input parameters:

- `site` (string, required): Base URL of the Discourse site

### `discourse_search` (~53 tokens)

Discourse Search

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

Input parameters:

- `max_results` (integer)
- `query` (string, required): Search query

### `discourse_filter_topics` (~197 tokens)

Filter Topics

Filter topics with a concise query language. Returns JSON object with results array (id, slug, title) and meta (page, limit, has_more). Query syntax: category/categories (comma=OR, '=category'=without subcats, '-'=exclude), tag/tags (comma=OR, '+'=AND), status:(open|closed|archived|listed|unlisted|public), in:(bookmarked|watching|tracking|muted|pinned), dates: created/activity-(before|after) YYYY-MM-DD or N days, order: activity|created|latest-post|likes|views with optional -asc.

Input parameters:

- `filter` (string, required): Filter query, e.g. 'category:support status:open created-after:30 order:activity'
- `page` (integer): Page number (0-based, default: 0)
- `per_page` (integer): Items per page (max 50)

### `discourse_read_topic` (~78 tokens)

Read Topic

Read topic metadata and posts. Returns JSON with id, title, slug, category_id, tags, and posts array.

Input parameters:

- `post_limit` (integer): Max posts to return (default 5, max 50)
- `start_post_number` (integer): Start from this post number (1-based)
- `topic_id` (integer, required)

### `discourse_read_post` (~42 tokens)

Read Post

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

Input parameters:

- `post_id` (integer, required)

### `discourse_get_user` (~42 tokens)

Get User

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

Input parameters:

- `username` (string, required)

### `discourse_list_user_posts` (~89 tokens)

List 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).

Input parameters:

- `limit` (integer): Posts per page (max 50, default 30)
- `page` (integer)
- `username` (string, required)

### `discourse_list_users` (~107 tokens)

List 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.

Input parameters:

- `asc` (boolean): Sort ascending (default: false/descending)
- `filter` (string): Search by username, email, or IP address
- `order` (string): Sort order field
- `page` (integer): Page number (0-indexed)
- `query` (string): User query type

### `discourse_get_chat_messages` (~141 tokens)

Get 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.

Input parameters:

- `channel_id` (integer, required): The chat channel ID
- `direction` (string): Pagination direction: 'past' for older messages, 'future' for newer
- `page_size` (integer): Number of messages to return (default: 50, max: 50)
- `target_date` (string): ISO 8601 date string to query messages around
- `target_message_id` (integer): Message ID to query around or paginate from

### `discourse_get_draft` (~79 tokens)

Get Draft

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

Input parameters:

- `draft_key` (string, required): Draft key (e.g., "new_topic", "topic_123", "new_private_message")
- `sequence` (integer): Expected sequence number (optional)

### `discourse_get_query` (~36 tokens)

Get Data Explorer Query

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

Input parameters:

- `id` (integer, required): Query ID

### `discourse_run_query` (~105 tokens)

Run 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.

Input parameters:

- `explain` (boolean): Include query execution plan in response
- `id` (integer, required): Query ID to run
- `limit`: Maximum number of rows to return (default: query default, use 'ALL' for unlimited)
- `params` (object): Query parameters as key-value pairs

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/discourse-mcp/discourse-mcp#diagnostics

## Score history

- 2026-08-04: 81
- 2026-08-03: 80
- 2026-08-02: 80
- 2026-08-01: 41
- 2026-07-31: 34
- 2026-07-30: 52
- 2026-07-28: 52
- 2026-07-27: 52

## Links

- npm package: https://www.npmjs.com/package/@discourse/mcp
- Socket report: https://socket.dev/npm/package/@discourse/mcp
- Repository: https://github.com/discourse/discourse-mcp
- Changelog RSS feed: https://verifymcp.io/servers/discourse-mcp/discourse-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/discourse-mcp/discourse-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/discourse-mcp/discourse-mcp
