Skip to main content
Glama
dgalarza

Buttondown MCP Server

by dgalarza
README.md
# Buttondown MCP Server

An MCP (Model Context Protocol) server for interacting with the [Buttondown](https://buttondown.com) newsletter API.

## Tools

### Emails

| Tool | Description |
|------|-------------|
| `list_emails` | List emails with optional status filter (draft/scheduled/sent) |
| `get_email` | Get single email details by ID |
| `create_draft` | Create new draft with markdown content |
| `update_draft` | Edit existing draft |
| `send_draft` | Send a draft immediately |
| `schedule_draft` | Schedule a draft for later |
| `get_analytics` | Get open/click rates for sent emails |

### Subscribers

| Tool | Description |
|------|-------------|
| `list_subscribers` | List subscribers with optional type filter (regular/premium/churned/etc.) |
| `get_subscriber` | Get subscriber details by ID or email address |

### Tags

| Tool | Description |
|------|-------------|
| `list_tags` | List all tags in your newsletter |
| `get_tag` | Get tag details by ID |
| `create_tag` | Create a new tag with optional color and description |
| `update_tag` | Update an existing tag |
| `delete_tag` | Delete a tag (subscribers remain unaffected) |

## Installation

### Claude Code

```bash
claude mcp add buttondown -- npx -y buttondown-mcp
```

Then set your API key:

```bash
claude mcp add-json buttondown '{"command":"npx","args":["-y","buttondown-mcp"],"env":{"BUTTONDOWN_API_KEY":"your-api-key"}}'
```

### Manual Configuration

Add to your Claude Code settings:

```json
{
  "mcpServers": {
    "buttondown": {
      "command": "npx",
      "args": ["-y", "buttondown-mcp"],
      "env": {
        "BUTTONDOWN_API_KEY": "your-api-key"
      }
    }
  }
}
```

Get your API key from https://buttondown.com/settings/api

## License

MIT

TDQS

A3.7/5.0

Scored across 15 tools

Disambiguation5/5

Each tool targets a distinct resource and action, such as list_emails vs. get_email, and send_draft vs. schedule_draft. The only potential overlap is list_subscribers and get_subscriber_stats, but the descriptions clearly differentiate aggregate stats from listing individuals.

Naming Consistency5/5

Tool names follow a consistent verb_noun pattern: list_* for listing, get_* for single-item retrieval, and create_/update_/delete_/send_/schedule_ for actions. Singular nouns are used for single-item operations, plural for lists, with minor exceptions like get_analytics and get_subscriber_stats that still fit the pattern.

Tool Count4/5

With 15 tools, the server is at the upper end of a well-scoped range but covers a broad domain: emails, drafts, subscribers, tags, and analytics. Each tool serves a clear purpose, though the count could be trimmed by merging some read operations.

Completeness4/5

The main workflows are covered: create, update, send, and schedule drafts; list and get emails; and full CRUD for tags. However, there is no delete_draft action, and subscriber management is limited to reading and stats, leaving gaps in lifecycle management.

Maintenance

ActivityInactive
ResponsivenessNo issues