mcp工具rossicorp linkedin
rossicorp-linkedin 是一个MCP stdio服务器,为Jekyll/MaMarkdown文章提供LinkedIn队列/发布工具。使用官方的Python MCP SDK(FastMCP)并重用现有的队列/发布逻辑。当前版本: 0.2.0 (semver;用这个版本标记Docker镜像)。
- 运输标准: stdio
- 工具:
- queue_article:将Markdown文件排队(需要 linkedin.auto_post: true 正面物质) - list_queue:列出队列条目 - publish_queue:发布已批准的帖子(默认情况下为模拟运行)
LinkedIn凭据(.env)
- 创建LinkedIn开发人员应用程序:https://www.linkedin.com/developers/
- 复制客户端ID/密码:
- LINKEDIN_CLIENT_ID (别名: LINKED_CLIENT_ID) - LINKEDIN_CLIENT_SECRET (别名: LINKED_CLIENT_SECRET)
- 获取具有作用域的令牌
w_member_social offline_access因此,您将收到一个刷新令牌:
- 身份验证URL示例: https://www.linkedin.com/oauth/v2/authorization?response_type=code&client_id=...&redirect_uri=http://localhost:3000/auth&scope=w_member_social%20offline_access - 通过令牌端点将代码交换为令牌;集 LINKEDIN_ACCESS_TOKEN= 如果返回, LINKEDIN_REFRESH_TOKEN=.
- 通过以下方式获取您的个人资料URN
GET https://api.linkedin.com/v2/me使用令牌;集LINKEDIN_PERSON_URN=urn:li:person:XXXX. - 保持
.env从git。加载器接受export KEY=value线。
安装(可选;首选Docker)
python -m venv .venv
source .venv/bin/activate
pip install -e .[test]运行(推荐使用Docker)
docker build -t mcp-tool-rossicorp-linkedin:0.2.0 -t mcp-tool-rossicorp-linkedin:latest .
docker run --rm -i \
-e LINKEDIN_ACCESS_TOKEN \
-e LINKEDIN_PERSON_URN \
-e LINKEDIN_CLIENT_ID \
-e LINKEDIN_CLIENT_SECRET \
-e LINKEDIN_REFRESH_TOKEN \
mcp-tool-rossicorp-linkedin:0.2.0运行(stdio服务器,本地)
python -m rossicorp_linkedin.server工具行为
queue_article输入:article_path(必填),site_url(默认值https://www.aimtheory.com),queue_dir(默认值_linkedin_queue/).返回队列文件路径、标题和url。list_queue输入:queue_dir(可选)。返回文件/状态/标题列表。publish_queue输入:queue_dir(可选),dry_run(默认为true)。需要LINKEDIN_ACCESS_TOKEN和LINKEDIN_PERSON_URN当dry_run=false.- URL解析:
canonical_url→permalink→/insights/YYYY/MM/slug/. - 队列文件位于
_linkedin_queue/*.txt.更改Status: PENDING→Status: APPROVED在出版之前。
Codex配置片段(~/.codex/config.toml)
[mcp_servers.rossicorp-linkedin]
command = "docker"
args = [
"run", "--rm", "-i",
"--add-host", "host.docker.internal:host-gateway",
"-e", "LINKEDIN_ACCESS_TOKEN",
"-e", "LINKEDIN_PERSON_URN",
"-e", "LINKEDIN_CLIENT_ID",
"-e", "LINKEDIN_CLIENT_SECRET",
"-e", "LINKEDIN_REFRESH_TOKEN",
"mcp-tool-rossicorp-linkedin:0.2.0"
]
startup_timeout_sec = 10
tool_timeout_sec = 60继续配置代码段(.continue/mcpServers.yaml)
mcpServers:
rossicorp-linkedin:
command: ["docker", "run", "--rm", "-i", "mcp-tool-rossicorp-linkedin:0.2.0"]
env:
LINKEDIN_ACCESS_TOKEN: "${LINKEDIN_ACCESS_TOKEN}"
LINKEDIN_PERSON_URN: "${LINKEDIN_PERSON_URN}"测试
pytest令牌刷新助手
使用 scripts/refresh_linkedin_token.py 交换身份验证码或刷新令牌。需要 LINKEDIN_CLIENT_ID 和 LINKEDIN_CLIENT_SECRET;可选 LINKEDIN_AUTH_CODE 或 LINKEDIN_REFRESH_TOKEN.
# Using a refresh token (preferred once you have one)
python scripts/refresh_linkedin_token.py --refresh-token "$LINKEDIN_REFRESH_TOKEN"
# Exchanging a one-time auth code
python scripts/refresh_linkedin_token.py --code "YOUR_AUTH_CODE" --redirect-uri http://localhost:3000/auth产出有利于出口;没有任何内容写入磁盘。
检查员烟雾(手动)
- 运行服务器:
python -m rossicorp_linkedin.server - 在MCP检查器中:通过stdio命令连接
python -m rossicorp_linkedin.server - 呼叫工具:
queue_article,list_queue,publish_queue (dry_run=true)
备注
- 出版无
dry_run需求LINKEDIN_ACCESS_TOKEN和LINKEDIN_PERSON_URN现在。 - stdout为MCP JSON-RPC保留;日志通过Python日志记录转到stderr。
- 看
SPEC.md用于能力、传输、安全和错误合同。
