Buffer MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_HTTP_PORT | No | Port for Streamable HTTP transport, for example 8787. | |
| MCP_TRANSPORT | No | Transport mode. Use 'http' for Streamable HTTP; defaults to stdio. | |
| BUFFER_API_KEY | Yes | Your Buffer personal API key, obtained from Buffer → Developers / API. | |
| CLOUDINARY_URL | No | Cloudinary connection URL alternative to CLOUDINARY_CLOUD_NAME, CLOUDINARY_API_KEY, and CLOUDINARY_API_SECRET. | |
| CLOUDINARY_API_KEY | No | Cloudinary API key. Required only when using Cloudinary upload features, unless CLOUDINARY_URL is provided. | |
| CLOUDINARY_API_SECRET | No | Cloudinary API secret. Required only when using Cloudinary upload features, unless CLOUDINARY_URL is provided. | |
| CLOUDINARY_CLOUD_NAME | No | Cloudinary cloud name. Required only when using Cloudinary upload features, unless CLOUDINARY_URL is provided. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| buffer_get_configA | Return the merged configuration (defaults < config file < environment < CLI). Secrets are masked. Use this to discover the active settings before making changes. |
| buffer_set_configA | Deep-merge a JSON patch into the config file and persist it. Only non-secret settings are writable unless safety.allowSecretWrite is true. Returns the updated, masked configuration. |
| buffer_reset_configA | Delete the persisted config file and fall back to defaults plus environment variables. Requires safety.allowDestructive=true and confirm="reset". |
| buffer_list_organizationsA | List the organizations available to the configured Buffer API key, including plan limits. |
| buffer_list_channelsB | List connected channels for an organization with service, timezone, and queue state. |
| buffer_get_channelC | Fetch a single channel by id. |
| buffer_list_postsA | List posts for an organization with optional channel, status, and due-date filters. Returns the newest page by default. |
| buffer_get_postA | Fetch a single post with assets, status and any publishing error. |
| buffer_create_postA | Create one post per channel. Media can be local paths (uploaded through Cloudinary) or HTTPS URLs. Runs platform validation first; use dryRun to preview the payload without writing. |
| buffer_update_postA | Edit the text, due date, mode or metadata of an existing draft/scheduled post. Requires safety.allowDestructive=true and confirm equal to the post id. |
| buffer_delete_postA | Delete a post by id. Requires safety.allowDestructive=true and confirm equal to the post id. |
| cloudinary_uploadA | Upload a local file (or import a remote URL) through the built-in Cloudinary credentials and return the public HTTPS delivery URL plus metadata. This is the only supported upload path; credentials never leave this process. |
| cloudinary_upload_batchA | Upload several local files or URLs sequentially, returning per-item results and failures. Maximum 20 items. |
| cloudinary_linkB | Construct a public delivery URL for an existing public_id, optionally with a transformation. |
| cloudinary_variantsA | Return delivery URLs for common platform aspect ratios (16:9, 1:1, 4:5, 9:16 padded, 9:16 cropped) derived from an existing public_id. |
| cloudinary_deleteA | Permanently delete an asset by public_id. Requires safety.allowDestructive=true and confirm equal to the public_id. |
| media_probeA | Check HTTPS, HEAD support, range support, content type and size of a public media URL. Buffer requires an HTTPS URL whose endpoint answers HEAD instead of returning 404. |
| media_preflightB | Validate text and media against the selected channels before creating a post: text limits, required metadata, asset types, and the YouTube Shorts orientation rule. |
| buffer_list_daily_limitsA | Return each channel's daily posting limit, how many posts are scheduled and sent, and whether the limit is reached. |
| buffer_get_analyticsA | Return aggregated metrics for an organization in a date range. On the free plan the window is capped at 31 days, so longer ranges are clamped and reported. |
| buffer_list_ideasC | List ideas in the organization's idea board. |
| buffer_list_idea_groupsC | List the idea groups (boards) in an organization. |
| buffer_create_ideaC | Create an idea on the idea board. Requires confirm="idea". |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 23 tools
Most tools are clearly distinct by resource and action (buffer_get_channel vs buffer_list_channels, buffer_get_post vs buffer_create_post). Minor overlap exists between media_probe and media_preflight (both validate media) and between cloudinary_upload and cloudinary_upload_batch, but descriptions clarify the single-vs-batch and URL-vs-channel-rule distinctions. An agent can reliably select the right tool.
Predictable verb_noun pattern with consistent domain prefixes (buffer_, cloudinary_, media_). Verbs (get/set/list/create/update/delete/upload) are used consistently. Minor deviations: cloudinary_link and cloudinary_variants omit a trailing noun, and buffer_get_analytics/buffer_list_daily_limits slightly break the resource_verb pattern, but overall readable and consistent.
23 tools is on the heavy side, spanning config, posts, media, analytics, and ideas domains. Each tool earns its place within its sub-domain, but the surface is large enough that it borders on overwhelming for a single server. Reasonable but at the upper edge of comfortable scoping.
Posts have full CRUD, config is fully manageable, and media/Cloudinary lifecycle is covered. Gaps: ideas only support list/list-groups/create with no update or delete, analytics is read-only, and channel management is read-only. These are minor gaps agents can work around for core Buffer workflows.