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 生成的概览

PostSider MCP 让 AI 助手接入 PostSider 社交媒体日历:读取渠道、数据与帖子,创建草稿并提交人工审批。

可以做什么
  • 列出渠道、渠道组、媒体库、发布队列计划、推荐时段与内容库,并读取渠道发布规则
  • 按日期范围查询帖子、帖子详情、缺失字段、发布状态、通知与审批状态
  • 读取单帖与渠道级数据分析,以及组织或单个客户的总览报告
  • 创建、修改、复制和删除帖子,并在草稿与排期之间切换状态
  • 从公开 URL、base64 字节或本地文件路径上传媒体,并管理内容库条目
  • 提交审批、连接或断开渠道、修改发布队列计划,以及暂停发布
适用场景
适合让助手协助运营 PostSider 上的社交媒体日历:查看排期内容、撰写并安排帖子、查看数据,或准备好内容交由人工审批后再发布。
运行要求
通过 npx 以 stdio 在本地运行 npm 包 @postsider/mcp,需要 Node.js。需要组织 API 密钥,放在环境变量 POSTSIDER_API_KEY 中,可在 PostSider 的 Settings -> API 生成。自建实例可设置 POSTSIDER_API_URL,必须为 HTTPS(仅回环地址可用明文 HTTP)。需要能访问 PostSider API 的网络。
安装前请注意
API 密钥可访问组织的日历数据,并会发送到所配置的 API 地址。写入类工具会创建、修改和发布内容,其中多项具有破坏性:删除帖子会同时删除该帖在所有渠道的版本,删除媒体和内容库条目不可恢复,断开渠道会使未发布帖子变为草稿,暂停发布是组织级停止且只能由人工恢复。AI 检查与改写工具会消耗每月 AI 额度。部分渠道工具需要 channels:write 权限和管理员角色。

安装

在 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

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

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

37 tools (38 on the local stdio server), 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_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_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_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_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.

Configuration

VariableRequiredDefaultDescription
POSTSIDER_API_KEYyes-Organization API key (Settings -> API)
POSTSIDER_API_URLnohttps://api.postsider.comInstance base URL

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.
  • 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,提交 feb9102

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

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

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分