Skip to main content
Glama
winLee1118

Social Publisher MCP

by winLee1118

Social Publisher MCP

Social Publisher MCP 是一个用于多平台内容自动发布的本地 MCP 服务。它把内容准备、素材校验、平台登录检查、发布确认和发布执行封装成标准工具,供 Codex、Claude、Cursor、自研 Agent 或任何支持 MCP/stdio 的智能体调用。

项目目标是让智能体可以在用户确认后,安全、统一地完成短视频和图文内容的多平台发布。

功能

  • 多平台发布内容准备与字段适配

  • 视频、图片等本地素材路径校验

  • 平台登录和登录状态检查

  • 发布前确认机制,避免误发

  • 本地发布记录和状态查询

  • 支持 Codex、其他通用智能体以及自己构建的智能体通过 MCP 调用

当前支持的平台包括:

  • 抖音

  • 小红书 / Rednote

  • 快手

  • Bilibili

  • 视频号

  • YouTube

不同平台的可用能力取决于本地配置和适配器接入情况。

Related MCP server: sau-mcp

适用场景

  • 让 Codex 帮你准备并发布视频或图文内容

  • 在自己的 Agent 工作流中统一接入多平台发布能力

  • 将内容生产脚本、运营后台或自动化流水线接入 MCP 发布服务

  • 为自建智能体提供标准化的社交媒体发布工具

安装

npm install
npm run build

如果需要使用 Python 相关的平台适配能力,建议使用 Python 3.10-3.12。Windows 用户可以通过 conda 创建独立环境:

conda create -n social-publisher python=3.12
conda activate social-publisher

配置

复制示例配置文件:

Copy-Item .env.example .env

然后根据自己的平台账号、浏览器路径和运行环境修改 .env

常见配置项包括:

SOCIAL_PUBLISHER_DOUYIN_ENGINE=sau
SOCIAL_PUBLISHER_DOUYIN_ACCOUNT=creator
SOCIAL_PUBLISHER_PYTHON_BIN=C:\Path\To\python.exe
SAU_LOCAL_CHROME_PATH=C:\Program Files\Google\Chrome\Application\chrome.exe
SAU_LOCAL_CHROME_HEADLESS=false

首次使用前,建议先完成对应平台登录,并使用备用账号验证发布流程。

在 Codex 中使用

构建完成后,将 MCP server 配置为启动本项目的 dist/index.js

{
  "mcpServers": {
    "social-publisher": {
      "command": "node",
      "args": [
        "D:\\path\\to\\social-publisher-mcp\\dist\\index.js"
      ]
    }
  }
}

把路径替换成你本机的项目路径即可。配置完成后,Codex 就可以调用本项目提供的 MCP 工具完成登录检查、内容准备和发布。

在自建智能体中使用

任何支持 MCP stdio 的智能体或应用都可以启动这个服务:

node dist/index.js

启动后,通过 MCP 协议调用工具即可。典型流程是:

  1. 调用 list_platforms 查看平台能力。

  2. 调用 login_platformcheck_platform_auth 完成登录检查。

  3. 调用 prepare_post 准备发布内容。

  4. 向用户展示平台、账号、标题、素材、标签等发布摘要。

  5. 用户确认后调用 publish_post 执行发布。

  6. 调用 check_publish_status 查询发布记录。

MCP 工具

  • list_platforms:查看支持的平台和适配器状态

  • login_platform:启动平台登录流程

  • check_platform_auth:检查平台登录状态

  • prepare_post:校验内容并生成平台发布参数

  • publish_post:在用户确认后执行发布

  • check_publish_status:查询本地发布记录和状态

本地开发

npm install
npm run check
npm run build
npm run dev

安全说明

  • 发布前应由用户明确确认平台、账号、标题、素材、标签和发布时间。

  • 不要把账号 Cookie、Token、密钥或本地登录数据提交到 Git。

  • 首次接入新平台时,建议先使用备用账号验证完整流程。

  • 使用自动化发布能力时,请遵守各平台服务条款、内容规范和账号安全要求。

License

MIT

Available Tools

6 tools
check_platform_authA

Check saved login/cookie state for supported live CLI adapters. Douyin uses social-auto-upload's sau CLI.

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNo
platformYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral disclosure. It indicates a read-only operation ('Check') and references 'saved login/cookie state', which implies local state inspection. However, it does not explain side effects, error handling, or what happens when no login exists, leaving some ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loaded with the primary action, and free of fluff. Every word contributes to understanding the tool's purpose and one platform-specific nuance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 2-parameter read-only tool, the description covers the essential purpose and hints at platform-specific behavior. However, it does not describe the return value, how to interpret auth state, or when exactly to call it relative to other operations. The lack of annotations and output schema leaves moderate gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for missing parameter documentation. It does not explain the 'account' parameter and only indirectly references 'platform' via 'supported live CLI adapters' and the Douyin example. The description adds minimal meaning beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Check' with a clear resource ('saved login/cookie state') and scope ('supported live CLI adapters'). It clearly distinguishes itself from siblings like login_platform by focusing on checking auth state rather than creating it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context that this tool is for verifying saved login state before potentially publishing, which implies usage as a precondition check. It does not explicitly mention alternatives or exclusions, but the purpose is evident from the verb and resource. The Douyin-specific note adds practical context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_publish_statusA

Read a saved publish record by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the full burden of behavioral disclosure. The verb 'Read' indicates a non-destructive operation, but it does not disclose return format, error behavior on missing ids, or any side effects. The single sentence provides minimal behavioral context beyond the inherent meaning of 'read'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence: 'Read a saved publish record by id.' It contains no filler or redundancy. Every word contributes to the meaning, making it appropriately concise for a trivial read operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with one parameter and no output schema. The description tells what it does, but does not explicitly state what it returns (e.g., the full record or just the status). Given no output schema, a brief mention of the return value would improve completeness. It is adequate but has clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero description coverage for the only parameter 'id'. The description adds that the record is read 'by id', clarifying that 'id' is the identifier of the publish record. This is minimal but sufficient given the parameter is self-descriptive; it could have specified the id format or origin.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Read' with a clear object 'saved publish record' and method 'by id'. This clearly distinguishes it from sibling tools like publish_post or check_platform_auth, which have different purposes (writing or checking auth).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies its usage: use it to read a saved publish record when you have its id. However, it provides no explicit guidance on when to use this tool versus alternatives like list_platforms or publish_post, and no mention of prerequisites or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_platformsA

List supported social platforms and adapter status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of disclosing behavioral traits. The verb 'List' suggests a read-only operation, but it does not explicitly state that it is side-effect-free or whether any authentication is required. It also doesn't clarify what 'adapter status' entails, leaving some ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler words. Every word contributes to understanding the tool's purpose, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (no params, no output schema), the description adequately conveys what the tool returns: a list of supported platforms and their adapter status. However, it could be more complete by elaborating on the meaning of 'adapter status' or the return format, which would further aid the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so schema coverage is trivially 100% and the baseline is 4. The description adds useful context by indicating that the output includes 'supported social platforms and adapter status,' which helps the agent understand what to expect from the call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'List' and the resource 'supported social platforms and adapter status,' making its purpose unambiguous. It distinguishes itself from sibling tools like login_platform and publish_post, which perform actions on platforms rather than listing them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies its use as a discovery tool for checking available platforms and their adapter status, but it lacks explicit guidance on when to use it versus alternatives. There is no mention of 'use this before login_platform' or any exclusion criteria, so the usage context is only implicitly derived from the sibling names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

login_platformA

Start an interactive login flow for supported live CLI adapters. Douyin uses social-auto-upload's sau CLI.

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNo
platformYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the transparency burden. It discloses that the flow is 'interactive' and that it may delegate to external CLIs (e.g., sau for Douyin), but it does not mention side effects like storing credentials, whether it blocks, or what happens on success/failure. This is moderate disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the main purpose, and the second sentence provides a specific, useful implementation detail. No wasted words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema and no annotations, and the description does not explain the flow's expected outcomes, prerequisites, or how it fits into a broader workflow (e.g., after login, one might verify with check_platform_auth). The description is too sparse for a tool with an interactive procedure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does not explain the 'account' parameter at all and only hints that 'platform' selects among supported adapters (via the 'supported live CLI adapters' phrase and the Douyin example). This falls short of meaningful parameter guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the exact action ('Start an interactive login flow') and clearly defines the scope ('for supported live CLI adapters'). It also differentiates from sibling tools like check_platform_auth by focusing on initiating login, not checking existing auth. The mention of Douyin's specific CLI adapter adds concrete context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is used when an interactive login is needed, but it does not explicitly say when to prefer this over check_platform_auth or list_platforms. No alternatives or exclusions are mentioned, so the guidance is only implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_postA

Validate a post and build platform-specific payloads without publishing.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
tagsNo
mediaNo
titleYes
platformsYes
scheduledAtNo

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full responsibility for behavioral disclosure. It mentions the tool does not publish, which implies non-destructive operation, but fails to address authentication requirements, side effects, error handling, or what happens to the built payloads. This leaves significant ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no filler or redundant information. It front-loads the action and stays concise, making it easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has moderate complexity with six parameters, including a nested media object, and lacks both an output schema and annotations. The description is too sparse to cover return values, error scenarios, or the relationship to publish_post beyond a simple qualifier. This is insufficient for confident invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning the description must compensate by explaining parameters. It does not mention title, body, platforms, tags, media, or scheduledAt, leaving the agent to rely entirely on the schema. The description adds no value beyond the schema for parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with specific verbs ('validate', 'build') and a clear resource ('post'). The phrase 'without publishing' explicitly distinguishes it from the sibling publish_post tool, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for pre-publication preparation by stating 'without publishing', giving clear context. However, it does not explicitly state when to use it instead of publish_post or mention prerequisites like authentication, so it lacks full guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publish_postB

Publish a post or create a dry-run publish record. Live adapters require liveConfirmation.confirmed=true plus a human-reviewed summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
tagsNo
mediaNo
titleYes
platformsYes
scheduledAtNo
liveConfirmationNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden. It discloses a key behavioral requirement for live publishing (liveConfirmation + summary) and mentions the dry-run alternative. However, it does not disclose side effects, permissions, reversibility, or return format. It adds some transparency but is incomplete for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: two sentences, no filler. It efficiently states the main action and the critical requirement for live publishing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 parameters, nested objects, no output schema, no annotations), the description is too brief. It explains dry-run vs live but omits specifics like what a publish record is, platform auth prerequisites, scheduling behavior, and error conditions. The description does not adequately prepare an agent for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description only explains liveConfirmation (its confirmed and summary fields). It does not clarify title, body, platforms, tags, media, or scheduledAt. With seven parameters and no parameter documentation in the description, it fails to compensate for the schema gap beyond one parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Publish a post or create a dry-run publish record.' It uses a specific verb and resource, and the dry-run nuance adds clarity. It does not explicitly distinguish from sibling tools like prepare_post, but the core action is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by noting that live adapters require liveConfirmation.confirmed=true and a summary, suggesting that either live publishing or dry-run is possible. However, it does not explicitly state when to use this tool versus prepare_post or check_publish_status, nor does it mention exclusions. The guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 6 tool updatesv0.1.0
    • First observedcheck_platform_auth
    • First observedcheck_publish_status
    • First observedlist_platforms
    • First observedlogin_platform
    • First observedprepare_post
    • First observedpublish_post

TDQS

A3.8/5.0
Disambiguation5/5

Each tool targets a distinct aspect of the social publishing workflow: platform enumeration, auth management, post preparation, publishing, and status retrieval. Even the two auth-related tools are clearly separated by their actions (starting a login vs. checking existing auth state).

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (list_platforms, login_platform, check_platform_auth, prepare_post, publish_post). The slight variation in check_publish_status still adheres to the same style and is easily readable.

Tool Count5/5

With six tools, the server is well-scoped for its purpose, covering the essential operations of platform discovery, authentication, post preparation, publishing, and status checking without unnecessary redundancy or bloat.

Completeness4/5

The core lifecycle is covered: login/check auth, prepare, publish, and check status. Minor gaps exist, such as no logout or auth refresh operation and no list of previously published posts, but these are not critical to the main publishing workflow and can be worked around.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    C
    maintenance
    MCP server wrapping social-auto-upload CLI for AI clients to verify cookies and publish videos/notes to Chinese social platforms (Douyin, Kuaishou, Xiaohongshu, Bilibili).
    10
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    A local MCP adapter collection for social media channels, currently supporting Douyin with tools for channel startup, login assistance, messaging, and notifications.
    -
  • F
    license
    A
    quality
    C
    maintenance
    A local MCP server that enables Douyin keyword search and comment campaigns through the user's own logged-in Chrome, with human approval, cross-campaign deduplication, and resume after manual verification.
    11
    -

Latest Blog Posts

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/winLee1118/social-publisher-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server