Skip to main content
Glama
joaovjo

linkedin-mcp-server-ts

by joaovjo

LinkedIn MCP Server (TypeScript / Bun)

면책 조항: 이 프로젝트는 독립적인 커뮤니티 주도 오픈소스 프로젝트입니다. LinkedIn Corporation 또는 Microsoft Corporation과 제휴, 후원, 승인, 보증 관계가 아닙니다. "LinkedIn"은 LinkedIn Corporation의 등록 상표이며 순수하게 설명 목적으로만 사용되었습니다.

A blazing-fast, lightweight Model Context Protocol (MCP) server for LinkedIn automation and scraping, rewritten in TypeScript and powered by the Bun runtime.

It provides AI assistants (such as Claude Desktop, Cursor, OpenCode, VS Code, and Windsurf/Antigravity) with 19 production-grade MCP tools to navigate profiles, search jobs and companies, interact with messages, and extract feeds using your own authenticated browser session.


⚡ 왜 TypeScript + Bun인가?

linkedin-mcp-server-ts is a native TypeScript/Bun port of stickerdaniel/linkedin-mcp-server, built to deliver maximum efficiency and minimal resource footprint:

  • 🚀 즉시 시작 & 거의 제로 오버헤드: Bun의 네이티브 JIT와 빠른 패키지 실행으로 콜드 스타트 지연을 제거합니다.

  • 🌐 네이티브 WebView & 직접 CDP 엔진: 무거운 외부 브라우저 데몬 레이어 없이 Chrome DevTools Protocol(CDP)과 Bun.WebView를 통해 Chromium을 자동화합니다.

  • 🔄 100% 계약 및 스키마 일치: Python MCP 서버 도구, 스키마, 반환 형식의 완전한 1:1 드롭인 대체재입니다.

  • 🔑 원활한 세션 공유: 표준 ~/.linkedin-mcp/profile 세션 저장소 및 쿠키 형식과 100% 호환됩니다.

아키텍처 비교

Feature

Python Version (mcp-server-linkedin)

TypeScript / Bun Version (linkedin-mcp-server-ts)

런타임

Python 3.10+ (uv / uvx)

Bun 1.2+ (bun / bunx)

언어

Python (fastmcp)

TypeScript 6 (@modelcontextprotocol/server v2)

브라우저 엔진

Patchright Chromium fork

네이티브 Bun.WebView + 직접 Chrome DevTools Protocol (CDP)

메모리 / 점유 공간

보통 (~150MB+ 런타임)

초경량 (~30-60MB 기본)

전송 방식

stdio, streamable-http

stdio, streamable-http (네이티브 Bun.serve 기반)

세션 디렉터리

~/.linkedin-mcp/profile

~/.linkedin-mcp/profile (공유 및 상호 운용 가능)

검증

Pydantic

Zod 스키마

도구 수

19개 도구

19개 도구


🛠️ MCP 도구 개요 (19개 도구)

도구

카테고리

설명

접근 유형

get_person_profile

인물

경험, 교육, 기술, 프로젝트, 자격증, 게시물 등 세부 섹션으로 프로필 세부 정보를 추출합니다.

읽기 전용

get_my_profile

인물

인증된 사용자의 자신의 프로필을 추출합니다.

읽기 전용

search_people

인물

키워드, 위치, 연결 정도(F=1촌, S=2촌, O=3촌 이상), 현재 회사로 사람을 검색합니다.

읽기 전용

connect_with_person

인물

선택적 개인 메모와 함께 연결 요청을 보내거나 초대를 수락합니다.

쓰기 / 작업

get_sidebar_profiles

인물

추천 사이드바 프로필 링크("알 수도 있는 사람", "더 많은 프로필")를 추출합니다.

읽기 전용

get_company_profile

회사

회사 세부 정보, 소개 정보, 게시물, 채용 공고, 숫자형 회사 URN ID를 추출합니다.

읽기 전용

get_company_posts

회사

최근 회사 피드 게시물을 가져옵니다.

읽기 전용

search_companies

회사

키워드로 회사를 검색합니다.

읽기 전용

get_company_employees

회사

선택적 필터를 사용하여 /people/ 섹션에서 회사 직원을 나열합니다.

읽기 전용

get_job_details

채용

특정 채용 공고에 대한 전체 세부 정보와 설명을 가져옵니다.

읽기 전용

search_jobs

채용

키워드, 위치, 게시 날짜, 고용 형태, 근무 형태, 경력 수준, 간편 지원 등의 필터로 채용 공고를 검색합니다.

읽기 전용

get_saved_jobs

채용

인증된 사용자가 저장한 채용 공고 목록을 가져옵니다.

읽기 전용

get_inbox

메시징

메시지 받은 편지함에서 최근 대화 스레드를 나열합니다.

읽기 전용

get_conversation

메시징

사용자 이름 또는 thread_id로 스레드의 메시지를 읽습니다.

읽기 전용

search_conversations

메시징

키워드로 메시지 스레드를 검색합니다.

읽기 전용

send_message

메시징

LinkedIn 쪽지를 보냅니다(안전한 2단계 확인을 위해 confirm_send: true 필요).

쓰기 / 작업

get_feed

피드

홈 타임라인에서 최근 게시물을 가져옵니다.

읽기 전용

search_posts

피드

최신성 필터(past-24h, past-week, past-month)로 LinkedIn 게시물을 전체 검색합니다.

읽기 전용

close_session

세션

브라우저 세션을 안전하게 종료하고 백그라운드 리소스를 정리합니다.

쓰기 / 작업


🚀 빠른 시작

사전 요구 사항

  1. Bun 설치 (v1.2 이상):

    # Windows (PowerShell)
    powershell -c "irm bun.sh/install.ps1 | iex"
    
    # macOS / Linux
    curl -fsSL https://bun.sh/install | bash
  2. Google Chrome / Chromium: 시스템에 설치되어 있어야 합니다.

단일 명령 실행 (bunx)

bunx를 사용하면 수동 설치 없이 서버를 직접 실행할 수 있습니다:

bunx linkedin-mcp-server-ts

로컬 클론 및 개발 설정

# Clone the repository
git clone https://github.com/joaovjo/linkedin-mcp-server-ts.git
cd linkedin-mcp-server-ts

# Install dependencies
bun install

# Start the server (stdio mode for MCP clients)
bun run start

# Start the HTTP server (for web MCP debugging)
bun run dev

💻 MCP 클라이언트 구성

1. Claude Desktop

claude_desktop_config.json에 추가하세요:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "linkedin": {
      "command": "bunx",
      "args": ["linkedin-mcp-server-ts"]
    }
  }
}

또는 로컬 클론에서 실행할 때:

{
  "mcpServers": {
    "linkedin": {
      "command": "bun",
      "args": ["run", "src/index.ts"],
      "cwd": "D:/linkedin/linkedin-mcp-server-ts"
    }
  }
}

2. Cursor

프로젝트의 .cursor/mcp.json 또는 전역 Cursor 설정에 추가하세요:

{
  "mcpServers": {
    "linkedin": {
      "command": "bunx",
      "args": ["linkedin-mcp-server-ts"]
    }
  }
}

3. OpenCode

opencode.json(또는 ~/.config/opencode/opencode.json)에 추가하세요:

{
  "mcp": {
    "linkedin": {
      "type": "stdio",
      "command": "bunx",
      "args": ["linkedin-mcp-server-ts"]
    }
  }
}

4. Antigravity / Windsurf / VS Code (Cline / Roo Code)

mcp_config.json에 추가하세요:

{
  "mcpServers": {
    "linkedin": {
      "command": "bunx",
      "args": ["linkedin-mcp-server-ts"],
      "disabled": false,
      "autoApprove": []
    }
  }
}

5. Streamable HTTP 모드

원격 에이전트 또는 컨테이너 환경에서 서버를 HTTP로 노출하려면:

bun run src/index.ts --transport streamable-http --host 127.0.0.1 --port 8000

엔드포인트 URL: http://127.0.0.1:8000/mcp 헬스체크: http://127.0.0.1:8000/health


🔐 인증 및 세션 관리

서버는 ~/.linkedin-mcp/profile에 저장된 영구 브라우저 프로필을 사용하므로 인증은 한 번만 수행하면 됩니다.

옵션 A: 일상 브라우저에서 자동 가져오기 (가장 빠름)

이미 브라우저(Chrome, Brave, Edge, Arc, Vivaldi)에서 LinkedIn에 로그인되어 있다면 세션을 즉시 가져올 수 있습니다:

# Auto-detect the most recent browser session
bunx linkedin-mcp-server-ts --import-from-browser

# Or specify a target browser
bunx linkedin-mcp-server-ts --import-from-browser brave
bunx linkedin-mcp-server-ts --import-from-browser chrome
bunx linkedin-mcp-server-ts --import-from-browser edge

옵션 B: 대화형 시각 로그인

로그인할 수 있는 대화형 Chrome 창을 실행합니다:

bunx linkedin-mcp-server-ts --login
# Or from local source:
bun run login
  1. LinkedIn 로그인 페이지로 Chrome 브라우저 창이 열립니다.

  2. 로그인을 완료합니다(요청 시 2FA / CAPTCHA 포함).

  3. 서버는 피드로의 정상적인 이동을 감지하고 세션 프로필을 안전하게 저장합니다.

세션 상태 확인

bunx linkedin-mcp-server-ts --status
# Or from local source:
bun run status

로그아웃 및 세션 정리

bunx linkedin-mcp-server-ts --logout
# Or from local source:
bun run logout

⚙️ 구성 및 환경 변수

동작을 사용자 지정하려면 루트 디렉터리에 .env 파일을 생성하거나 CLI 인수를 전달하세요:

변수

CLI 플래그

기본값

설명

USER_DATA_DIR

--user-data-dir

~/.linkedin-mcp/profile

영구 브라우저 프로필 디렉터리의 경로

HEADLESS

--headless / --no-headless

true

헤드리스 모드로 브라우저 실행

TRANSPORT

--transport

stdio

전송 프로토콜: stdio 또는 streamable-http

HOST

--host

127.0.0.1

HTTP 바인드 호스트

PORT

--port

8000

HTTP 포트

HTTP_PATH

--path

/mcp

HTTP 엔드포인트 경로

TIMEOUT

--timeout

5000

DOM 탐색/상호작용 타임아웃 (ms)

TOOL_TIMEOUT

--tool-timeout

180

도구별 MCP 실행 타임아웃 (초)

LOGIN_TIMEOUT

--login-timeout

1800

--login 중 최대 대기 시간 (초)

LOGIN_INLINE_WAIT

--login-inline-wait

25

인라인 인증 폴백 대기 시간 (초)

AUTO_IMPORT_FROM_BROWSER

--auto-import / --no-auto-import

true

프로필이 없으면 쿠키 자동 가져오기

CHROME_PATH

--chrome-path

"" (자동 감지)

Chrome/Chromium 실행 파일의 사용자 지정 경로

USER_AGENT

--user-agent

""

선택적 사용자 지정 브라우저 User-Agent 재정의

VIEWPORT

--viewport

1280x720

브라우저 뷰포트 크기 (WIDTHxHEIGHT)

DEBUG_PORT

--debug-port

9222

--login 중 사용되는 Chrome 원격 디버깅 포트

LOG_LEVEL

--log-level

WARNING

로깅 수준 (DEBUG, INFO, WARNING, ERROR)


🧪 개발, 테스트 및 품질

계약 및 단위 테스트 실행

19개 도구, 스키마 검증, 링크 메타데이터 분류기, 오류 처리를 검증하는 전체 테스트 스위트를 실행하세요:

bun test

린팅 및 포맷팅

코드 스타일과 포맷팅은 Biome 으로 강제됩니다:

# Check code for lint issues
bun run lint

# Auto-fix formatting and linting
bun run lint:fix

# Format files
bun run format

프로젝트 구조

linkedin-mcp-server-ts/
├── src/
│   ├── index.ts               # CLI Entrypoint & Transport routing (stdio / HTTP)
│   ├── config.ts              # CLI flags & environment configuration
│   ├── browser/
│   │   ├── auth.ts            # Login, logout, status, and browser cookie importer
│   │   ├── cdp.ts             # Direct Chrome DevTools Protocol helper functions
│   │   ├── chrome-launch.ts   # Process launcher for visual login & remote attach
│   │   ├── manager.ts         # Bun.WebView & CDP lifecycle manager
│   │   └── types.ts           # Browser status types
│   ├── errors/                # Unified error handling & custom error hierarchy
│   ├── mcp/
│   │   └── create-server.ts   # MCP Server registration & tool mounting
│   ├── middleware/            # Concurrency serialization queue
│   ├── scraping/              # DOM extraction, noise removal, link classification & URNs
│   ├── session/               # Cookie storage, profile directories, and persistence
│   ├── tools/                 # 19 MCP tool implementations
│   └── utils/                 # General helpers
├── tests/                     # Bun test suite & contract validations
├── bunfig.toml                # Bun configuration & npm publish registry settings
└── package.json               # Package metadata, dependencies, and scripts

📦 NPM에 게시

이 프로젝트는 bunfig.toml을 사용하여 Bun으로 npm 레지스트리에 직접 게시합니다:

# Verify typecheck & tests pass
bun test
bun run lint

# Publish public package
bun publish

🤝 기여

기여, 버그 보고, 풀 리퀘스트를 환영합니다!

  1. GitHub에서 저장소를 포크하세요: https://github.com/joaovjo/linkedin-mcp-server-ts

  2. 기능 브랜치를 만드세요: git checkout -b feature/amazing-feature

  3. 변경 사항을 커밋하세요: git commit -m 'feat: add amazing feature'

  4. 모든 테스트가 통과하는지 확인하세요: bun test && bun run lint

  5. 브랜치에 푸시하세요: git push origin feature/amazing-feature

  6. 풀 리퀘스트를 여세요.


📄 라이선스 및 크레딧

-
license - not tested
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.

  • MCP server for LeadDelta — manage LinkedIn connections and CRM data via AI assistants.

  • Stealth scraping & search. Bypasses Cloudflare, DataDome & LinkedIn via Cyborg HITL approach.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/joaovjo/linkedin-mcp-server-ts'

If you have feedback or need assistance with the MCP directory API, please join our Discord server