社交媒体管理API封装

FastMCP封装的Zernio社交媒体管理API,提供发布、调度、收件箱/评论管理、分析和账户/资料管理等功能,适用于Twitter/X、Bluesky、LinkedIn等多平台。

  • by CDiT-dev
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 CDiT-dev/mcp-zernio

使用说明

麦克普泽尼奥

内部/专有。 此存储库是私有的,未获得许可 再分配。请参阅下面的“许可证”。

FastMCP包装 泽尔尼奥 社交媒体管理 API展示约90个工具、3个资源和3个发布指导提示, 日程安排、收件箱/评论管理、分析和帐户/个人资料 管理推特/X、蓝天、领英、脸书、Instagram、, Threads、TikTok、YouTube、Pinterest和Reddit。

它是CDiT MCP车队的一部分(mcp-<service> 公约, src/zernio_mcp/ 布局、孵化器建造、, fastmcp>=3.4.2,<4.0.0).

它做什么

服务器是一个基于Zernio REST API的瘦类型代理。几乎所有的写作 需要一个 accountId (通常是a profileId),因此模型被引导到 在调用工具之前,先从资源中解决这些问题。

域 模块 工具(示例)
帐户和组 tools/accounts.py 列出/更新/删除帐户、关注者统计信息、健康状况、帐户组
简介(品牌分组) tools/profiles.py 配置文件CRUD
帖子 tools/posts.py 创建/更新/计划/删除/取消发布/重试/批量上传
排队和日程安排 tools/queue.py 插槽CRUD、计划、预览、下一个插槽、清除
收件箱(DM) tools/inbox.py 列表、获取对话、发送/编辑/删除消息
评论 tools/comments.py 列表、回复、私人回复、点赞、隐藏、删除
分析 tools/analytics.py 帖子、见解、Instagram、YouTube每日
广播 tools/broadcasts.py 积垢
联系人(CRM) tools/contacts.py 积垢
评论 tools/reviews.py 列表,回复
Webhooks tools/webhooks.py CRUD、测试、日志
推特参与度 tools/twitter.py 关注、转发、书签
平台助手 tools/platform_helpers.py Reddit/Pinterest/Instagram/领英/YouTube助手
研究 tools/research.py 提要/搜索/下载助手
媒体中心 tools/media.py 上传链接、上传、检查上传
验证 tools/validation.py 验证帖子、帖子长度、媒体
日志 tools/logs.py 发布日志、发布详细信息、连接日志
其他 tools/misc.py 使用情况统计、帐户组助手

资源 (zernio:// 方案, resources.py): zernio://accounts, zernio://profiles, zernio://platforms (静态分类学 每个平台的字符限制和怪癖)。

提示 (prompts.py): draft_cross_platform_campaign, triage_inbox, weekly_analytics_review.

工具注释 故意设置: readOnlyHint 为了安全阅读, destructiveHint 对于不可逆的删除/取消发布, idempotentHint 为了 可以安全地重试呼叫, openWorldHint 对于打到外部平台的电话。

收件箱web UI

除了MCP工具,HTTP服务器还在以下位置安装了一个基于浏览器的通用收件箱 /inbox (inbox.py, inbox_app_*.py, inbox_html.py)以及浏览器媒体 上传路线(upload.py).收件箱受密码保护 (INBOX_PASSPHRASE)通过重新发送可选择魔术链接登录 (RESEND_API_KEY + INBOX_EMAIL);按“重新发送”键时禁用魔术链接 是空的。

配置

所有配置都来自环境变量(config.py,媒染剂设置)。 在当地,把它们放进去 .env (忽略了)。

变量 必填 默认 备注
ZERNIO_API_KEY yes - Zernio API密钥(秘密)
ZERNIO_API_BASE 没有 https://zernio.com/api API基本URL
MCP_TRANSPORT 没有 stdio stdio 或 http
HOST 没有 127.0.0.1 绑定主机(HTTP)
PORT 没有 8717 绑定端口(HTTP)
MCP_API_KEY 仅限http -- 承载令牌; 必需的 当 MCP_TRANSPORT=http (服务器拒绝未经身份验证启动)
PUBLIC_URL 没有 https://mcp-zernio.cdit-dev.de OAuth元数据中使用的外部URL
INBOX_PASSPHRASE 没有 -- 密码 /inbox
RESEND_API_KEY 否 -- 重新发送收件箱魔术链接密钥
INBOX_EMAIL 没有 -- 魔术链接传递的收件人

在本地运行

uv sync
# stdio (desktop client / local)
ZERNIO_API_KEY=... uv run mcp-zernio
# HTTP (portal-style)
ZERNIO_API_KEY=... MCP_API_KEY=... MCP_TRANSPORT=http uv run mcp-zernio

健康检查: GET /health 和 GET /healthz 返回服务状态、版本, 以及正常运行时间。

认证

  • 应用程序内:HTTP传输使用静态承载令牌(MCP_API_KEY)已验证 具有定时安全比较功能(auth.py).如果令牌为,启动会很快失败 在HTTP模式下丢失。
  • 在边缘:在生产中,容器放在带有Keycloak的Caddy后面 OIDC(科莫多堆栈通过 KEYCLOAK_ISSUER / KEYCLOAK_AUDIENCE).看 OIDCProxy模式的舰队认证架构参考。

测试

uv run pytest -q

目前201次传球,3次跳投。套房使用 respx 嘲笑Zernio API (无实时通话)以及 pytest-asyncio 在自动模式下。

部署

集装箱化(Dockerfile,多级紫外线构建,无根 mcp 用户, 码头工人 HEALTHCHECK).通过Komodo部署(komodo.toml)基于git CDiT Hetzner车队上的Docker Compose堆栈,位于Caddy后面 https://mcp-zernio.cdit-dev.de.发布是通过标签驱动的 .github/workflows/release.yml (自动版本启用 main);推动 main 触发科莫多重新部署。秘密通过以下方式从科莫多金库注入 [[VAR]] 语法——永远不要提交真正的密钥。

布局

src/zernio_mcp/
  server.py            FastMCP instance, lifespan, health routes, main()
  config.py            pydantic-settings env config
  auth.py              BearerTokenVerifier
  client.py            shared httpx client + ZernioAPIError
  resources.py         zernio:// resources + platform taxonomy
  prompts.py           guided multi-step prompts
  models.py            typed output models
  inbox*.py, upload.py HTTP routes (inbox UI + media upload)
  tools/               ~90 @mcp.tool definitions grouped by domain
openspec/              spec-driven OpenSpec changes
tests/                 respx-mocked unit tests

许可证

专有/内部-不授予开源许可证。不要分发。