
Postmcp Mcp Server
io.github.postmcp由 GitHub 账号 postmcp 发布v1.0.1更新于 Oct 25, 2026
Publish and schedule posts to LinkedIn, X, Facebook, Instagram, Threads, Bluesky and YouTube Shorts.
概览
让 AI 助手向 LinkedIn、X、Facebook、Instagram、Threads、Bluesky 和 YouTube Shorts 发布和定时发布社交媒体帖子。
- 可以做什么
- 读取工作区、已连接账号及其令牌状态、帖子队列,以及单帖或单账号的分析数据,可选择付费从平台实时刷新。起草、定时、改期、发布、重试或删除帖子,可指定具体账号或整个平台,并支持按账号定制文案。发布前执行预检,检查字数限制、未连接账号、媒体规则和积分消耗,不会真正发出。通过签名 URL 上传本地媒体、按 URL 导入公开文件或生成图片,再附加单张媒体或有序的轮播与图集。在一次请求中按顺序批量执行最多 20 个工具调用。
- 适用场景
- 适合让助手在多个社交平台上起草、定时和发布帖子、查看发布效果,或管理发布队列而无需切换到单独的后台面板。
- 运行要求
- 通过 npx 以 stdio 在本地运行,需要 Node.js,也可托管为 HTTP 模式。需要 PostMCP AI 账号,并在 POSTMCPAI_API_KEY 中提供密钥;POSTMCPAI_PROJECT_ID 可选,用于指定工作区。需要能访问 PostMCP 后端的网络。
安装
在 SourceWeft 中
- 打开 控制台中的 Postmcp Mcp Server,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
PostMCP AI Model Context Protocol (MCP) Server
[npm version] [License: MIT] [MCP Compatible]
Official PostMCP AI Model Context Protocol (MCP) Server. Connect your social media publishing pipelines directly into AI assistants, desktop applications, IDE workflows, and web environments like Claude Desktop, Claude.ai, Cursor, and ChatGPT Custom GPTs.
Supported platforms include LinkedIn, X (Twitter), Facebook, Instagram, Threads, Bluesky, and YouTube Shorts.
🚀 Features & Capabilities
- 🤖 20 Built-in Tools: Workspaces, connected accounts and their token health, the post queue, pre-flight checks, create/schedule/reschedule/publish/retry/delete, per-post and per-profile analytics, media uploads, image generation, and batching.
- 🖼️ Carousels & galleries: Pass
mediaUrlsto publish a carousel on Instagram and Threads, a multi-photo post on Facebook and LinkedIn, or a four-image gallery on X and Bluesky - one call, every network's ceiling checked up front. - ⚡ Dual Transport Modes: Native Stdio mode (for local desktop apps & IDEs) and Streamable HTTP mode (for web services, Claude.ai, and remote connectors).
- 🔑 Flexible Authentication: Auto-detects API key from environment variables (
POSTMCPAI_API_KEY), URL query parameters (?apikey=YOUR_KEY), or HTTP authorization headers (x-api-key,Bearer token). - 🗂️ Multi-Workspace Aware: The API key carries its own workspace, so a bare key is enough. To act on another one, every tool takes an optional
workspaceId, also settable per connection (?projectId=...,x-project-id) or per process (POSTMCPAI_PROJECT_ID). - 🤖 ChatGPT Actions Compatible: Includes built-in OpenAPI 3.0 specification generator (
/openapi.json) and REST endpoints (/api/tools/:name) for ChatGPT Custom GPT integration. - 🔒 OAuth with PKCE and RFC 9728: Per-user consent, persistent encrypted grants, rotating tokens and DCR for ChatGPT/Codex. Requires the production settings in OAUTH.md; API-key clients remain supported.
- 🧩 Installable plugin: Account onboarding, publishing, scheduling and analytics workflows. See PLUGIN.md and run
npm run package:plugin.
📁 Repository Architecture
⚙️ Environment Configuration
🛠️ MCP Tools Reference
Every tool below also accepts an optional workspaceId (from list_workspaces) to act on a specific workspace.
Reading
Writing
Media uploads
For a local file, the MCP client needs an HTTP upload capability:
- Call
create_media_upload_urlwithfileName,contentType(MIME type), andfileSize(bytes). For example:{ "fileName": "launch.png", "contentType": "image/png", "fileSize": 245760 }. - PUT the raw file bytes to the returned
uploadUrlwith the returnedheaders. Do not send your PostMCP API key to storage. The URL expires afterexpiresInseconds (normally 900); request another if it expires. The file is not uploaded merely by creating the URL. - After the PUT succeeds, call
complete_media_uploadwith the returnedpublicUrlasurl, the returnedkey, and the same file metadata. Use the sameworkspaceIdon both tools. This registers the file; it does not transfer or verify the bytes. - Use the returned
mediaUrlincreate_postorupdate_post, or collect several URLs inmediaUrlsfor a carousel.
For an existing public file, call import_media_from_url with { "url": "https://example.com/launch.png" }. The backend downloads it and returns the stored mediaUrl in one call. The URL must serve the file directly without authentication; private-network URLs are rejected by the backend.
Storage supports PNG, JPEG, GIF, WebP, AVIF, HEIC, MP4, MOV, WebM and M4V, with a 25 MiB image ceiling and a 512 MiB video ceiling. Individual social platforms have stricter publishing requirements; use preflight_post before publishing. File bytes and base64 never travel through the MCP JSON request. If library registration fails after storage succeeds, the result includes librarySaved: false and a warning while preserving the usable mediaUrl.
Batching
The reply carries one entry per call — { id, tool, ok, result } or { id, tool, ok: false, error } — plus counts and, when a failure stopped the batch, the calls that were skipped.
Carousels
mediaUrls is the ordered attachment set. One URL is an ordinary media post; two or more publish as a multi-media post on every network but YouTube, with the first URL as the cover:
- Only Instagram and Threads mix video into a carousel; everywhere else a set of several must be images only, and a video goes out on its own.
create_postrefuses a set a target will not take before any credits are spent, naming the profile and the rule.preflight_postwith the samemediaUrlsreports the same thing plus amediaSetLimitsmap, so check first when one carousel goes to several networks.- A profile can carry its own
mediaUrlson itstargetAccountsentry (or invariantsas{ "twitter": { "mediaUrls": [...] } }), replacing the shared set - the way to give X and Bluesky a four-slide cut of a longer carousel. - Every slide is copied into PostMCP's own storage at write time, like a single attachment, so a host that expires the links later does not break the scheduled post. One slide failing at publish time fails that profile's post rather than publishing a shorter carousel;
publish_post_nowretries it. update_postwithmediaUrlsreplaces the whole set (add, remove or reorder slides); an empty array removes all media. Every post returned bylist_posts/get_postcarriesmediaUrlsalongsidemediaUrl.
Notes for clients
- Target profiles, not platforms.
targetAccountssends only to the profiles named;platformsfans out to every connected profile on each platform. - One post per profile.
create_poststores a separate post per targeted profile, so each can be edited, retried or cancelled on its own. Give per-profile copy throughtargetAccounts[].contentor thevariantsmap. - Always pass
timezonewhen a wall-clock time matters. The backend defaults to UTC, so a 9:00 IST post scheduled without a zone goes out at 14:30 IST. - Credits are charged per profile delivered to (X/Twitter costs 5, others 1), plus a one-off 50-credit surcharge when the copy contains a link.
preflight_postreports this before you commit. - Analytics are read on request, never in the background.
list_postsandget_connected_accountscarry what the last reading stored, free.get_post_analytics(one post, every network it went to) andget_profile_analytics(one connected profile: followers, posts, views) withrefresh: trueread the network now for 1 credit each; without it, the stored reading is free.engagementsis likes + comments + shares on every network, so it compares across platforms. Anullmeans the network does not report that metric (Bluesky has no views), anerrornaming reconnect means the account predates the insights permission and its owner must reconnect it, andunavailable: truemeans the network never answers for that kind of post (LinkedIn personal profiles).
💻 Client Integration Guides
1. Claude Desktop App (Stdio Mode)
Add the configuration below to your Claude Desktop config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
2. Cursor IDE
- Open Cursor Settings -> Features -> MCP.
- Click + Add New MCP Server.
- Fill in the details:
- Name:
postmcpai - Type:
command - Command:
npx -y @postmcpai/server
- Name:
- Under Environment Variables, add:
POSTMCPAI_API_KEY=pmcp_sec_your_secret_api_key_here
- Click Save.
3. Claude.ai & Remote Web Connectors (Streamable HTTP / SSE Mode)
Host this server on any cloud service (Render, Railway, Fly.io, Vercel) or tunnel your local machine using ngrok.
Launching in HTTP Mode:
Connecting to Claude.ai:
- Provide your public MCP URL with your API key attached:
https://your-hosted-domain.com/mcp?apikey=pmcp_sec_your_secret_api_key_here - Claude.ai will discover tool capabilities via
/mcpand authenticate seamlessly. - That URL is all you need: the key is bound to the workspace it was issued from, so tools act on that workspace without being told. To point the same key at a different workspace, append
&projectId=YOUR_WORKSPACE_ID(or send anx-project-idheader); individual tool calls can still override either withworkspaceId.
4. ChatGPT Custom GPTs (REST Actions)
- When configuring a Custom GPT Action, specify your server URL (e.g.
https://your-hosted-domain.com). - Import the OpenAPI schema directly from:
https://your-hosted-domain.com/openapi.json - Set Authentication to API Key (Bearer
Authorizationor customx-api-key). This is a GPT Actions integration, not a per-customer OAuth plugin. For the plugin, use OAUTH.md.
5. Programmatic Node.js Library Usage
You can also use @postmcpai/server as a library in your own Node.js backends:
🧪 Local Testing & Development
📄 License
Distributed under the MIT License. Copyright © 2026 PostMCP AI.
来源:README.md,提交 e6f2f48
工具
0版本历史
1- v1.0.1最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分