patchlog-mcp
README.md
# patchlog-mcp
MCP server for [Patchlog](https://patchlog.io). Write, update, and publish your changelog straight from Claude Code, Claude Desktop, Cursor, or any other MCP client. Ship a feature, then tell your agent "add a changelog entry for this" and it lands on your public changelog.
## Requirements
- A [Patchlog](https://patchlog.io) account on the Pro plan (the API is a Pro feature)
- An API token from [Settings > API Tokens](https://patchlog.io/settings/api-tokens)
- Node.js 18 or newer
## Setup
### Claude Code
```bash
claude mcp add patchlog -e PATCHLOG_API_TOKEN=your-token-here -- npx -y patchlog-mcp
```
### Claude Desktop
Add this to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"patchlog": {
"command": "npx",
"args": ["-y", "patchlog-mcp"],
"env": {
"PATCHLOG_API_TOKEN": "your-token-here"
}
}
}
}
```
### Cursor
Add the same block to `.cursor/mcp.json` in your project, or to `~/.cursor/mcp.json` globally:
```json
{
"mcpServers": {
"patchlog": {
"command": "npx",
"args": ["-y", "patchlog-mcp"],
"env": {
"PATCHLOG_API_TOKEN": "your-token-here"
}
}
}
}
```
### Remote server (no Node required)
Patchlog also serves this same tool set as a remote MCP endpoint. Point your client at `https://patchlog.io/mcp` with your API token as a bearer token:
```bash
claude mcp add --transport http patchlog https://patchlog.io/mcp --header "Authorization: Bearer your-token-here"
```
## Tools
| Tool | What it does |
| --- | --- |
| `list_projects` | List your projects with their public changelog URLs |
| `list_entries` | List entries for a project, filterable by status and type |
| `get_entry` | Fetch one entry with its full Markdown content |
| `create_entry` | Create an entry (draft by default, or publish immediately, or schedule with a future date) |
| `update_entry` | Change any field of an existing entry |
| `publish_entry` | Push a draft or scheduled entry live right now |
## Configuration
| Environment variable | Required | Default |
| --- | --- | --- |
| `PATCHLOG_API_TOKEN` | Yes | none |
| `PATCHLOG_API_URL` | No | `https://patchlog.io` |
## Example prompts
- "Add a changelog entry for the export feature we just shipped and publish it."
- "Draft changelog entries for everything in this release branch, I will review them in Patchlog."
- "Schedule a changelog entry about the pricing change for next Monday 9am."
## Development
```bash
npm install
npm test
npm run build
```
## License
MIT
TDQS
A4.1/5.0
Scored across 6 tools
Disambiguation4/5
The tools cleanly separate project listing from entry operations, and get/create/update have distinct roles. publish_entry overlaps slightly with update_entry's ability to change status, but its specific 'publish now' semantics are clearly differentiated.
Naming Consistency5/5
All tools follow a consistent snake_case verb_noun pattern (list_, get_, create_, update_, publish_), making the set predictable and easy to navigate.
Tool Count5/5
Six tools is appropriately scoped for a changelog management server. Each tool maps to a core operation without unnecessary redundancy.
Completeness4/5
The core entry lifecycle is covered: list, get, create, update, and publish. The only notable gap is a delete_entry tool, which would make lifecycle coverage complete.
Maintenance
ActivityMaintained
ResponsivenessNo issues