项目简介
本项目是一个基于 FastMCP 框架实现的 LinkedIn 自动化服务器。它利用浏览器自动化技术,提供了一系列工具,使用户可以通过程序化方式与 LinkedIn 平台进行交互,例如抓取用户信息、浏览动态、与帖子互动等。该服务器旨在为需要 LinkedIn 数据的应用程序提供一个安全、可扩展的后端服务。
主要功能点
- 安全认证与会话管理:支持基于环境变量的安全认证,使用加密 Cookie 存储持久化会话,并具备速率限制和自动会话恢复功能。
- 用户信息操作:提供查看和提取 LinkedIn 用户个人资料信息、根据关键词搜索用户资料、浏览 LinkedIn 动态信息流等功能。
- 帖子互动:支持点赞帖子、评论帖子、读取帖子内容和互动指标等功能。
- 工具化操作:通过 FastMCP 框架将 LinkedIn 操作封装为易于调用的工具,方便 LLM 等客户端集成和使用。
安装步骤
-
克隆仓库
git clone https://github.com/alinaqi/mcp-linkedin-server cd mcp-linkedin-server -
创建并激活虚拟环境
python -m venv env source env/bin/activate # Linux/macOS env\Scripts\activate # Windows -
安装依赖
pip install -r requirements.txt playwright install chromium -
配置环境变量 在项目根目录下创建 '.env' 文件,并填入以下信息(根据需要配置):
LINKEDIN_USERNAME=你的LinkedIn邮箱 # 可选:用于预填充登录表单 LINKEDIN_PASSWORD=你的LinkedIn密码 # 可选:用于预填充登录表单 COOKIE_ENCRYPTION_KEY=你的加密密钥 # 可选:不提供则自动生成
服务器配置
MCP 客户端需要配置以下信息以连接到此 MCP 服务器:
{ "serverName": "linkedin", // 服务器名称,与代码中 FastMCP 初始化时的名称一致 "command": "python", // 启动服务器的命令,这里使用 python "args": [ // 启动命令的参数 "linkedin_browser_mcp.py" // 服务器主程序文件名 ] }
参数注释:
- 'serverName': 服务器的唯一标识符,必须与 'linkedin_browser_mcp.py' 文件中 'FastMCP("linkedin", ...)' 定义的名称 '"linkedin"' 一致。
- 'command': 运行服务器端代码的命令,通常是 Python 解释器 'python'。
- 'args': 传递给 'command' 的参数列表,用于指定要运行的服务器脚本文件名 'linkedin_browser_mcp.py'。
基本使用方法
-
启动 MCP 服务器 在虚拟环境激活的状态下,执行以下命令启动服务器:
python linkedin_browser_mcp.py服务器默认使用 stdio 传输协议,并在终端输出日志信息。
-
使用 MCP 客户端调用工具 您可以使用任何兼容 FastMCP 协议的客户端(例如 Python 客户端 'fastmcp' 库)来连接到服务器并调用其提供的工具。以下是一个 Python 客户端的简单示例(需要安装 'fastmcp' 库):
from fastmcp import FastMCP import asyncio async def main(): # 初始化客户端,连接到本地运行的 MCP 服务器 client = FastMCP.connect("stdio:") # 使用 stdio 连接 # 调用 login_linkedin_secure 工具进行安全登录 login_result = await client.login_linkedin_secure() print("登录结果:", login_result) if login_result['status'] == 'success': # 调用 search_linkedin_profiles 工具搜索用户 search_result = await client.search_linkedin_profiles(query="软件工程师", count=3) print("搜索结果:", search_result) if search_result['status'] == 'success': profiles = search_result['profiles'] if profiles: first_profile_url = profiles[0]['profileUrl'] # 调用 view_linkedin_profile 工具查看第一个用户资料 profile_data = await client.view_linkedin_profile(profile_url=first_profile_url) print("用户资料:", profile_data) await client.close() if __name__ == "__main__": asyncio.run(main())请参考 'README.md' 中的 Python 客户端示例和 'linkedin_browser_mcp.py' 文件中定义的工具函数,了解更多工具的使用方法和参数。
注意: 使用本项目时,请务必遵守 LinkedIn 的服务条款和速率限制,避免过度频繁的请求,以确保您的账号安全和服务的正常运行。
信息
分类
通信与社交