# @bulkpublish/mcp-server

Model Context Protocol server for BulkPublish — lets AI assistants manage social media posts, channels, media, and analytics.

- **Type:** MCP server
- **Trust:** 60/100 (B), scored on the package rubric
- **Verification:** community-indexed — nobody has claimed this listing
- **Version:** 1.42.0
- **Author:** io.github.azeemkafridi
- **License:** MIT
- **npm:** @bulkpublish/mcp-server
- **Endpoints:** streamable-http https://mcp.bulkpublish.com/mcp
- **Source:** https://github.com/azeemkafridi/bulkpublish-api
- **Endpoint health:** reachable (last checked 2026-10-10T18:32:54.154Z, 1 sample) — uptime is not a security property and is not part of the trust score
- **Compatible clients:** claude-code, cursor, copilot, chatgpt, gemini (basis: transport)

## Trust

60/100 (B), scored on the package rubric
- Publisher verified: no
- Install scripts: nothing suspicious found
- Prompt-injection scan: not run
- Obfuscation scan: not run
- Evidence age: 1 day

## Security scan

- **Status:** clean
- **Scanned:** 2026-10-11T15:37:10.604Z
- **Version scanned:** 1.42.0
- **CVEs:** none found by OSV at scan time

## Tools

40 declared. Statically extracted from the shipped source — a floor on the surface, not a census.
- `bulkpublish` — Model Context Protocol server for BulkPublish — lets AI assistants manage social media posts, channels, media, and analytics.
- `list_channels` — List all connected social media channels (X/Twitter, Instagram, LinkedIn, Facebook, TikTok, etc.). Returns channel ID, platform, account name, and token status,
- `list_platforms` — List every social platform BulkPublish supports and whether it is currently available.
- `create_post` — Create a new social media post. Can be saved as a draft or scheduled for a specific time. Supports platform-specific content overrides, media attachments, label
- `list_posts` — List posts with optional filters for status, search text, date range, channel, and label. Returns paginated results with platform statuses and metrics, ordered 
- `get_post` — Get a single post by ID with full details including platform statuses, labels, media files, recurring schedule info, and metrics. For a thread post, `threadPart
- `publish_post` — Publish a draft or scheduled post immediately. The post will be queued for publishing to all its target channels.
- `retry_post` — Retry publishing a failed or partially failed post. Only retries the platforms that failed, not the ones that already succeeded.
- `approve_post` — Approve a post awaiting team approval. Requires a role with post:approve (owner, admin, approver).
- `reject_post` — Reject a post awaiting team approval. Requires a role with post:approve.
- `upload_media` — Upload a media file (image or video) from a URL or local file path. The file is stored in BulkPublish for use in posts. Supported formats: JPEG, PNG, WebP, GIF,
- `list_media` — List uploaded media files with optional search and pagination. Returns file metadata including URLs, dimensions, and labels.
- `get_analytics` — Get an analytics summary for a date range. Returns total posts, status breakdown (published, failed, scheduled), per-platform stats, and daily post counts. Opti
- `list_labels` — List all labels available for tagging posts and media.
- `create_label` — Create a new label for organizing posts or media files.
- `list_hashtag_groups` — List the organization's saved hashtag groups — named sets of hashtags to drop into a post.
- `create_hashtag_group` — Save a named set of hashtags (1-30) for reuse in posts. Hashtags may be given with or without the leading '#'; letters, digits and underscores only. Up to 100 g
- `update_hashtag_group` — Rename a hashtag group and/or replace its hashtags (partial update — at least one field is required).
- `delete_hashtag_group` — Delete a saved hashtag group. Posts that already contain its hashtags are untouched.
- `list_templates` — List the organization's saved post templates — reusable text to start a new post from. Filter by kind to get saved first-comment snippets instead of captions.
- `create_template` — Save post text as a named template for reuse (text only; media and channels belong to the post). Up to 200 per organization per kind (captions and first-comment
- `update_template` — Rename a template and/or replace its text (partial update — at least one field is required).
- `delete_template` — Delete a saved post template.
- `list_calendar_notes` — List calendar notes (free text pinned to a day — campaigns, holidays, 'no posts this week'; they never publish) in a date range of at most a year.
- `create_calendar_note` — Pin a note to a day on the content calendar. Not a post: nothing is published.
- `update_calendar_note` — Change a calendar note's day, text and/or colour (partial update — at least one field is required).
- `delete_calendar_note` — Delete a calendar note.
- `share_post` — Create (or fetch) a post's read-only review link that anyone can open without signing in — for client approval outside the app. Returns { shareToken, url, creat
- `unshare_post` — Revoke a post's review link so the URL stops working. Idempotent. Pro and Business only: on the single-seat Free and Lifetime plans this answers 403 FEATURE_DIS
- `list_review_links` — List the organization's client review links (batch review links), newest first, with how many posts each one covers. Pro and Business only: on the single-seat F
- `create_review_link` — Create a read-only review link covering several posts at once — the multi-post counterpart of share_post. Anyone with the link can open it without signing in. E
- `delete_review_link` — Revoke a client review link. The posts it covered are untouched. Pro and Business only: on the single-seat Free and Lifetime plans this answers 403 FEATURE_DISA
- `list_client_connect_links` — List the organization's client-connect links, newest first — one-time links a client can open, with no BulkPublish account, to connect their own platform accoun
- `create_client_connect_link`
- `delete_client_connect_link` — Revoke a client-connect link before it has been used. Idempotent; an account it already connected is untouched. Pro and Business only: on the single-seat Free a
- `update_media` — Set a media file's alt text (accessibility description). It belongs to the file, so one value covers every post that reuses it, and is sent to Instagram, Linked
- `get_quota_usage` — Check current account usage. Returns daily/monthly post counts, scheduled post counts, channel counts, and media storage usage.
- `update_post`
- `delete_post` — Delete a post by ID. Only draft and failed posts can be deleted.
- `get_post_metrics`

## Install

**Verdict: review** — Installable, but 1 thing to check first: No publisher has proved control of this listing; it is indexed, not vouched for.
**Cautions** (coverage gaps and advisories — never blocking)
- No publisher has proved control of this listing; it is indexed, not vouched for.
**Config** (claude-code):
```json
"{\n  \"mcpServers\": {\n    \"mcp-server\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@bulkpublish/mcp-server\"\n      ],\n      \"env\": {\n        \"BULKPUBLISH_API_KEY\": \"<YOUR_BULKPUBLISH_API_KEY>\"\n      }\n    }\n  }\n}"
```
**Credentials it will ask for** (names only — Forge never holds a value):
- `BULKPUBLISH_API_KEY` — Bulkpublish API Key (required)
Placeholders only. Forge never holds, brokers, or transmits a credential value — replace each <YOUR_NAME> in your own config file. Do not send a value back to Forge; no Forge endpoint accepts one.
- This entry needs 1 credential (1 required). The generated config carries placeholders, so it will fail in the editor rather than at runtime if they are left unset.

## Blast radius

Critical blast radius — deletes data; runs locally and hosted.
- Floor 62, ceiling 62 (tier: critical)
- This is impact, not likelihood. A high radius is not a defect: a filesystem server is supposed to write files. It is never part of the trust score.

## Machine-readable views of this entry

- Signed JSON: https://forgeregistry.com/api/v1/packages/%40bulkpublish%2Fmcp-server
- Install plan: https://forgeregistry.com/api/v1/packages/%40bulkpublish%2Fmcp-server/install-plan
- Alternatives: https://forgeregistry.com/api/v1/alternatives/%40bulkpublish%2Fmcp-server
- HTML page: https://forgeregistry.com/registry/%40bulkpublish%2Fmcp-server
- MCP: POST https://forgeregistry.com/api/mcp → `forge_get_package` / `forge_install_plan`

## About this document

Generated by Forge (https://forgeregistry.com) — a compact rendering of the same record served, signed, at the JSON URL above. Trust and scan facts are the registry's own measurements; anything Forge did not measure is named as unmeasured rather than omitted.
