Skip to main content
Glama
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