Skip to content

Commit ccdbdca

Browse files
committed
chore(release): prepare version 0.3.0
Finalize the 0.3.0 changelog and synchronize package, lockfile, README, and server registry version metadata for release.
1 parent 2dc8bfd commit ccdbdca

5 files changed

Lines changed: 28 additions & 16 deletions

File tree

CHANGELOG.md

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Changelog
22

3-
## Unreleased
3+
## [0.3.0](https://github.com/discourse/discourse-mcp/compare/v0.2.9...v0.3.0) (2026-08-21)
44

55
### Features
66

@@ -23,7 +23,6 @@
2323
- Retain random session IDs, reject missing/unknown sessions and second initialization, bound pre-read request bodies to 4 MiB, and close active transports during shutdown
2424
- After DELETE, expose a clear restart-required MCP/health response instead of leaving a closed transport behind a healthy endpoint
2525

26-
2726
* Add opt-in, admin-sensitive `webhooks` and `site_settings` toolsets
2827
- Add secret-safe webhook inspection, bounded/redacted delivery diagnostics, guarded lifecycle operations, ping, and exact single-event redelivery with fresh destination preconditions and no automatic mutation retries
2928
- Harden site-setting reads against upstream-secret and credential-like values, support directly listing only currently overridden settings, and add one-setting-at-a-time updates with live metadata validation, expected-value conflict checks, no-retry writes, and exact verification reads
@@ -52,6 +51,7 @@
5251
- Preserve existing filtered calls while adding top periods and defining hot exactly as Discourse's daily top score
5352
- Return uniform rich topic metadata with null-safe fields and pagination totals/continuation only when authoritative
5453
- Keep `search` default-on and both search tools available in read-only mode
54+
5555
* Add the opt-in `moderation` toolset for Discourse's review queue
5656
- Inspect queue count, reviewables, high-priority reviewable-topic aggregation, full bounded context, score explanations, and dynamic available actions
5757
- Distinguish pending reviewable totals from individual score/flag records and mark the topic aggregation as non-exhaustive
@@ -64,42 +64,54 @@
6464
- Show a short browser activation code and poll for approval automatically
6565
- Use RSA-OAEP encryption and validate the response nonce
6666
- Fall back to the legacy copy-and-paste flow on older Discourse sites
67+
6768
* Add typed built-in toolsets and `--toolsets <name[,name...]>` selection
6869
- Filter built-in tools by operator-facing domains while preserving canonical registration order
6970
- Keep site selection, write enablement, and call-time authorization as independent safety controls
7071
- Support comma-separated CLI values and string or array profile configuration
7172
- Treat omitted selection as the non-opt-in default catalog and add `--toolsets all` for every domain
73+
7274
* Add the opt-in `groups` toolset for complete group lifecycle management
7375
- List and inspect groups, members, owners, and pending membership requests with upstream visibility and pagination semantics
7476
- Create, fully configure, update, and delete custom groups, including notification defaults, associations, email settings, custom fields, and plugin extensions
7577
- Use separate, unambiguous mutation tools for usernames, numeric user IDs, existing-account emails, and unknown-address invitations instead of mirroring Discourse's selector precedence
7678
- Bulk-add and remove members, promote and demote owners, approve or deny requests, and support request/join/leave self-service flows
7779
- Preserve write gating and Discourse's staff, owner, Guardian, automatic-group, invitation, and membership-setting restrictions
80+
7881
* Add the opt-in `workflows` toolset for the experimental `discourse-workflows` plugin
7982
- Discover workflows, node types, templates, credentials, executions, versions, and related forum entities
8083
- Create and replace complete graphs with paired graph safety and a flat connection adapter
8184
- Apply mechanical MCP-side graph operations after a fresh GET, then publish, unpublish, discard, delete, or restore drafts
8285
- Evaluate expressions, manage pin-data, step-run or manually run the current draft, and poll asynchronous executions
83-
* Add typed AI-agent subagent delegation support
86+
87+
* Add opt-in Discourse AI administration toolsets
88+
- Add typed AI-agent discovery, lifecycle management, bot-user creation, and portable import/export through `ai_agents`
89+
- Add scripted custom-tool discovery, lifecycle, focused authoring guidance, execution testing, and import/export through `ai_custom_tools`
90+
- Add exact-area, non-secret AI feature discovery and updates through `ai_features`
91+
- Keep all three domains default-off, require admin authority, and retain write gating for mutations and custom-tool execution
8492
- Accept ordered `subagent_ids` allowlists on agent creation and partial updates, including negative system-agent IDs
8593
- Match Discourse's limit of 20 unique subagents and expose `subagent_count` in slim agent listings
94+
8695
* Add the default `private_messages` toolset for authenticated PM lifecycle operations
8796
- List personal and group inbox/archive/unread/new mailboxes, plus personal sent messages, with uncached identity-safe reads
8897
- Read PM-specific metadata, direct allowed-user/group records, reply relationships, and bounded post bodies while rejecting public topics
8998
- Create PMs for typed user, group, and email recipients and safely reply only after a PM-archetype preflight
9099
- Invite users, groups, or email addresses with correct group notification serialization and intentionally conservative email outcome reporting
91100
- Preserve Discourse authorization, write gating, API-key identity rules, recipient limits, and Guardian checks
92101

102+
### Security
103+
104+
* Stop logging HTTP response bodies, including at debug level, because administration APIs may return secrets or other sensitive content
105+
106+
### Bug Fixes
107+
108+
* Treat successful empty `204 No Content` responses as valid results for delete operations
109+
93110
### Maintenance
94111

95112
* Pin `@modelcontextprotocol/sdk` exactly to reviewed version 1.30.0 and harden dual-lockfile packaging
96113
- Keep pnpm authoritative while regenerating/tracking `package-lock.json`; CI now verifies frozen pnpm and clean npm installs, typecheck/build/tests, production audits, package contents, and CLI metadata smoke tests
97-
- Preserve the modern remote-tool callback/content compatibility fixes and reject the vulnerable 1.17.x downgrade
98-
99-
* Close out overlapping open PR proposals on the `features` branch
100-
- #52, #48, and #39 are superseded after their directory, CLI metadata, and profile-path behavior lands through the current architecture
101-
- #17 is superseded by bounded rich `discourse_search_posts`; topic search remains unchanged rather than gaining unbounded bare post IDs
102-
- #49's lockfile/build concern is adopted while its vulnerable SDK downgrade is rejected; #41 and #43 are obsoleted by the reviewed 1.30.0 pin and transport compatibility tests; #51 remains this branch
114+
- Upgrade Zod, TypeScript, ESLint, and supporting type packages while preserving the modern remote-tool callback/content compatibility fixes and rejecting the vulnerable SDK 1.17.x downgrade
103115

104116
* Simplify built-in tool registration with typed `defineTool()` definitions and one ordered catalog
105117
- Preserve existing MCP names, metadata, schemas, handlers, registration order, and availability
@@ -332,7 +344,7 @@
332344
#### Features
333345

334346
* add optional HTTP transport support via --transport flag
335-
* implement Streamable HTTP transport (initially stateless; superseded in Unreleased by the one-stateful-session security contract) as alternative to stdio
347+
* implement Streamable HTTP transport (initially stateless; superseded in 0.3.0 by the one-stateful-session security contract) as alternative to stdio
336348
* add --port flag for configuring HTTP server port (default: 3000)
337349
* include health check endpoint at /health for HTTP mode
338350

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ A Model Context Protocol (MCP) stdio server that exposes Discourse forum capabil
55
- **Entry point**: `src/index.ts` → compiled to `dist/index.js` (binary name: `discourse-mcp`)
66
- **SDK**: `@modelcontextprotocol/sdk`
77
- **Node**: >= 24
8-
- **Version**: 0.2.9 (0.2.x has breaking changes from 0.1.x, including JSON-only tool output; category/group resources remain deprecated compatibility surfaces alongside canonical list tools)
8+
- **Version**: 0.3.0 (adds operator-selectable toolsets, structured directory output, and expanded opt-in administration capabilities; 0.2.x introduced breaking changes from 0.1.x, including JSON-only tool output; category/group resources remain deprecated compatibility surfaces alongside canonical list tools)
99

1010
### Quick start (release)
1111

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@discourse/mcp",
33
"mcpName": "io.github.discourse/mcp",
4-
"version": "0.2.9",
4+
"version": "0.3.0",
55
"description": "Discourse MCP CLI server (stdio) exposing Discourse tools via MCP",
66
"author": "Discourse",
77
"license": "MIT",

server.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66
"url": "https://github.com/discourse/discourse-mcp",
77
"source": "github"
88
},
9-
"version": "0.2.9",
9+
"version": "0.3.0",
1010
"packages": [
1111
{
1212
"registryType": "npm",
1313
"identifier": "@discourse/mcp",
14-
"version": "0.2.9",
14+
"version": "0.3.0",
1515
"transport": {
1616
"type": "stdio"
1717
}

0 commit comments

Comments
 (0)