ClaudeCodeMod

All shelves / MCP servers

PostSider

io.github.lumizone/postsider · 11 stars · TypeScript · AGPL-3.0

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

Install

The repo has no one-line install. Follow its README.

Published as

  • npm@postsider/mcpstdio

From the server's entry in the official MCP Registry.

Open the repo

Configuration

NameSet asWhat it is
POSTSIDER_API_KEYRequired · SecretEnv varOrganization API key from PostSider under Settings -> API.
POSTSIDER_API_URLOptionalEnv varInstance base URL. Defaults to https://api.postsider.com and must be HTTPS for non-local hosts.

Files

apps/mcp/README.md

@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:

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

Claude Desktop or any generic MCP client:

{
  "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:

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

Then:

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

4. Only then prepare a draft

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

From source

pnpm --filter @postsider/mcp build

Then point your client at the built entrypoint:

{
  "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:

claude plugin marketplace add lumizone/postsider
claude 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

19 tools, all prefixed postsider_.

Read

Tool Action
postsider_list_channels List connected social channels (ids, names, platforms). Call this first to get channel ids.
postsider_get_agency_overview Org-wide overview: clients, channels, queued, drafts, published, errors, pending approvals.
postsider_get_customer_report The same report scoped to one customer.
postsider_list_groups List channel groups.
postsider_find_slot Next free queue slot for a channel, in UTC.
postsider_list_posts List posts in a date range.
postsider_get_post Full post details, including the publish error if any.
postsider_get_post_missing_fields Per-channel validation problems, so they can be fixed before publishing.
postsider_get_post_analytics Analytics for a single post.
postsider_get_channel_analytics Account-level analytics for a channel.
postsider_get_notifications Recent notifications: publish failures, channels needing reconnection.
postsider_get_publishing_state Whether publishing is active or paused for the organization.
postsider_get_approval_status Approval status of a draft, including a reviewer note when rejected.

Write

Tool Action Risk
postsider_create_post Create a post as a draft, a scheduled post, or an immediate publish across channels. Creates content and can publish
postsider_update_post_status Move a post between draft and schedule. Reversible
postsider_request_approval Send a draft into the human approval queue. Reversible
postsider_upload_media_from_url Import media into the library from a public HTTPS URL. Creates media
postsider_delete_post Permanently delete a post and every other channel version of it (one group). Read the post first. Destructive
postsider_pause_publishing Emergency stop for the whole organization. Resuming is human-only. Destructive

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

Configuration

Variable Required Default Description
POSTSIDER_API_KEY yes - Organization API key (Settings -> API)
POSTSIDER_API_URL no https://api.postsider.com Instance 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

pnpm --filter @postsider/mcp typecheck
pnpm --filter @postsider/mcp typecheck:tests
pnpm --filter @postsider/mcp test
pnpm --filter @postsider/mcp build
pnpm --filter @postsider/mcp version:gate
pnpm --filter @postsider/mcp validate:registry
pnpm --filter @postsider/mcp smoke:tarball
claude 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.

Facts

Kind
MCP server
Repo
lumizone/postsider
Group
Uncategorized
Stars
11
License
AGPL-3.0
Language
TypeScript
Last push
2026-10-05
MCP Registry
io.github.lumizone/postsider
Homepage
postsider.com
Topics
docker, mcp, scheduling, self-hosted, social-media, social-media-management, social-media-scheduler, content-calendar, open-source, prisma, scheduler, social-media-api, content-calendar-toolkit

More on this shelf

  1. 1REAio.github.morluto/reaReverse engineer anything from your terminal or agent with one CLI and MCP server.125.3k
  2. 2com.browser-use/browser-usecom.browser-use/browser-useControl a real Chrome browser to complete any task: fill forms, extract data, book flights.117.7k
  3. 3World Monitorapp.worldmonitor/mcpLive markets, conflicts, country risk, chokepoints, energy, and China decision signals. 93 tools.88.3k
  4. 4Scrapling MCP Serverd4vinci/scrapling🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scraplingdev86.9k
  5. 5Everythingmodelcontextprotocol/serversThis MCP server attempts to exercise all the features of the MCP protocol. It is not intended to be a useful server, but rather a test server for builders of MCP clients. It implements prompts, tools, resources, sampling, and more to showcase MCP capabilities.85.8k
  6. 6Fetchmodelcontextprotocol/serversA Model Context Protocol server that provides web content fetching capabilities. This server enables LLMs to retrieve and process content from web pages, converting HTML to markdown for easier consumption.85.8k