项目简介

本项目是一个基于 FastMCP 框架实现的 LinkedIn 自动化服务器。它利用浏览器自动化技术,提供了一系列工具,使用户可以通过程序化方式与 LinkedIn 平台进行交互,例如抓取用户信息、浏览动态、与帖子互动等。该服务器旨在为需要 LinkedIn 数据的应用程序提供一个安全、可扩展的后端服务。

主要功能点

  • 安全认证与会话管理:支持基于环境变量的安全认证,使用加密 Cookie 存储持久化会话,并具备速率限制和自动会话恢复功能。
  • 用户信息操作:提供查看和提取 LinkedIn 用户个人资料信息、根据关键词搜索用户资料、浏览 LinkedIn 动态信息流等功能。
  • 帖子互动:支持点赞帖子、评论帖子、读取帖子内容和互动指标等功能。
  • 工具化操作:通过 FastMCP 框架将 LinkedIn 操作封装为易于调用的工具,方便 LLM 等客户端集成和使用。

安装步骤

  1. 克隆仓库

    git clone https://github.com/alinaqi/mcp-linkedin-server
    cd mcp-linkedin-server
  2. 创建并激活虚拟环境

    python -m venv env
    source env/bin/activate   # Linux/macOS
    env\Scripts\activate  # Windows
  3. 安装依赖

    pip install -r requirements.txt
    playwright install chromium
  4. 配置环境变量 在项目根目录下创建 '.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'。

基本使用方法

  1. 启动 MCP 服务器 在虚拟环境激活的状态下,执行以下命令启动服务器:

    python linkedin_browser_mcp.py

    服务器默认使用 stdio 传输协议,并在终端输出日志信息。

  2. 使用 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 的服务条款和速率限制,避免过度频繁的请求,以确保您的账号安全和服务的正常运行。

信息

分类

通信与社交