linkedin-safe-mcp
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 アプリ、 | なし — 承認済み |
求人検索と詳細 | ゲストエンドポイント(ログアウト状態の求人ページ)、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 Desktop(claude_desktop_config.json)— .mcp.json と同じ JSON 構造です。
LINKEDIN_CLIENT_* 変数は投稿時のみ必要です。求人検索とトラッキングだけを使う場合は省略してください。
投稿機能の有効化(一度だけの LinkedIn アプリ設定)
https://www.linkedin.com/developers/apps にアクセスし、アプリを作成(任意の LinkedIn ページを関連付ける必要があります。簡単なページで構いません)。
アプリの Products タブで、Share on LinkedIn と Sign In with LinkedIn using OpenID Connect を追加します。
Auth タブで、リダイレクト URL
http://localhost:8765/callbackを追加します。Client ID と Client Secret を上記の環境変数にコピーします。
認証は一度だけ行います。次のいずれかの方法で:
uv run --directory <REPO> linkedin-safe-mcpを実行または、エージェントに
loginツールを呼び出させ、認証 URL を案内してもらう
トークンは ~/.linkedin-mcp/tokens.json(モード 0600)に保存され、有効期限は約 60 日です。LinkedIn はセルフサービスアプリにリフレッシュトークンを発行しないため、期限が切れたらログインを再実行してください(auth_status が正確な期限を教えてくれます)。
ツール
ツール | 認証が必要 | 内容 |
| なし | 設定・認証状態を報告。エラーがあれば具体的な修正手順も表示 |
| なし | OAuth ログインの開始(ブラウザ)/ 保存済みトークンの削除 |
| あり | テキスト(+ハッシュタグ)、リンク、ローカル画像を投稿。公開範囲は |
| あり | 自分の投稿を削除(URN または投稿 URL) |
| あり | 投稿にコメント(URN または投稿 URL) |
| あり | 投稿にいいね(URN または投稿 URL) |
| なし | フィルター:場所、リモート/ハイブリッド/出社、掲載時期、経験レベル、雇用形態、Easy Apply のみ、並び順。最大 50 件 |
| なし | 完全な求人情報:説明、役職レベル、雇用形態、給与(あれば)、応募者数、外部応募 URL |
| なし | 求人をローカルトラッカーにスナップショット保存 |
| なし | 1 件の求人詳細 / パイプライン集計(ステータス別件数) |
| なし | interested → applied → interviewing → offer(+ rejected / withdrawn / archived)。メモ付き |
| なし | メモの追加 / 求人の削除 |
エージェントができることの例:「リモートのスタッフエンジニア求人を最近投稿されたものから検索して、有望そうなものを保存し、保存した求人からカスタマイズしたカバーレターを書き、応募したものをマークし、自分のオープンソース活動を投稿する」。
設定
環境変数 | デフォルト | 目的 |
| – | LinkedIn アプリの認証情報(投稿機能のみ) |
|
| トークンとトラッカーデータの保存先 |
|
| OAuth コールバックポート(アプリのリダイレクト URL と一致させること) |
|
|
|
|
|
|
| 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
This server cannot be installed
Maintenance
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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