Skip to main content
Glama

LinkedIn Evidence MCP

독립적으로 만들어진 커뮤니티 도구입니다. LinkedIn Corporation 또는 Microsoft와 제휴하거나 보증하거나 후원하지 않습니다. "LinkedIn"은 LinkedIn Corporation의 상표이며, 이 소프트웨어가 상호 운용하는 서비스를 설명하는 용도로만 사용됩니다.

로컬 우선 방식의 LinkedIn 작업 공간으로, 하나의 공유 엔진과 이를 사용하는 두 가지 동기화된 방식을 제공합니다:

  • stdio MCP 서버 — 증거, 프로필, 초안 작성, 분석, 유지보수를 위한 기본 워크플로 엔진

  • 선택 사항인 루프백 대시보드 — 동일한 도구와 데이터 위에서 시각적 지원 및 사람의 검토를 위한 화면

이 애플리케이션은 자체 SQLite 데이터베이스와 아티팩트 저장소를 이 컴퓨터에 유지합니다. LLM, 호스팅 서비스, 스케줄러, 스크래핑, 브라우저 자동화, 쿠키 재사용, 자동 참여 기능은 포함하지 않습니다.

여기에는 타이머로 새로고침되는 것이 없습니다. LinkedIn 데이터는 사용자나 에이전트가 그렇게 하는 도구를 호출할 때만 가져옵니다. 이는 예측 가능성에 대한 제품 결정이지 LinkedIn 약관이 부과한 제한이 아닙니다 — 최신 LinkedIn 프로필 읽기를 참조하세요.

용도

이 앱은 사용자가 통제하는 증거(이력서, 문서, 저장소, LinkedIn 내보내기, 수동으로 가져온 기록)를 다음으로 변환합니다:

  • 검증된 주장 원장(claim ledger)

  • 증거 기반의 정식 프로필

  • 수동 복사/붙여넣기를 위한 정확한 프로필 변경 패치

  • 결정적 검증이 포함된 LinkedIn 게시물 초안

  • 콘텐츠 기둥, 기회, 계획 캘린더

  • 게시 승인 및 추가 전용 감사 기록

  • 로컬 백업, 내보내기, 보존 제어

외부 LinkedIn 기능은 선택 사항입니다. 해당 개발자 앱 자격 증명이 저장되고, LinkedIn에 대해 검증되며, 필요한 곳에 명시적으로 활성화될 때까지는 사용할 수 없습니다. 나머지 제품은 해당 자격 증명 없이도 작동합니다.

Related MCP server: linkedin-mcp

요구 사항

  • Windows 10 이상, Linux, macOS. 세 플랫폼 모두 지원되며, 모든 푸시에서 전체 테스트 스위트를 실행합니다.

  • Node.js 24 이상 (데이터베이스는 내장 node:sqlite 사용)

  • npm

증거 가져오기는 각 플랫폼의 고유한 절대 경로 형식을 허용합니다: Windows의 드라이브 문자 경로, Linux와 macOS의 / 루트 경로. 규칙은 실제로 다릅니다 — Windows는 UNC 경로, 대체 데이터 스트림, 예약된 장치 이름도 거부하는 반면, POSIX 규칙은 포함된 NUL 바이트와 모호한 // 루트를 거부합니다 — 위험한 형태가 다르기 때문이지, 한 플랫폼이 더 신뢰되기 때문이 아닙니다.

자격 증명 저장소도 다르며, 그 차이를 의존하기 전에 알아두는 것이 좋습니다. 세 플랫폼 모두 동일한 실질적 보장을 제공합니다 — 다른 머신이나 다른 계정으로 복사된 데이터 홈은 열 수 없습니다 — 하지만 강도는 동일하지 않습니다:

플랫폼

마스터 키가 봉인되는 방식

macOS

로그인 키체인에 있는 임의 키, OS가 접근 제어 목록 뒤에 보관

가장 강력함

Windows

DPAPI, Windows 계정에 바인딩됨

Linux

호스트 머신 ID와 사용자 ID에서 파생되며, 어디에도 기록되지 않음

가장 약함 — /etc/machine-id는 모든 사용자가 읽을 수 있으므로 로컬 프로세스가 동일한 키를 파생할 수 있음

어느 것도 사용자 권한으로 실행되는 소프트웨어를 방어하지 못하며, SECURITY.md는 항상 이를 범위 밖으로 명시해 왔습니다. 이 순위는 로컬 공격자가 위협 모델에 있을 때만 중요합니다. 그렇다면 macOS나 Windows를 선호하거나 LinkedIn 자격 증명을 아예 저장하지 마세요 — 다른 모든 것은 자격 증명 없이 작동합니다.

대화형 설정 도우미는 PowerShell이므로 Windows 전용입니다. Linux와 macOS에서는 MCP 클라이언트를 수동으로 구성해야 하며, 이는 JSON 블록 하나입니다 — MCP 서버 설정을 참조하세요. npm run setup:mcp는 실패하지 않고 해당 블록을 플랫폼에 맞는 올바른 데이터 홈과 함께 정확히 출력합니다.

선택적 LinkedIn 읽기 경로에는 두 번째 별도의 제한이 있습니다. LinkedIn은 유럽 경제 지역 또는 스위스에 거주하는 회원에게만 회원 데이터 이전 토큰을 발급합니다. LinkedIn을 건드리지 않는 모든 것은 그와 무관하게 작동합니다.

빠른 시작

저장소 루트에서:

npm run setup:mcp

Windows에서는 아래 설명된 대화형 도우미가 실행됩니다. Linux와 macOS에서는 도우미가 적용되지 않습니다 — PowerShell이며 Windows 클라이언트 경로를 쓰기 때문입니다 — 대신 npm run setup:mcp가 MCP 클라이언트에 수동으로 추가할 JSON 블록 하나를 플랫폼에 맞는 올바른 데이터 홈과 함께 출력하며, 이 섹션의 나머지(PowerShell 명령)는 Windows 전용입니다. 클라이언트별 예시는 MCP 서버 설정에 있습니다. 짧은 버전은 아래의 대시보드 없이 MCP 사용이며, 모든 플랫폼에서 동일합니다.

먼저 무엇을 하는지 확인하세요 (Windows):

powershell -NoProfile -ExecutionPolicy Bypass -File .\setup-mcp.ps1 -All -NonInteractive -DryRun

Windows는 기본 Restricted 실행 정책에서 서명되지 않은 .ps1 실행을 거부하므로, 그냥 .\setup-mcp.ps1은 아무것도 하기 전에 실패합니다. -ExecutionPolicy Bypass는 해당 호출 한 번에만 적용되며 머신의 어떤 것도 변경하지 않습니다 — 이는 npm run setup:mcp가 하는 것과 정확히 동일합니다. 신뢰하지 않으려면 먼저 스크립트를 읽으세요. -DryRun은 쓰기 위해 파일을 열지 않고 건드릴 모든 파일을 출력합니다.

도우미는 다른 애플리케이션에 속한 구성 파일을 편집하므로, 실행하기 전에 어떤 파일인지 알아두는 것이 좋습니다. 선택한 클라이언트에 따라 ~/.codex/config.toml, ~/.claude.json, %APPDATA%\Claude\claude_desktop_config.json, %APPDATA%\Code\User\mcp.json, ~/.copilot/mcp-config.json, ~/.cursor/mcp.json, ~/.gemini/config/mcp_config.json에 쓸 수 있습니다. -NoPersistUserEnvironment를 전달하지 않으면 LINKEDIN_MCP_HOME사용자 범위 환경 변수로 저장합니다.

건드리는 모든 파일은 먼저 타임스탬프가 있는 사본으로 백업되고, linkedin 항목만 교체되며, 엄격한 JSON이 아닌 파일은 다시 쓰지 않고 거부하고, 실패 시 원본을 복원합니다.

인터랙티브 도우미는 Node.js를 확인하고, 필요 시 의존성을 설치하고, MCP 서버를 빌드하고, 구성할 AI 클라이언트를 묻고, 모든 선택 항목을 하나의 공유 데이터 홈으로 지정합니다. Codex, Claude Code, Claude Desktop, VS Code/Copilot Chat, GitHub Copilot CLI, Cursor, Google Antigravity를 지원합니다. 기존 JSON 구성은 병합되고 백업되며, linkedin MCP 항목만 교체됩니다.

구성된 클라이언트를 다시 시작한 다음, 두 표면 중 하나 또는 둘 다 선택하세요:

# MCP server: normally started automatically by your AI client
npm run mcp:start

# Optional human review dashboard
npm run dashboard

mcp:start는 stdin/stdout을 통해 JSON-RPC를 사용하므로 일반 터미널에서 실행하면 대기하는 것처럼 보입니다. 이는 정상입니다. 대신 MCP 클라이언트가 이를 실행하도록 구성하세요. MCP 서버 설정을 참조하세요.

대시보드는 http://127.0.0.1:4780에 대한 일회용 URL을 출력합니다. 대시보드 사용법을 참조하세요.

반복 가능하거나 무인 설정의 경우:

powershell -NoProfile -ExecutionPolicy Bypass -File .\setup-mcp.ps1 -Clients Codex,Cursor,VSCode -NonInteractive
powershell -NoProfile -ExecutionPolicy Bypass -File .\setup-mcp.ps1 -All -NonInteractive

다른 공유 홈을 선택하려면 -DataHome "C:\absolute\path"를 사용하세요. 도우미는 해당 절대 경로를 현재 사용자의 LINKEDIN_MCP_HOME으로 저장합니다. 대시보드를 시작하기 전에 새 터미널을 열어 새로 저장된 사용자 지정 값을 상속받도록 하세요. 선택한 클라이언트 항목만 변경하려면 -NoPersistentUserEnvironment를 전달하세요. 도우미는 LinkedIn 자격 증명을 묻거나 쓰지 않습니다.

MCP와 대시보드 간 공유 상태

대시보드와 구성된 모든 MCP 프로세스는 동일한 로컬 애플리케이션 홈을 엽니다. 대시보드에서 작업하고, 닫고, AI 에이전트를 통해 계속하고, 나중에 수동으로 가져오거나 조정하지 않고 돌아올 수 있습니다.

아래 모든 경로는 데이터 홈 아래에 있습니다 (데이터 위치 참조).

공유 상태

저장 위치

증거, 주장, 프로필 상태, 결정, 초안, 수정, 승인, 게시 기록, 감사 이벤트, 설정, 진행 상황

data/linkedin.sqlite3

가져온 작업 복사본 및 생성된 아티팩트

artifacts/

암호화된 LinkedIn 자격 증명

SQLite의 암호문과 secrets/의 봉인된 마스터 키 — Windows의 DPAPI, macOS의 Keychain, Linux의 머신 파생

백업

backups/

SQLite WAL 모드와 제한된 쓰기 재시도로 대시보드와 MCP 클라이언트가 동시에 실행될 수 있습니다. 대시보드는 포커스를 다시 얻을 때와 표시되는 동안 주기적으로 현재 화면을 새로고침하므로 에이전트 측 변경 사항이 재시작 없이 나타납니다.

이는 단일 사용자 계정에서의 로컬 동기화이며, 클라우드 또는 다중 머신 동기화가 아닙니다. 비밀은 두 프로세스 모두 사용할 수 있지만 AI 클라이언트 구성에 복사되거나, 모델에 반환되거나, 내보내지거나, 로그에 기록되거나, 백업에 포함되지 않습니다.

대시보드 없이 MCP 사용

대시보드와 MCP 서버는 별도 프로세스입니다. Codex, Claude, Copilot, Cursor, Antigravity, VS Code 또는 다른 stdio MCP 호스트에 연결하기 전에 대시보드를 시작할 필요가 없습니다.

빌드 후, 클라이언트가 절대 경로(Windows의 백슬래시, Linux/macOS의 /)로 컴파일된 진입점을 실행하도록 구성하세요:

node <absolute-path-to-repo>/linkedin-mcp-server/dist/index.js

인간이 운영하는 터미널에서 첫 증거 소스를 추가하고 가져오려면 — 경로는 예시이며, 플랫폼이 허용하는 형식의 절대 경로를 사용하세요:

npm run evidence:add -- "C:\path\to\cv.pdf" document personal_doc "Current CV"
# Linux / macOS:  npm run evidence:add -- "/home/you/cv.pdf" document personal_doc "Current CV"

이 명령은 대시보드를 열지 않고 소스를 명시적으로 등록, 활성화, 가져옵니다. 소스 종류는 repo, document, folder, linkedin_export, manual입니다. 신뢰 수준은 personal_doc, own_repo, local_clone_reference입니다.

그런 다음 연결된 에이전트에게 다음을 요청할 수 있습니다:

Use the LinkedIn MCP capability-status tool, then list my evidence sources and candidate claims.

MCP는 일반 워크플로를 구동합니다. 대시보드에는 전용 검토 화면과 시스템 → 모든 MCP 도구가 포함되어 있으며, 이는 동일한 검증된 도구 레지스트리를 노출합니다 — 비즈니스 로직의 대시보드 전용 복사본은 없습니다. 비밀 입력은 채팅을 통해 의도적으로 사용할 수 없는 유일한 작업입니다. 다른 중대한 작업은 작업에 바인딩된 명시적 확인이 필요합니다:

작업

대시보드 없이 이용 가능한 옵션

증거 등록, 활성화 및 가져오기

MCP(ENABLE <source_id> 활성화 필요), npm run evidence:add -- ..., 또는 대시보드/CLI

비밀 값이 아닌 설정 변경

linkedin_settings_set MCP 도구

LinkedIn 액세스 토큰 저장

`npm run control -- lane configure read

write --client-id ` (마스킹된 프롬프트)

게시 승인 부여, 거절 또는 수정

연결된 에이전트에게 결정을 알리고 linkedin_approval_decide에 바인딩된 명령을 확인하거나, 대시보드/control CLI를 사용하세요

실제 게시 활성화

linkedin_feature_control, 대시보드 Features, 또는 npm run control -- feature enable live_publishing --confirm (write-lane 검증 후)

계정에 게시

linkedin_publish_execute를 승인 후 PUBLISH <approval_id>와 함께 실행합니다. 이 버전에서는 텍스트 게시물만 지원됩니다.

LinkedIn portability 데이터만 삭제

linkedin_purge_run 모드 purge_dma, 또는 npm run control -- purge <...> --confirm "DELETE LINKEDIN PORTABILITY"; prune_dma / --before <ISO>는 이전 기록을 삭제하고 현재 프로필을 유지합니다.

모든 로컬 데이터 영구 삭제

확인된 linkedin_purge_run, 대시보드, 또는 npm run control -- purge all --confirm "DELETE ALL LOCAL DATA"

인수 없이 npm run control을 실행하면 대화형 메뉴가 표시됩니다. CLI는 대시보드가 없어도 비밀 값을 입력할 수 있는 인터페이스이기도 합니다. 액세스 토큰은 마스킹되며 MCP 페이로드에 절대 포함되지 않습니다.

공유 기능 컨트롤

9개의 기능 그룹은 공유 SQLite 데이터베이스에 저장되며 MCP 핸들러와 대시보드 라우트 양쪽에서 강제 적용됩니다: evidence, profile, content, publication_workflow, analytics, linkedin_sync, maintenance, configuration, live_publishing. 처음 8개는 기본적으로 활성화되어 있으며 live_publishing만 기본적으로 비활성화되어 있습니다.

설명 및 현재 값은 linkedin_feature_control, System → Features 또는 다음을 통해 확인할 수 있습니다:

npm run control -- feature list
npm run control -- feature disable analytics --confirm
npm run control -- feature enable analytics --confirm

기능 정책은 LinkedIn 자격 증명/API 준비 상태와 별개입니다. 따라서 live_publishing을 활성화해도 검증된 write-lane은 여전히 필요하며, 실제 게시물마다 여전히 리비전에 바인딩된 승인 승인과 정확한 게시 명령이 필요합니다.

증거 워크플로우와 결정 사항

의도된 흐름은 MCP 우선입니다:

  1. MCP에 증거 경로를 등록한 다음, 에이전트, 대시보드, control CLI를 통해 ENABLE <source_id>를 명시적으로 확인하세요.

  2. 에이전트가 가져오기를 수행하고 저장된 바이트 무결성을 검증하며 추출된 아티팩트를 검사하고, 인용과 함께 좁은 범위의 주장을 제안하게 하세요.

  3. 정확한 진술을 검토합니다. 충돌하지 않는 주장은 명시적인 사람의 확인을 거쳐야만 검증된 것으로 간주됩니다.

  4. 충돌, 모호한 표현, 과장된 주장은 사람의 검토를 위해 에스컬레이션합니다. MCP 대화 또는 대시보드를 통해 해결하며, 두 경로 모두 동일한 claim 및 conflict 서비스를 호출합니다.

Claim 문장은 불변 이력입니다. “Modify”는 수정된 문구를 새 주장으로 생성한 뒤 기존 주장을 거부하거나 병합합니다. 이렇게 하면 이전 결정이 조용히 속여 쓰이는 대신 감사 가능한 상태로 유지됩니다.

데이터 위치

기본 홈은 각 플랫폼의 규칙을 따릅니다:

플랫폼

기본 홈 디렉터리

Windows

%LOCALAPPDATA%\linkedin...

macOS

~/Library/Application Support/linkedin-mcp (또는 $XDG_DATA_HOME/linkedin-mcp 설정 시)

Linux

$XDG_DATA_HOME/linkedin-mcp, 설정되지 않은 경우 ~/.local/share/linkedin-mcp

다른 홈 위치나 격리된 테스트 데이터를 사용하려면 LINKEDIN_MCP_HOME을 절대 디렉터리로 설정하세요. 모든 플랫폼에서 기본값을 덮어씁니다. 상대 경로는 거부됩니다. 클라이언트에서 작업 디렉터리가 다를 경우 별도의 데이터베이스가 생길 수 있기 때문입니다. Windows에서도 \linkedin-data 같은 드라이브-상대 경로가 동일한 이유로 거부되며, 이는 프로세스가 실행 중인 드라이브 기준으로 해석되기 때문입니다. 설정 도우미는 모든 곳에서 동일한 절대값을 적용합니다.

실제 사용 홈을 OneDrive, Dropbox, Google Drive, iCloud Drive 또는 기타 동기화 폴더에 두지 마세요. SQLite는 실제 WAL 데이터베이스를 사용하므로 열려 있는 동안 복사해선 안 됩니다. 대신 기본 제공 백업 명령을 사용하세요.

저장소 구조

Path

Responsibility

linkedin-server/

핵심 엔진: MCP 도구 44개, 리소스 5개, 워크플로 프롬프트 5개, stdio 전송

linkedin-dashboard/

선택적 루프백(local loopback) 비주얼 지원, 사람 검토, MCP-도구를 정확히 호출할 콘솔

packages/domain/

증거, 프로필, 임시 저장, 승인, 게시, 감사, 보존

packages/db/

SQLite 드라이버, 마이그레이션, 낙관적 동시성, 아티팩트 저장

packages/importers/

경로-안전 ZIP, CSV, PDF, DOCX, 리포지토리 스캔, 마스킹 삭제(redaction)

packages/linkedin/

Fail-closed 방식의 LinkedIn OIDC, DMA 및 게시 어댑터

packages/shared/

표준 JSON, 식별자, 오류 계약

scripts/

사람이 실행하는 온보딩, 유지보수, 평가 명령

안전성 모델

  • 검증된 주장만 공개 프로필 텍스트 또는 임시 저장소에 근거가 됩니다.

  • 가져온 콘텐츠는 항상 신뢰할 수 없는 데이터로 취급하며, 명령으로 절대 해석하지 않습니다.

  • MCP는 사용자가 정확한 승인 명령을 명시적으로 확인한 뒤에만 게시 요청을 승인, 거절 또는 수정합니다. 부여된 권한은 리비전 해시에 바인딩됩니다.

  • 승인은 단일 초안 리비전에 바인딩되어 있으며, 게시 전에 소비됩니다.

  • 불확실한 네트워크 결과는 ambiguous가 되며 자동 재시도하지 않습니다.

  • 감사 로그는 해시 체인으로 이어집니다. 체인이 끊기면 승인과 게시가 중단됩니다.

  • 가져오기는 콘텐츠를 아티팩트 저장소에 복사하며 원본을 절대 변경하지 않습니다.

  • 비밀 값은 MCP 페이로드, 로그, 내보내기, 백업에서 제외됩니다.

개발 및 검증

npm ci
npm run typecheck
npm run build
npm test
npm run inspect:list
npm run test:visual

테스트 전 빌드하세요. protocol-cleanliness 스위트는 컴파일된 stdio 서버를 구동하므로, npm test를 실행하려면 linkedin-mcp-server/dist/index.js가 존재해야 합니다. 위의 순서대로 단계를 수행하는 것으로 충분하며 별도의 사전 설치 없이 가능합니다.

inspect:list는 컴파일된 stdio 서버를 MCP Inspector를 통해 시작하며 도구 카탈로그를 요청합니다. 시각적 테스트는 Playwright 브라우저 설치가 필요합니다.

선택 사항인 LinkedIn 개발자 앱 설정은 docs/linkedin-app-setup.md를 참고하세요.

문서

문서

다루는 내용

docs/architecture.md

두 표면, 하나의 엔진; 겉으로 드러나지 않는 연결부

docs/compatibility.md

지원되는 플랫폼, 런타임, MCP 클라이언트 및 알려진 검증 한계

docs/known-limitations.md

이 도구가 하지 않는 일, 그중 의도적으로 정한 한계

docs/privacy-and-local-data.md

저장되는 데이터, 시스템 밖으로 나가는 데이터, 데이터 삭제 방법

docs/threat-model.md

자산, 신뢰 경계, 보호가 중단되는 지점

docs/releases.md

버저닝, 업그레이드, 다운그레이드가 지원되지 않는 예외가 표시되지 않은 이유

docs/linkedin-app-setup.md

LinkedIn 개발자 앱 2개 만들기

docs/dashboard-design.md

대시보드 디자인 시스템

docs/dashboard-manual-checks.md

수동 접근성 및 뷰포트 체크리스트

SECURITY.md

취약점 보고; 특정되지 않은 범위(non-goals)

CONTRIBUTING.md

통과할 수 있는 빌드 만들기; 바꿀 수 없는 규칙

SUPPORT.md

문의할 곳, 지원 범위 밖의 것

라이선스

MIT — LICENSE를 참고하세요. 타사 의존성 라이선스는 THIRD-PARTY-NOTICES.md에 정리되어 있으며, 상표 및 소속 관련 문구는 NOTICE에 명시되어 있습니다.

A
license - permissive license
Not graded
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 Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Local-first MCP server for research on AI-assisted browsing of a user-owned professional-network account (e.g., LinkedIn), providing read-focused tools such as profile, company, search, and feed reads.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A personal-use remote MCP server that lets you post to LinkedIn, queue/schedule drafts, and pull your own post analytics from Claude.
    24
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Local-first MCP server using LinkedIn's official OAuth and REST APIs to connect a member account, read profile, and publish text posts.
    4
    177
    MIT

View all related MCP servers

Related MCP Connectors

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

  • Private-by-default, local-first memory/context/task orchestrator for MCP apps and agents.

  • Search, label and export your LinkedIn saved posts, then draft, schedule and publish from them.

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/victoryotzev/linkedin-mcp'

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