使用说明
麦克普泽尼奥
内部/专有。 此存储库是私有的,未获得许可 再分配。请参阅下面的“许可证”。
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
许可证
专有/内部-不授予开源许可证。不要分发。