PostSider

io.github.lumizone由 GitHub 帳號 lumizone 發布v1.0.0更新於 Oct 24, 2026

Social media calendar for AI agents: read channels, create drafts, request approval.

概覽

AI 產生的概覽

把 AI 助理接入 PostSider 社群媒體行事曆,可讀取頻道、建立草稿與排程,並送出人工審核。

可以做什麼
  • 列出頻道、群組、媒體庫、發文佇列、內容庫與貼文,並檢視貼文詳情、操作紀錄和缺少的欄位
  • 檢視組織與客戶總覽、貼文與頻道分析、通知以及發佈狀態
  • 建立、修改、複製和刪除貼文,並在草稿與排程之間切換
  • 從網址、base64 位元組或本機檔案路徑上傳媒體(本機伺服器支援檔案路徑)
  • 送出審核並查詢審核狀態,明確開啟後可代為做出審核決定
  • 執行政策預檢與 AI 文案檢查或改寫,並管理主題標籤群組、範本和 UTM 預設集
適用情境
適合團隊透過 PostSider 管理社群媒體發佈,希望助理準備草稿、填滿行事曆、核對頻道規則並回報成效,同時仍由人工審核最後上線的內容。
執行需求
透過 npm 套件以 stdio 在本機執行,需要 Node.js 與 npx。需要 Settings -> API 建立的組織 API 金鑰,放在 POSTSIDER_API_KEY 中。POSTSIDER_API_URL 為選用,用於自架執行個體,除本機回送位址外必須為 HTTPS。需要能連線至 PostSider API 的網路。
安裝前請注意
組織金鑰對整個工作區權限很大,不要提交到版本庫或寫進提示詞。寫入類工具可立即發佈、刪除貼文與媒體、中斷頻道連線、整批取代發文佇列,並暫停整個組織的發佈。審核決定須以 POSTSIDER_MCP_ALLOW_APPROVAL_DECISIONS 明確開啟,且金鑰需具備額外權限範圍。AI 檢查與改寫會消耗每月額度。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 PostSider,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

@postsider/mcp

MCP (Model Context Protocol) server that gives AI agents selected access to a PostSider instance through its public API. Works with Claude Code, Claude Desktop, Codex, Cursor, and any MCP-compatible client. Talks to cloud (api.postsider.com) or a self-hosted instance, authenticated with an organization API key.

PostSider is a shared operational calendar: the agent prepares and schedules work, and a human reviews what actually goes live.

Install

1. Create an API key

In PostSider, open Settings -> API and generate an organization API key.

2. Connect your client

Claude Code:

bash
claude mcp add postsider -e POSTSIDER_API_KEY=your_api_key -- npx -y @postsider/mcp

Codex CLI and its IDE extension share MCP configuration. Use one of these options for a server named postsider.

Hosted MCP with OAuth (no organization key pasted into a config file):

bash
codex mcp add postsider --url https://mcp.postsider.com/mcp

Complete the PostSider sign-in and permission flow in your client.

Alternatively, run the local MCP package over stdio with an organization API key stored in your environment or secret manager:

bash
codex mcp add postsider --env POSTSIDER_API_KEY=your_api_key -- npx -y @postsider/mcp

The local organization key has broad access to your workspace. Never commit it to a repository or include it in an agent prompt. For a guided walkthrough and a first safe draft, see https://postsider.com/developers/.

Claude Desktop or any generic MCP client:

json
{  "mcpServers": {    "postsider": {      "command": "npx",      "args": ["-y", "@postsider/mcp"],      "env": {        "POSTSIDER_API_KEY": "your_api_key"      }    }  }}

3. Verify with a read-only prompt

Ask your agent, and confirm it answers without changing anything:

text
List my connected PostSider channels. Do not create or modify anything.

Then:

text
Show my PostSider calendar for the next 14 days. Do not create or modify anything.

4. Only then prepare a draft

The MCP create-post tool defaults to draft, not schedule or now. posts:write is a powerful permission: it does not inherently require human approval for each publication. An agent must not schedule or publish without explicit authorization for the content, channel and timing. Use postsider_get_post to verify a write before reporting success.

text
Create one draft only for the selected channel. Show me the exact content first. Do not publish it.

From source

bash
pnpm --filter @postsider/mcp build

Then point your client at the built entrypoint:

json
{  "mcpServers": {    "postsider": {      "command": "node",      "args": ["/absolute/path/to/apps/mcp/dist/index.js"],      "env": {        "POSTSIDER_API_KEY": "your_api_key",        "POSTSIDER_API_URL": "https://api.postsider.com"      }    }  }}

Claude Code plugin

The package directory is also a Claude Code plugin: .claude-plugin/plugin.json declares the API key as a secret user setting, .mcp.json starts this server at the pinned released version, and skills/ contains focused workflows for calendar review, content publishing, approvals, analytics, and agency operations. The repository root is a plugin marketplace, so the plugin installs from the repository directly:

Skill budget is full (5/5). The remote server advertises the skills it bundles through OpenAI's skills extension, which supports at most 5. All five slots are taken, so adding a new skill requires retiring or merging an existing one (loadSkillCatalog fails closed above 5).

bash
claude plugin marketplace add lumizone/postsiderclaude plugin install postsider@postsider

Installation stores the key outside the plugin: pass it at install time with --config api_key=your_api_key, or set it afterwards with /plugin configure postsider@postsider inside Claude Code. The key is never written into the plugin directory.

What the agent can do

40 tools on the hosted server, 41 on the local stdio server, and 42 on the local stdio server when you opt in to approval decisions (see Configuration), all prefixed postsider_.

Read

ToolAction
postsider_list_channelsList connected social channels (ids, names, platforms). Call this first to get channel ids.
postsider_get_agency_overviewOrg-wide overview: clients, channels, queued, drafts, published, errors, pending approvals.
postsider_get_customer_reportThe same report scoped to one customer.
postsider_list_groupsList channel groups.
postsider_list_mediaBrowse the media library (paged, searchable) to reuse files already uploaded.
postsider_get_channel_rulesPlatform rules, max length and required settings schema for one channel. Call before posting to a new channel.
postsider_get_queue_planA channel's recurring posting slots and timezone.
postsider_get_smart_slotsBest upcoming times to post on a channel, avoiding booked slots.
postsider_get_content_librarySaved hashtag groups, caption templates and UTM presets.
postsider_find_slotNext free queue slot for a channel, in UTC.
postsider_list_postsList posts in a date range, filterable by state (e.g. ERROR) and channel, paged.
postsider_get_postFull post details, including the publish error if any.
postsider_get_post_activityWho did what to a post and when (verified actor, approvals, publish and retry events), newest first.
postsider_get_post_missing_fieldsPer-channel validation problems, so they can be fixed before publishing.
postsider_get_post_analyticsAnalytics for a single post.
postsider_get_channel_analyticsAccount-level analytics for a channel.
postsider_get_notificationsRecent notifications: publish failures, channels needing reconnection.
postsider_get_publishing_stateWhether publishing is active or paused for the organization.
postsider_get_approval_statusApproval status of a draft, including a reviewer note when rejected.

Write

ToolActionRisk
postsider_create_postCreate a post as a draft, a scheduled post, or an immediate publish across channels.Creates content and can publish
postsider_update_postEdit an existing post in place: text, media, date, settings, first comment. Not for published or pending-approval posts.Changes content, re-arms a scheduled post
postsider_update_post_statusMove a post between draft and schedule.Reversible
postsider_retry_failed_postsRe-queue only the failed destinations of a post group; unknown-outcome rows need explicit confirmation.Re-publishes failed rows
postsider_request_approvalSend a draft into the human approval queue.Reversible
postsider_upload_media_from_urlImport media into the library from a public HTTPS URL.Creates media
postsider_upload_media_base64Upload an image or MP4 you hold as bytes (base64: 25 MB on the local server, 2.5 MB over the remote connection). No public URL needed.Creates media
postsider_upload_media_from_fileLocal stdio server only. Upload an image or video (jpg, png, gif, webp, avif, bmp, tiff, mp4, mov, webm, mkv; up to 500 MB) from a file path on your own machine. Other file types are refused before being read.Creates media
postsider_decide_approvalLocal stdio server only, opt-in. Approve or reject the current stage of a pending approval as the API key. Registered only when POSTSIDER_MCP_ALLOW_APPROVAL_DECISIONS=true; never on the hosted server. Needs the approvals:decide scope on the key, which a key never has by default. A key cannot decide an approval it requested or whose post it created.Schedules the post on a final approval
postsider_connect_channelGet the sign-in link to connect or reconnect a social account (the user approves it on the platform). Needs channels:write.Starts a connection
postsider_set_channel_enabledSwitch a channel on or off. Needs channels:write and an admin role.Reversible
postsider_disconnect_channelDisconnect a channel; unpublished posts become drafts. Needs channels:write.Destructive
postsider_set_queue_planReplace a channel's posting slots ({time, days?}: minutes from midnight, optional weekdays 0-6). Read the plan first, it is replaced whole. Needs channels:write and an admin role.Replaces settings
postsider_set_channel_customerAssign a channel to a client by name. Needs channels:write and an admin role.Reversible
postsider_save_library_itemCreate or update a hashtag group, caption template or UTM preset.Creates content
postsider_delete_library_itemDelete a library item.Destructive
postsider_duplicate_postCopy a post as a new draft, optionally onto another channel.Creates a draft
postsider_check_policyDry run of the workspace policies for a post you are about to create: effect (ALLOW, REQUIRE_APPROVAL, BLOCK), matched rule names and whether this key may do it. Writes nothing. Needs posts:read.Read only
postsider_check_postAI check of draft text for up to 3 platforms (uses the monthly AI allowance).Uses AI quota
postsider_rewrite_postAI rewrites of a text in a chosen tone (uses the monthly AI allowance).Uses AI quota
postsider_delete_mediaDelete a media file from the library and storage.Destructive
postsider_delete_postPermanently delete a post and every other channel version of it (one group). Read the post first.Destructive
postsider_pause_publishingEmergency stop for the whole organization. Resuming is human-only.Destructive

Access scopes (remote server)

ScopeAllows
posts:readEvery read tool.
posts:writePosts, media, library, duplication and AI checks.
channels:writeConnecting, enabling, disabling, re-timing, re-assigning and disconnecting channels. Granted separately so an agent that may only schedule posts cannot reconfigure the workspace. Connections made before this scope existed need to be reconnected to get it.

Billing, team and roles, API keys, MFA, account deletion and resuming a paused workspace are deliberately not available to agents; they stay in the dashboard.

Every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint explicitly, so a client can tell a read from a kill switch.

For the exact API endpoint/scope matrix, a no-publication draft → readback → schedule → status test and the Claude/Codex/Cursor verification checklist, see API & MCP trust checklist.

Configuration

VariableRequiredDefaultDescription
POSTSIDER_API_KEYyes-Organization API key (Settings -> API)
POSTSIDER_API_URLnohttps://api.postsider.comInstance base URL
POSTSIDER_MCP_ALLOW_APPROVAL_DECISIONSnounset (off)Local stdio server only. Exactly true registers postsider_decide_approval. Anything else leaves it out.

POSTSIDER_API_URL must be HTTPS. Plain HTTP is accepted only on loopback (localhost, 127.0.0.1, [::1]) for local development.

For a self-hosted instance, point POSTSIDER_API_URL at where the public API is served. Behind the bundled nginx the API lives under /api, so use your domain plus /api, e.g. https://social.example.com/api. The server appends /public/v1 to whatever you set.

Safety

  • The API key is read from the environment and sent only to the configured PostSider API URL. It is never printed, logged, or included in an error.
  • Credentials embedded in POSTSIDER_API_URL are rejected.
  • Redirects are refused rather than followed: a redirect would move an authenticated request off the configured origin, so the client fails with an actionable message instead.
  • Requests time out after 30 seconds, and a failing response body is read up to 8 KB before being reported.
  • Tool arguments are validated locally, before any network call: ids must be non-empty, dates must be real ISO 8601 dates (2026-02-30 is refused, not sent to the API), post status draft or schedule, and media imports require a public HTTPS URL.
  • Deciding an approval is opt-in and local only. postsider_decide_approval is absent unless you start the local stdio server with POSTSIDER_MCP_ALLOW_APPROVAL_DECISIONS=true, the hosted server never offers it (OAuth tokens cannot hold approvals:decide), and the API key itself must carry the approvals:decide scope. The API refuses a key that requested the approval or created the post, so an agent cannot approve its own work. The tool reads the approval first and ties its Idempotency-Key and an expectStage value to the current stage and request time, so a retry of the same decision is harmless and a stale call cannot decide a later stage (it gets a 409).
  • A missing API key exits 1 with an explanatory message on stderr. stdout carries protocol frames only.

Development

bash
pnpm --filter @postsider/mcp typecheckpnpm --filter @postsider/mcp typecheck:testspnpm --filter @postsider/mcp testpnpm --filter @postsider/mcp buildpnpm --filter @postsider/mcp version:gatepnpm --filter @postsider/mcp validate:registrypnpm --filter @postsider/mcp smoke:tarballclaude plugin validate --strict apps/mcp

Design

This server is a thin wrapper over selected /public/v1 REST API endpoints, authenticated with the raw API key. It has no dependency on the backend and pulls in only @modelcontextprotocol/sdk and zod, so it stays lean and easy to maintain. All tool registrations live in a single factory, so the stdio transport today and any future transport share one agent-facing surface.

來源:apps/mcp/README.md,提交 50dd2cc

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v1.0.0最新Sep 25, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分