Skip to main content
Glama
README.md
# qpost-mcp

MCP server for [QPost](https://qpost.dev) — lets AI agents schedule and publish video/image posts to YouTube, TikTok, and Instagram through QPost's REST API.

## Install

Generate an API key from your QPost dashboard (Settings → API Keys), then pick one of the two options below.

### Hosted (recommended — nothing to install)

QPost runs the same server at `https://qpost.dev/mcp` over Streamable HTTP:

```bash
claude mcp add --transport http qpost https://qpost.dev/mcp \
  --header "x-api-key: YOUR_API_KEY"
```

Any MCP client that speaks Streamable HTTP can point at that URL with an
`x-api-key` (or `Authorization: Bearer`) header. The endpoint is stateless, so
there is no session to manage.

### Local (stdio) via npx

Use this if you self-host QPost or would rather run the server yourself:

```bash
claude mcp add qpost -e QPOST_API_KEY=your_key_here -- npx -y qpost-mcp
```

### Claude Desktop / other MCP clients

```json
{
  "mcpServers": {
    "qpost": {
      "command": "npx",
      "args": ["-y", "qpost-mcp"],
      "env": {
        "QPOST_API_KEY": "your_key_here"
      }
    }
  }
}
```

Set `QPOST_BASE_URL` too if you're self-hosting QPost (defaults to `https://qpost.dev`).

## Tools

| Tool | Description |
|---|---|
| `list_connected_accounts` | List connected YouTube/TikTok/Instagram accounts and their status |
| `create_post` | Create and publish (or schedule) a post, with video or image media from a URL or local path |
| `list_posts` | List posts, optionally filtered by status/platform |
| `get_post` | Get a single post by ID |
| `update_post` | Update a post's caption/schedule/timezone/status |
| `delete_post` | Delete a post |
| `retry_post` | Retry a failed post |

### Media handling differs by transport

The local stdio server can read files from your machine, so `create_post`
accepts `mediaPath` as well as `mediaUrl`. The hosted endpoint obviously
cannot reach your disk — it takes `mediaUrl`/`imageUrls`, or `mediaBase64`
with an optional `mediaFilename` to set the MIME type.

Full request/response shapes and per-platform metadata options (YouTube category/privacy, TikTok privacy level, Instagram media type, etc.) are documented at [qpost.dev/docs](https://qpost.dev/docs) — this server is a thin wrapper over that same REST API.

## Local development

```bash
npm install
npm run dev   # runs src/index.ts directly via tsx
npm run build # compiles to dist/
```

## License

MIT

TDQS

A4.2/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: account listing, post CRUD, and retry. No two tools could be confused, as create/list/get/update/delete/retry operate on different actions and list_connected_accounts is separate.

Naming Consistency5/5

All tool names follow the same snake_case verb_noun pattern (list_, create_, get_, update_, delete_, retry_). This is highly predictable and consistent.

Tool Count5/5

Seven tools is well-scoped for a social media posting server. Each tool earns its place, covering the essential operations without unnecessary bloat.

Completeness5/5

The set covers the full lifecycle of posts: create, list, get, update, delete, plus retry for failures and account listing for platform awareness. No obvious gaps for the stated purpose.

Maintenance

ActivitySlowing
ResponsivenessUnresponsive