Publish a changelog from Claude Code
The agent that wrote the change already knows what changed. With the Nordva Launch MCP server connected, it can publish the release note to your hosted changelog at the end of the session, schedule it for later, or check what has already been posted.
Claude Code connects to remote MCP servers over HTTP directly. One command registers the server under the name nordva.
Setup
You need a secret key (nv_live_…) from Dashboard → API keys.
01Register the server
claude mcp add --transport http nordva https://mcp.nordva.dev \
--header "Authorization: Bearer nv_live_..."The name comes before the URL. By default the server is added for the current project only and stored outside the repository; add --scope user to make it available in every project.
02Or share it with the team without sharing the key
.mcp.json
{
"mcpServers": {
"nordva": {
"type": "http",
"url": "https://mcp.nordva.dev",
"headers": {
"Authorization": "Bearer ${NORDVA_API_KEY}"
}
}
}
}Claude Code expands ${NORDVA_API_KEY} from the environment, so the file can be committed while each developer keeps their own key in their shell profile.
03Check the connection
Run claude mcp list, or type /mcp inside a session. nordva should show as connected. Then ask Claude to run setup_check: it reports the project, the plan and which features are unlocked.
Then ask Claude Code
- Publish a changelog entry for what we just shipped. Category: fix.
- Draft an entry for the new export feature and schedule it for Monday 09:00 UTC.
- What did we publish on the changelog this month?
- Archive the entry about the beta importer, it went out by mistake.
For “Publish a changelog entry for the CSV export fix we just merged.” Claude Code calls publish_changelog_entry with:
{
"title": "CSV export no longer drops rows with commas in the name",
"body_markdown": "Names containing a comma were split into two columns, which shifted every field after them. Values are now quoted.\n\nAffects exports made since 2 September. Re-export to get a correct file.",
"category": "fix",
"version": "v1.8.2"
} Returned: The entry id, its status (published or scheduled) and the public URL of the entry on the hosted changelog page.
Changelog tools and arguments
publish_changelog_entry
Publish or schedule a changelog entry
| title | required | string, max 200 | User-facing headline. |
| body_markdown | required | string, max 50,000 | Full description in Markdown. |
| category | required | "feature" | "fix" | "improvement" | "security" | "breaking" | Use 'breaking' only when customers must change code/config. |
| version | optional | string, max 64 | Free-form version string. Not validated as semver. |
| scheduled_at | optional | string | ISO 8601 timestamp. If set, entry is scheduled, not published. |
list_changelog_entries
Read-onlyList recent changelog entries
| limit | optional | number, 1–50 | |
| category | optional | "feature" | "fix" | "improvement" | "security" | "breaking" | |
| status | optional | "draft" | "published" | "scheduled" | "archived" | |
| since | optional | string |
archive_changelog_entry
Confirms firstRemove a changelog entry from public view
| entry_id | required | string | The id of the changelog entry to archive (e.g. ce_01hwxyz...). |
Behaviour worth knowing
- Without scheduled_at the entry is public immediately. With it, the entry stays in scheduled status until a cron that runs every minute publishes it.
- Archiving is a soft delete: the entry leaves the public page and feed at once but is not destroyed.
- On the Free plan the eleventh published entry is refused with PLAN_LIMIT_REACHED. The tool description tells the agent to show the upgrade link and stop rather than retry.
- Published entries are emailed to confirmed subscribers on plans that include subscribers.
- Tools appear to the model as mcp__nordva__<tool>, which is the form to use in permission allowlists.
- Read-only tools are marked as such by the server; Claude Code still asks before the first call to each tool unless you allow it.