<div align="center">
🔗 LinkedIn MCP
AI 비서를 위한 LinkedIn — 실제 스텔스 브라우저 세션을 통한 구조화된 데이터
CI
npm version
MIT License
TypeScript
MCP
Glama score
MCP 클라이언트를 위한 구조화된 LinkedIn 읽기 데이터 — 프로필, 채용 공고, 회사 및 받은 편지함 데이터를 제공하며, 가이드된 오프라인 설정과 명시적인 안전 제한 기능을 갖추었습니다.
4.1.0 버전에서 24가지 도구 공개 · 로컬 브라우저 읽기 · 명확하게 확인된 5가지 쓰기 기능 · 영속화된 안전 제한 및 작업 기록.
이는 비공식 LinkedIn 통합이며 계정이 제한될 수 있습니다.
사용하기 전에 계정 안전성과 SECURITY.md를 검토하십시오.
</div
가이드된 첫 실행
공개된 4.1.0은 오프라인 애플리케이션 워크시트와 사용자 입력 추적기 CSV를 추가했습니다. 이들은 지원서를 채우거나 제출하지 않습니다. 그 공개 아카이브 및 목적지는 독립적으로 검증되었습니다.
4.0.0 버전에서는 오프라인 은퇴 미리보기와 네이티브 Windows 개인 정보 보호 확인 기능이 추가되었습니다.
기존 설치를 변경하기 전에 해당 Windows 업그레이드 관련 주의사항을 읽으십시오.
이것은 로컬 stdio 도구이며, Glama의 일반적인 “배포 서버” 또는 브라우저 호스팅 제어는 지원하지 않습니다. 별도의 호스팅 서비스가 필요하지 않습니다.
4.0.0 릴리스 노트에서 이러한 변경 사항과 제한 사항을 설명합니다.
이전 릴리스에 대한 검증된 3.1.0 발행 영수증은 계속 이용 가능합니다.
빠른 시작(quick start)과 설정 가이드(setup guide)부터 시작하세요.
설정은 LinkedIn에 연락하지 않고도 로컬 문제, 클라이언트 구성 및 정확한 다음 단계를 보고합니다. 생성된 항목을 기존 클라이언트 파일에 병합하세요.
가상 설정 데모를 참고하세요: 실제 게시 패키지, 일회용 장치(disposable fixtures), 로그인 또는 LinkedIn 요청 불필요.
research_jobs는 포함되지 않았습니다; 해당 직무 조사 개요는 draft PR #5에 남아 있습니다. 실행 계획은 첫 사용, 개인 정보 보호, 향후 기능 및 측정된 배포 결과를 추적합니다.
현재 완료 상태는 출시된 기능을 나머지 네이티브(native), 라이브(live), 배포 게이트와 분리하여 보여줍니다.
본 릴리스는 Easy Apply를 포함한 직무 지원을 수행하거나 제출하지 않습니다. 애플리케이션 인계 워크플로우, 제안된 다음 기능 및 Claude에 커넥터를 등록하기 위한 별도의 요구 사항은 구직자 및 Claude 배포 계획을 사용하세요.
Claude Desktop의 경우, 서명되지 않은 4.1.0 확장 프로그램과 체크섬을 다운로드하고 검증된 로컬 설치 가이드를 따르세요.
한 네이티브 Mac 검사에서 24가지 도구를 모두 발견했으며 콜드 whoami 테스트를 통과했지만, 라이브 계정 사용 및 Claude 디렉터리 목록은 아직 검증되지 않았습니다.
기능 설명 (What it does)
서버는 Patchright를 사용하여 영구적인 Google Chrome 프로필을 열고 인증된 페이지에서 Voyager 요청을 수행합니다. 결과는 MCP 클라이언트를 위해 JSON 형태로 구성됩니다. 일부 검색 도구는 페이지 데이터로 대체(fallback)됩니다. 문서화되지 않은 엔드포인트, 쿼리 ID, 브라우저 동작 및 응답 형태는 변경될 수 있습니다.
유용한 시작 워크플로우로는 프로필 리서치, 직무/회사 리서치, 그리고 받은 편지함 분류(inbox triage)가 있습니다. Alpha 작성 기능은 기본적으로 비활성화되어 있습니다. 활성화할 경우 검토된 서버 발행 미리보기 토큰과 confirm:true가 필요하며, 보수적인 시도 예산(attempt budgets)을 소모하고, 완료 여부를 확정할 수 없을 때는 unknown을 포함한 상태를 반환합니다.
검증 상태 (Verification status)
3.0.0 버전에서는 파괴적인 안전 및 클라이언트 요구 사항이 도입되었으니, 마이그레이션 가이드를 읽어보세요.
호스팅 소스/패키지/브라우저 검사는 Linux, macOS 및 Windows 환경에서 Node20/22를 다룹니다. 정확한 코어 전용 후보/헤드 결과는 릴리스 준비도에 기록되어 있습니다. 명시적으로 동의한 macOS 유지 관리자의 건강/자신 프로필 읽기 또한 부분적인 메타데이터와 함께 통과했지만, 범위 및 증거는 신규 사용자 또는 광범위한 라이브 호환성을 확립하지 못합니다.
공개된 4.1.0 아티팩트와 네 가지 목적지는 독립적으로 검증되었습니다. 네이티브 클라이언트의 첫 사용 코호트 및 광범위한 라이브 제공업체 호환성은 여전히 미검증 상태입니다.
실행 진행 상황과 연결된 증거를 참고하세요.
| 영역 | 현재 증거 |
|---|
| HTTP 경계, 체크포인트, 쓰기 계정 처리(write accounting) | 오프라인 회귀 및 MCP 프로토콜 고정 테스트 (fixtures) |
| ... | |
| Local 검사 및 CI 구성은 해당 케이스를 실행했다는 증거일 뿐이며, 현재 제공업체 호환성이나 계정 안전성을 보장하지 않습니다. | |
🚀 빠른 시작 (Quick start)
Node.js 20 이상 및 Google Chrome을 사용하세요. 아래 명령어는 4.1.0 버전을 고정합니다.
설정은 오프라인으로 진행되며, 로그인과 이후의 읽기 작업은 의도적인 계정 활동입니다. 안정적인 설치 경로와 Windows 명령어를 보려면 setup guide를 참조하세요. Windows에서는 4.1.0이 상태 경로가 실제 %USERPROFILE% 트리를 벗어나지 않아야 한다는 요구 사항을 유지합니다. 이 범위를 벗어난 사용자 지정 경로는 이전 버전에서 허용되었더라도 거부됩니다. migration notes를 참조하세요.
1. 오프라인 진단:
npm install --prefix "$HOME/.local/share/linkedin-mcp" [email protected]
node "$HOME/.local/share/linkedin-mcp/node_modules/linkedin-mcp-tools/dist/index.js" --setup cursor
claude-desktop 또는 vscode도 허용합니다. 보고된 로컬 문제를 해결한 다음, 생성된 항목을 기존 클라이언트 파일에 병합하세요. 설정 과정은 로그인이나 계정 요청을 수행하지 않습니다. 안정적인 로컬 설치를 사용하고 업그레이드 후에도 해당 항목을 재생성하세요. 이 방법은 임시 경로가 아닌 설치된 빌드를 고정합니다.
2. 한 번 로그인하기 (실제 Chrome 창이 열리며 — 로그인 및 캡차/2FA 해결):
node "$HOME/.local/share/linkedin-mcp/node_modules/linkedin-mcp-tools/dist/index.js" --login
Google Chrome이 설치되어 있어야 합니다 (또는 npx patchright install chrome을 한 번 실행하세요). 세션 — Cloudflare 인증 포함 — 은 ~/.linkedin-mcp/profile/에 지속됩니다.
3. 클라이언트 구성. 위에 생성된 항목을 사용하는 것이 좋습니다. mcpServers를 허용하는 클라이언트의 경우, 이 버전 고정 예시가 대안이 될 수 있습니다:
{
"mcpServers": {
"linkedin": {
...
로컬 상태 확인을 위해 whoami부터 시작하십시오. 계정 읽기 권한을 의도적으로 승인할 때는 *"내 프로필을 한 번 읽고 반환된 상태와 부분적인 메타데이터를 보고한 후 세션을 종료하세요. 재시도하거나 쓰기는 하지 마세요."*를 시도하십시오. 체크포인트에서 중단합니다. 현재 제공업체의 가용성은 불확실하므로, 빈 상태, 부분적 상태, 오류 상태를 모두 보존해야 합니다. Claude Desktop, Cursor 및 VS Code 전반에 걸친 첫 사용 결과는 아직 측정되지 않았습니다.
<details>
<summary><b>소스/기여 출처 (From source / contributing)</b></summary>
git clone https://github.com/devag7/linkedin-mcp.git
cd linkedin-mcp
npm ci
...
MCP 설정: "command": "node", "args": ["/absolute/path/to/dist/index.js"].
</details>
이 소스 체크아웃 진단하기 (Diagnose this source checkout)
npm run build
node dist/index.js --doctor
이 보고서는 패키지/Chrome 가용성, 프로필 접근성 및 소유권, 안전 상태 유효성, 선택된 전송 방식, 그리고 다음 단계를 보여줍니다. 쿠키, 토큰, 프로필 콘텐츠 및 개인 경로는 생략됩니다. Chrome을 열거나 LinkedIn에 연락하지 않습니다.
프로필을 사용하여 다른 프로세스를 중지하고 로그인한 후에는 node dist/index.js --doctor --live를 사용하여 라이브 신원 읽기를 명시적으로 선택하십시오. 이 탐침(probe)은 30초의 마감 시간을 가지며 이후 브라우저 정리 작업이 수행됩니다. 마감 시간이 이미 시작된 읽기가 취소되었음을 증명하지는 않습니다. 진단 과정에는 쓰기 기능이 포함되지 않습니다.
콜드 런타임에서 whoami는 sessionState: "not_checked"와 loggedIn: null을 보고합니다. health_check는 의도적으로 저장된 세션을 열고 라이브 API 검사를 수행합니다. 저장된 프로필이나 쿠키만으로는 건강한 API로 보고되지 않습니다.
Headful 로그인에는 로컬 디스플레이가 필요합니다. 일반 서버는 headless Chrome으로 기본 설정됩니다. 원격 브라우저/프로필 배포 및 프로필 복사본은 여기서 확인되지 않습니다.
로컬 HTTP 클라이언트 (Local HTTP clients)
Stdio가 기본값으로 유지됩니다. HTTP는 Authorization 헤더를 보낼 수 있는 로컬 MCP 클라이언트를 위한 명시적이며, 루프백 전용(loopback-only) 옵션입니다. 원격 호스트, 리버스 프록시, 브라우저 CORS 클라이언트 및 서버리스 배포는 지원되지 않습니다.
로컬 시크릿을 생성하고 다음 체크아웃에서 서버를 시작하세요:
pm run build
export LINKEDIN_HTTP_TOKEN="$(node -e 'console.log(require("node:crypto").randomBytes(32).toString("hex"))')'"
node dist/index.js --transport http --port 3000
클라이언트는 URL http://127.0.0.1:3000/mcp와 헤더 Authorization: Bearer <동일한 LINKEDIN_HTTP_TOKEN 값>으로 구성하세요. 시크릿은 클라이언트의 보호된 설정에 보관하고, URL이나 커밋에는 넣지 마세요.
토큰은 32~256개의 문자, 숫자, 밑줄 또는 하이픈을 포함해야 합니다. 무작위로 생성하세요. 길이 검증만으로는 토큰이 예측 불가능함을 증명할 수 없습니다.
GET /health를 포함한 모든 엔드포인트는 토큰을 요구합니다. 누락되거나 유효하지 않은 자격 증명은 401을 반환합니다. 헬스 보고서는 LinkedIn 로그인 상태가 아닌 리스너 상태를 보고합니다.
- HTTP는
127.0.0.1에 바인딩됩니다. 호스트는 반드시 127.0.0.1:<포트> 또는 localhost:<포트>여야 하며, Origin이 있는 경우 정확히 http://<Host>와 일치해야 합니다. 유효하지 않은 호스트/Origin은 403을 반환합니다. CORS 접근은 허용되지 않습니다.
POST /mcp는 최대 1 MiB의 압축 해제된 JSON을 수락합니다. 본문 업로드에는 10초 기한이 있으며, 응답에는 180초 기한이 있습니다. 활성 HTTP 요청은 최대 16개이고 TCP 연결은 32개입니다. 초과 요청은 503을 반환합니다.
- 프로토콜 연결은 이 프로세스 내에서 하나의 브라우저, 큐, 페이서(pacer), 예산 추적기(budget tracker), 그리고 서킷 브레이커(circuit breaker)를 공유합니다. 클라이언트를 종료한다고 해서 브라우저가 종료되는 것은 아니며, 리스너를 종료해야 공유 런타임이 종료됩니다.
- 시간 초과 또는 연결 끊김은 작업이 취소되었음을 증명하지 않습니다. 긴 페이싱 대기는 응답 기한을 넘길 수 있습니다. 쓰기 작업을 다시 시도하기 전에 LinkedIn에서 확인하세요. HTTP는 이를 자동으로 재시도하지 않습니다. 장기 실행 워크플로우에는 stdio를 선호하세요.
브라우저 프로필 소유권 및 계정 예산 거래는 로컬 프로세스 전반에 걸쳐 공유됩니다. 두 번째 소유자는 Chrome이 열리기 전에 거부됩니다. 이러한 제어는 계정 안전을 보장하지 않습니다. SECURITY.md를 참조하세요.
이것을 읽어보세요. LinkedIn 자동화는 사용자 계약(User Agreement)을 위반하며 계정이 제한되거나 정지될 수 있습니다 — 이 도구를 포함하여 어떤 도구도 이를 막을 수는 없습니다. 내장된 안전 기능(일일 상한선, 인간적인 속도 조절, 워밍업, 회로 차단기)은 위험을 줄일 뿐, 제거하지는 않습니다.
기본 설정은 보수적입니다:
- 연결 요청(Connections) 20/일, 메시지(messages) 50/일, 좋아요+댓글(likes+comments) 50/일 합산, 팔로우(follows) 30/일 — 총 작성 상한선(combined write cap) 150/로컬 일.
- 프로필 조회수(Profile views) 80/일, 검색(searches) 30/일.
- 보수적인 워밍업 제한(warmup limits), 대기 초대 상한선(pending-invite ceiling), 그리고 수락률(acceptance-rate) 일시 중지. 첫 번째 검증된 사용은 지속되는 워밍업 타이머를 시작합니다. 1주 차에는 메시지가 차단되며, 2주차와 3주차에 걸쳐 점진적으로 허용됩니다. 이는 LinkedIn 계정 연령이 아닌 로컬 도구 사용량을 측정합니다.
- 읽기(Reads)는 4–12초 간격으로 진행되고, 작성은 45–150초 간격이며, 긴 휴식 시간과 근무 시간 제한(working-hours gate)을 거칩니다.
- **지속적인 회로 차단기(persistent circuit breaker)**는 관찰된 체크포인트 URL, HTTP 999, JSON 엔드포인트의 도전 과제 HTML 또는 지원되는 도전 페이지 신호 이후 추가 자동 호출을 차단합니다. 이는 절대 체크포인트를 해결하려고 시도하지 않습니다. 이미 진행 중인 요청은 되돌릴 수 없습니다.
플랫폼 규칙을 검토하고 이 통합이 귀하의 계정에 적절한지 결정하십시오. 상한선과 속도 조절만으로는 제한을 막을 수 없습니다. 도전 과제는 수동으로 해결해야 하며, 안전 레이어를 규정 준수(compliance) 또는 회피 보장(evasion guarantee)으로 절대 간주해서는 안 됩니다.