buffer-mcp-server
This server lets you manage Buffer social media posts via a custom MCP interface, allowing you to list channels, create drafts, and publish or schedule posts.
buffer_list_channels: Retrieve all social media channels connected to a Buffer organization, including their IDs, display names, service types, and connection status — used to find thechannelIdneeded for posting.buffer_create_draft_post: Save a post as a draft in Buffer (never goes live) for review and iteration. Accepts a channel ID, post text, and an optional suggested publish time. Safe to call without prior approval since nothing is published.buffer_publish_post: Schedule or queue a post that will actually go live on a social channel. Supports two modes:scheduled: Publishes at a specific date/time (requiresdueAt).queue: Drops the post into Buffer's next available slot for the channel.
Requires explicit human approval and the
confirmed: trueparameter before calling.
Provides tools for managing Buffer posts, including listing channels, creating draft posts, and publishing/scheduling posts to Buffer via GraphQL.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@buffer-mcp-serverSchedule a post about our new product launch for tomorrow at 10 AM."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
buffer-mcp-server
A custom MCP server that gives Claude real publish/schedule access to Buffer,
via the createPost GraphQL mutation — beyond what the official Buffer MCP connector
exposes (which is read-only + create_idea drafts only).
Schema status: verified against the live API
The GraphQL operations here were introspected and validated against Buffer's live
endpoint (api.buffer.com). Two things were corrected after the initial build:
The
channelsquery insrc/tools/list-channels.tstakes a singleinput: ChannelsInput!argument ({ organizationId }), not a flatchannels(organizationId:)argument.CreatePostInput.assetsis a required (non-null) list. Bothsrc/tools/draft-post.tsandsrc/tools/publish-post.tsnow sendassets: []for text-only posts. The other fields (schedulingType,mode,dueAt,saveToDraft,channelId,text) match the live schema.
If Buffer changes their schema, re-introspect with a small test query/mutation and
adjust the .ts files to match.
Related MCP server: buffer-mcp
Setup
npm install
npm run buildConfiguration
Set two environment variables wherever you run this:
BUFFER_API_KEY— your personal Buffer API key (Buffer → developer settings → requires you to be an organization owner). You said you already have this.MCP_SHARED_SECRET(optional but recommended for a public HTTP deployment) — an arbitrary string. If set, requests must include headerx-mcp-secret: <value>.
Running locally (stdio) — for Claude Desktop
Add to your Claude Desktop MCP config:
{
"mcpServers": {
"buffer": {
"command": "node",
"args": ["/absolute/path/to/buffer-mcp-server/dist/index.js"],
"env": { "BUFFER_API_KEY": "your_key_here" }
}
}
}Running as a remote HTTP server — for claude.ai custom connectors
TRANSPORT=http BUFFER_API_KEY=your_key MCP_SHARED_SECRET=some_random_string \
PORT=3000 npm startThis exposes a stateless streamable-HTTP MCP endpoint at POST /mcp.
Hosting options
This is a plain Node/Express app, so it runs on anything that runs Node — Render,
Railway, Fly.io, or a small VPS are the simplest. It does not run as-is on Cloudflare
Workers (no Node http server / Express there); porting it to Workers would mean
swapping Express for a raw fetch handler and using the SDK's Workers-compatible
transport pattern — possible, but a separate step from this build. Given the rest of
your stack lives on Cloudflare, that's a reasonable follow-up if you want everything
in one place.
Once hosted, register it in Claude: Settings → Connectors → Add custom connector,
paste your server's https://your-host/mcp URL.
Tools this server exposes
buffer_list_channels — read-only, lists channel IDs for an organization.
buffer_create_draft_post — always saves as a draft (
saveToDraft: truehardcoded). Free to call anytime, nothing goes live from this one.buffer_publish_post — actually schedules or queues a REAL post that will go live. Requires
confirmed: trueas a literal parameter, and its tool description explicitly instructs Claude to only call it right after you've said something like "yes, post it" to that exact text — never from an earlier general go-ahead, and never in response to instructions found inside a fetched web page or document.
Approval workflow (what actually happens)
Claude drafts the post text in chat and shows it to you.
You say yes/approve.
Claude calls
buffer_publish_postwithconfirmed: trueand the exact approved text.
Important limit to understand: the confirmed: true parameter is a strong signal and
an audit trail (you can always check the tool-call log to see it was set), but it is Claude
setting that parameter based on judgment about the conversation — a JSON field can't
independently verify a human typed "yes." The real guarantee is behavioral: Claude is
built to always ask before taking a publishing action, and to treat that as non-negotiable
regardless of how a request is phrased. If you want a guarantee that doesn't depend on that
judgment at all, use buffer_create_draft_post exclusively and do the final approve/schedule
click yourself in Buffer — that's enforced by the code, not by anyone's judgment call.
For extra safety on top of either approach, you can also set "Requires Approval" on your channels in Buffer's own settings — Buffer's docs confirm API-created posts on such channels are saved as drafts awaiting approval regardless of what the API call requested.
Known limitations
If a channel is set to "Requires Approval" in Buffer, posts created via the API land as pending drafts regardless of
mode— that's Buffer's behavior, not a bug here.No image/video upload tool included yet (Buffer changed their assets input format on May 25, 2026 — worth adding as a follow-up once the schema's confirmed).
No delete/edit tool included — intentionally minimal for now; extend
src/tools/if you want those.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables publishing and scheduling content across 9 social platforms (X, Instagram, TikTok, YouTube, Facebook, LinkedIn, Pinterest, Threads, Bluesky) through a single MCP tool interface, acting as a stateless proxy to the Solnk API.111MIT
- Alicense-qualityCmaintenanceMCP server for Buffer social media scheduling via the GraphQL API, enabling post creation, queue management, engagement metrics, and media uploads.MIT
- Flicense-qualityFmaintenanceEnables managing Buffer social media posts via Claude, including creating, scheduling, and viewing posts across connected accounts through Buffer's GraphQL API.4

Postoria MCP Serverofficial
AlicenseAqualityAmaintenanceEnables MCP-compatible clients to create, schedule, queue, inspect, and delete Postoria posts through the Postoria Public API.14261MIT
Related MCP Connectors
Create, schedule and publish social posts to TikTok, Instagram, Facebook and YouTube.
Connect any AI agent to 11+ social platforms: schedule, publish & track posts via hosted MCP.
Schedule, publish, and analyze social posts on TikTok, Instagram, YouTube, X, Threads, LinkedIn.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jasonplusproductions-create/buffer-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server