Skip to main content
Glama
AmmYoo7

linkedin-safe-mcp

by AmmYoo7

linkedin-safe-mcp

LinkedIn に安全にアクセスするための MCP サーバーです。AI エージェント(Claude Code、Codex、Claude Desktop、Cursor など)に LinkedIn のスーパーパワーを与えます — アカウントを危険にさらすことなく

  • LinkedIn への投稿 — テキスト、リンク、画像を LinkedIn の公式 API(OAuth、ToS 準拠)経由で投稿。コメントや「いいね」も可能。

  • 求人検索 — キーワード / 場所 / リモート / 経験年数 / 日付フィルターを LinkedIn の公開ゲストエンドポイント経由で利用。ログインも Cookie も不要:あなたのアカウントは一切関与しません。

  • 求職活動の管理 — ローカル SQLite のアプリケーショントラッカー(興味あり → 応募 → 面接 → オファー)にメモや求人ごとの掲載スナップショットを保存。掲載が削除された後でも、エージェントがパイプラインを管理し、カスタマイズしたカバーレターを作成できます。

なぜこの設計なのか?

LinkedIn には公式の求人検索 API がなく、非公式の方法(li_at セッション Cookie を使った Voyager 内部 API、ログイン済みセッションでのヘッドレスブラウザ)は LinkedIn の利用規約 §8.2 に違反し、アカウントが制限されることが日常茶飯事です。このサーバーは意図的に折衷案を取っています:

懸念事項

対処方法

アカウントリスク

投稿、コメント、いいね

公式 REST API、自身の OAuth アプリ、w_member_social

なし — 承認済み

求人検索と詳細

ゲストエンドポイント(ログアウト状態の求人ページ)、IP レート制限あり

なし — 認証情報を使用しない

パイプライン追跡

手元のマシン上のローカル SQLite

なし — LinkedIn に接触しない

Easy Apply、DM、フィード閲覧

意図的に未搭載 — ToS 違反のアクセスが必要なため

要件

  • Python 3.11+ と uv

  • 投稿機能を使う場合のみ:無料のセルフサービス LinkedIn 開発者アプリ(下記 5 分で設定可能)。求人検索とトラッカーは認証なしで動作します。

インストールとエージェントへの接続

このディレクトリを複製またはコピーし、MCP クライアントに登録します。以下の <REPO> はこのプロジェクトの絶対パスです。

Claude Code

claude mcp add linkedin \
  --env LINKEDIN_CLIENT_ID=your_client_id \
  --env LINKEDIN_CLIENT_SECRET=your_client_secret \
  -- uv run --directory <REPO> linkedin-safe-mcp

またはプロジェクトの .mcp.json 内:

{
  "mcpServers": {
    "linkedin": {
      "command": "uv",
      "args": ["run", "--directory", "<REPO>", "linkedin-safe-mcp"],
      "env": {
        "LINKEDIN_CLIENT_ID": "your_client_id",
        "LINKEDIN_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

Codex~/.codex/config.toml

[mcp_servers.linkedin]
command = "uv"
args = ["run", "--directory", "<REPO>", "linkedin-safe-mcp"]
env = { LINKEDIN_CLIENT_ID = "your_client_id", LINKEDIN_CLIENT_SECRET = "your_client_secret" }

Claude Desktopclaude_desktop_config.json)— .mcp.json と同じ JSON 構造です。

LINKEDIN_CLIENT_* 変数は投稿時のみ必要です。求人検索とトラッキングだけを使う場合は省略してください。

投稿機能の有効化(一度だけの LinkedIn アプリ設定)

  1. https://www.linkedin.com/developers/apps にアクセスし、アプリを作成(任意の LinkedIn ページを関連付ける必要があります。簡単なページで構いません)。

  2. アプリの Products タブで、Share on LinkedInSign In with LinkedIn using OpenID Connect を追加します。

  3. Auth タブで、リダイレクト URL http://localhost:8765/callback を追加します。

  4. Client IDClient Secret を上記の環境変数にコピーします。

  5. 認証は一度だけ行います。次のいずれかの方法で:

    • uv run --directory <REPO> linkedin-safe-mcp を実行

    • または、エージェントに login ツールを呼び出させ、認証 URL を案内してもらう

トークンは ~/.linkedin-mcp/tokens.json(モード 0600)に保存され、有効期限は約 60 日です。LinkedIn はセルフサービスアプリにリフレッシュトークンを発行しないため、期限が切れたらログインを再実行してください(auth_status が正確な期限を教えてくれます)。

ツール

ツール

認証が必要

内容

auth_status

なし

設定・認証状態を報告。エラーがあれば具体的な修正手順も表示

login / logout

なし

OAuth ログインの開始(ブラウザ)/ 保存済みトークンの削除

create_post

あり

テキスト(+ハッシュタグ)、リンク、ローカル画像を投稿。公開範囲は PUBLIC または CONNECTIONS

delete_post

あり

自分の投稿を削除(URN または投稿 URL)

comment_on_post

あり

投稿にコメント(URN または投稿 URL)

like_post

あり

投稿にいいね(URN または投稿 URL)

search_jobs

なし

フィルター:場所、リモート/ハイブリッド/出社、掲載時期、経験レベル、雇用形態、Easy Apply のみ、並び順。最大 50 件

get_job

なし

完全な求人情報:説明、役職レベル、雇用形態、給与(あれば)、応募者数、外部応募 URL

save_job

なし

求人をローカルトラッカーにスナップショット保存

get_saved_job / list_saved_jobs

なし

1 件の求人詳細 / パイプライン集計(ステータス別件数)

update_job_status

なし

interested → applied → interviewing → offer(+ rejected / withdrawn / archived)。メモ付き

add_job_note / remove_saved_job

なし

メモの追加 / 求人の削除

エージェントができることの例:「リモートのスタッフエンジニア求人を最近投稿されたものから検索して、有望そうなものを保存し、保存した求人からカスタマイズしたカバーレターを書き、応募したものをマークし、自分のオープンソース活動を投稿する」

設定

環境変数

デフォルト

目的

LINKEDIN_CLIENT_ID / LINKEDIN_CLIENT_SECRET

LinkedIn アプリの認証情報(投稿機能のみ)

LINKEDIN_MCP_DIR

~/.linkedin-mcp

トークンとトラッカーデータの保存先

LINKEDIN_REDIRECT_PORT

8765

OAuth コールバックポート(アプリのリダイレクト URL と一致させること)

LINKEDIN_API_VERSION

202606

/rest/* 呼び出しに使う LinkedIn-Version ヘッダー

LINKEDIN_POSTS_BACKEND

auto

restugcauto(アプリで許可されている方を試して記憶)

LINKEDIN_MCP_USER_AGENT

Chrome UA

ゲスト求人リクエスト用の User-Agent

動作と制限

  • 投稿: メンバーの投稿は 150 リクエスト/日 に制限されています。重複投稿(同一本文)は 422 で拒否されます。バージョン管理 API では、括弧などの予約文字を自動エスケープしてエラーを防ぎます。

  • 求人検索: ゲストエンドポイントは IP あたりでレート制限(HTTP 429)があります。サーバーはキャッシュ(求人検索 10 分、求人詳細 6 時間)、バックオフ付きリトライ、ページ取得のペーシングを行います。429 が続く場合は「しばらく待ってください」というエラーを返します。結果は最大 50 件に抑えてください。

  • スクレイピング方針: ゲスト求人検索は、ログアウト訪問者が見る同じ公開ページを、キャッシュ付きで控えめなレートで取得します。それでも LinkedIn が仕様を変更・制限する可能性があるため、パーサーは固定テストで保護され、失敗時はツールが解決策を明示します。

開発

uv sync            # install deps (Python ≥3.11)
uv run pytest      # 48 tests: parsers vs live fixtures, payloads, OAuth, tracker,
                   # plus an end-to-end stdio smoke test that spawns the real server
uv run ruff check src tests && uv run ruff format --check src tests

構成: src/linkedin_mcp/server.py(ツール表面)、auth/(OAuth + トークン保存)、jobs/(ゲストクライアント、HTML パーサー、フィルター変換)、tracker/(SQLite 永続化)。

ロードマップ

  • PyPI 公開(uvx linkedin-mcp で実行可能に)

  • いいね以外のリアクション種類、投稿への画像複数添付、投票投稿

  • 同じツールスキーマのまま、オプションのサードパーティ求人データプロバイダーを追加

  • ホスト型 / リモート利用のための streamable-http トランスポート

  • (検討中、デフォルトでは無効、オプトインのみ)パーソナライズ機能のための Cookie ベースのプロバイダー。ToS 違反のリスクを明確に警告した上で

ライセンス

MIT

-
license - not tested
-
quality - not tested
C
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.

  • GetJobzi MCP server for job search, application tracking, and career forecasting.

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

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