使用说明
LinkedIn MCP 服务器
一个用于LinkedIn自动化的FastMCP服务器,提供全面的LinkedIn API集成,支持创建、更新和删除带有媒体(图片、视频、文档)的帖子。
🚀 特点
核心工具
- 创建帖子创建包含文本、图片、视频或文档的LinkedIn帖子
- 更新帖子更新现有的LinkedIn帖子文本
- 删除帖子删除LinkedIn帖子(支持UGC和分享两种格式)
媒体支持
- 文本简单的文本帖子
- 图像图片上传(JPG、PNG、GIF)
- 视频视频上传(MP4、MOV、AVI格式)支持延长超时时间
- 文件文件上传(PDF、DOC、DOCX、PPT、PPTX格式)
高级功能
- 智能超时处理(大文件最多可支持10分钟)
- 基于文件大小的动态视频处理等待时间
- 为POST操作进行正确的URN编码
- 全面的错误处理和进度反馈
- 支持UGC帖子和传统Share帖子
📋 前提条件
- Python 3.10 或更高版本
uv包管理器- 拥有API访问权限的LinkedIn开发者账户
- 具有所需权限的有效LinkedIn访问令牌
LinkedIn API所需权限
w_member_social对成员社交帖子的写入访问权限- (可选)
r_liteprofile读取基本资料信息
🛠 安装
-
克隆或下载该项目
mkdir linkedin-mcp cd linkedin-mcp -
安装依赖项
uv init uv add fastmcp>=2.12.4 requests -
设置LinkedIn API凭据
- 在LinkedIn上创建一个开发者应用 LinkedIn开发者门户
- 生成一个访问令牌,使用
w_member_social许可;权限 - 获取您的成员URN(个人LinkedIn个人资料URN)
⚙️ 配置
更新以下变量中的 main.py 使用您的LinkedIn凭据:
# LinkedIn API Credentials (REPLACE WITH YOUR VALUES)
LINKEDIN_ACCESS_TOKEN = "YOUR_ACCESS_TOKEN_HERE"
LINKEDIN_MEMBER_URN = "urn:li:person:YOUR_MEMBER_ID"
LINKEDIN_API_BASE = "https://api.linkedin.com/v2"
如何获取你的认证资格
-
访问令牌:
- 前往LinkedIn开发者门户
- 创建一个应用程序并提出请求
w_member_social许可;权限 - 在您的应用设置中生成访问令牌
-
成员统一资源名称(URN):
- 使用LinkedIn API
/me获取您个人资料的终端点 - 从响应中提取URN
- 格式:
urn:li:person:XXXXXXXXXX
- 使用LinkedIn API
🚀 使用方法
启动服务器
# Start in development mode
uv run fastmcp dev main.py
服务器将在 http://localhost:6274 配备MCP Inspector用于测试。
工具示例
1. 创建文本帖子
create_post(
content="Hello LinkedIn! This is my first MCP post.",
media_type="TEXT"
)
2. 创建图片帖子
create_post(
content="Check out this amazing image!",
media_type="IMAGE",
file_path="C:/path/to/your/image.jpg"
)
3. 创建视频帖子
create_post(
content="Watch this cool video!",
media_type="VIDEO",
file_path="C:/path/to/your/video.mp4"
)
4. 创建文档后操作
create_post(
content="Read my latest report",
media_type="DOCUMENT",
file_path="C:/path/to/your/document.pdf"
)
5. 更新帖子
update_post(
post_id="urn:li:ugcPost:1234567890",
new_text="Updated post content"
)
6. 删除帖子
delete_post(post_id="urn:li:ugcPost:1234567890")
# or for legacy shares
delete_post(post_id="urn:li:share:1234567890")
⏱️ 超时配置
服务器采用智能超时处理机制:
- 文本帖子30秒
- IMAGE帖子2分钟
- 视频帖子10分钟
- 文档帖子10分钟
文件上传超时时间根据文件大小动态调整:
- 文件大小 < 10MB:2分钟
- 文件大小10-50MB:5分钟
- 文件大小 > 50MB:10分钟
🔧 技术细节
媒体上传流程
- 注册在LinkedIn上注册上传以获取上传URL和资产URN
- 二进制上传将实际文件数据上传到LinkedIn的存储空间
- 处理中,等待等待LinkedIn处理媒体文件(尤其是视频)
- 帖子创建使用上传的媒体创建LinkedIn帖子
错误处理
服务器提供了全面的错误处理机制:
- 文件存在性验证
- 媒体类型验证
- 上传失败恢复
- 超时管理
- LinkedIn API解析错误
URN处理
服务器能够正确处理不同的LinkedIn URN格式:
- 用户生成内容(UGC)帖子:
urn:li:ugcPost:{id} - 遗产股份
urn:li:share:{id} - API调用的正确URL编码
📁 项目结构
linkedin-mcp/
├── main.py # Main MCP server code
├── pyproject.toml # Python project configuration
├── README.md # This file
└── .env # Environment variables (optional)
🔍 API 参考
创建帖子(content,媒体类型="文本",文件路径=None)
创建一条带有可选媒体的新LinkedIn帖子。
参数:
content(str): 帖子的文本内容media_type(str): 媒体类型 - “文本”、“图片”、“视频”或“文档”file_path(字符串,可选):媒体文件的绝对路径
返回值:
- 包含成功状态、发布URN(通用资源名称)和任何错误详情的字典
更新帖子(post_id, new_text)
更新现有UGC帖子的文本内容。
参数:
post_id(str): 帖子URN(例如,“urn:li:ugcPost:1234567890”)new_text(字符串): 新文本内容
返回值:
- 包含成功状态和操作详情的字典
删除帖子(帖子ID)
删除LinkedIn帖子(支持UGC和分享两种格式)。
参数:
post_id(str): 帖子统一资源名称 (URN)(例如,“urn:li:ugcPost:1234567890” 或 “urn:li:share:1234567890”)
返回值:
- 包含成功状态和操作详情的字典
🚨 重要提示
超时行为
- 如果你看到超时错误,但帖子已经出现在LinkedIn上,那么上传是成功的
- LinkedIn在后台处理上传内容,因此在最终确认之前可能会出现超时情况
- 检查你的LinkedIn个人资料以验证帖子创建情况
文件大小限制
- LinkedIn对不同类型的媒体文件设有限制
- 大视频(>100MB)可能会达到最长10分钟的超时时间
- 考虑在上传前压缩大文件
API速率限制
- LinkedIn对API调用有限速限制
- 分散你的请求,以避免达到限制
- 服务器在视频处理时包含了适当的延迟
🐞 故障排除
常见问题
-
“ACCESS_DENIED”错误
- 验证您的访问令牌是否具有所需的权限
- 检查您的LinkedIn应用程序是否已
w_member_social许可;权限
-
“文件未找到”错误
- 使用绝对文件路径
- 确保文件存在且可访问
-
上传超时
- 检查您的网络连接
- 先尝试使用较小的文件
- 记住:超时并不总是意味着失败
-
无效的URN格式
- 帖子ID必须以……开头
urn:li:ugcPost:或者urn:li:share: - 从帖子创建响应中获取正确的URNs
- 帖子ID必须以……开头
调试模式
以调试日志模式启动服务器:
uv run fastmcp dev main.py --debug
📄 许可证
本项目仅供教育和开发目的使用,不做任何保证。请确保遵守LinkedIn的API服务条款。
🤝 贡献(或“参与贡献”)
欢迎随时提交问题、功能请求或拉取请求,以改进这个LinkedIn MCP服务器。
📞 支持
对于问题或疑虑:
- 查看上面的故障排除部分
- 查看LinkedIn的API文档
- 使用MCP检查器进行测试
http://localhost:6274
注替换所有占位符凭证 main.py 在运行服务器之前,请使用您实际的LinkedIn API凭据。