linkedin-mcp-custom
This server provides an automated LinkedIn job analysis pipeline that scrapes saved jobs, scores them using a 6-dimension EROI model, and generates structured reports.
health_check— Check the server's health status and version.get_saved_jobs— Scrape your LinkedIn saved jobs from the/jobs-tracker/page, returning raw text and a list of numeric job IDs.get_job_details— Fetch the full posting text for a specific LinkedIn job by providing its numeric job ID.analyze_saved_jobs— Run the full end-to-end pipeline: scrape all saved jobs → extract details → score using the 6-dimension EROI model (domain, tech, role, growth, formal, location) → detect skill gaps → write structured reports (agregovany_report.md,metadata_stacku.json) to a knowledge base → auto-commit changes via git.close_session_tool— Cleanly close the browser session and free up resources when done.
Allows automatic commits of analysis reports and market intelligence to a GitHub repository, providing version-controlled storage of job scoring results.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@linkedin-mcp-customanalyze my saved LinkedIn jobs and write results to KB"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🤖 linkedin-mcp-analyzer
LinkedIn saved jobs → EROI scoring → structured reports → git-committed market intelligence
Automated pipeline that scrapes your LinkedIn saved jobs, scores them against your profile using a 6-dimension EROI model, and writes actionable reports. Anti-bot aware — uses human-like patterns to avoid detection.
🔍 What problem does this solve?
LinkedIn's job recommendations are noisy. Of 71 saved jobs analyzed, only 6% were relevant (SLEDOVAT/follow). The rest are noise — AI hype roles, fake-engineer titles, distant locations, non-strategic employers.
This tool replaces manual scrolling with a cache-aware, anti-bot pipeline:
📌 Your LinkedIn saved jobs (71 tracked)
↓
🔄 Skip-existing filter ← 95% reduction (only new jobs scraped)
↓
🕷️ Sequential scraper (30s, no parallelism) ← anti-bot — human rhythm
↓
📊 EROI scoring engine ← 6 dimensions, YAML-configured weights
↓
📝 KB write-back ← metadata_stacku.json + agregovany_report.md
↓
📈 Synthetic market analysis ← Frequency matrix + SNR + gap detection
↓
📦 Auto-committed to KB ← git commit with full historyRelated MCP server: LinkedIn-Posts-Hunter-MCP-Server
✨ Features
Feature | What it does |
Cache-aware scraping | Skips jobs already in KB ( |
Anti-bot pattern | Sequential scraping (no parallelism), random delay 3-7s, fingerprint mix |
Adaptive delay | Speeds up on success (0.95×), slows on errors (1.5×) — self-tuning |
Session heartbeat | Refreshes LinkedIn auth every N jobs — prevents mid-run session expiry |
3-layer YAML config | Source (max_pages) / Runtime (delay, timeout) / Analysis (N profiles) |
Configurable EROI |
|
Fingerprint mix | Random viewport, user-agent, locale, timezone per browser launch |
6-dimension EROI scoring | Domain (35%), Tech (25%), Role (20%), Growth (10%), Formal (5%), Location (5%) |
Fake-engineer detection | Identifies roles with "Engineer" in title but service/sales content |
Synthetic report | Frequency matrix + SNR + gap detection + cluster analysis |
Raw text cache | Stores raw job text in KB for re-scoring with different profiles |
Git commit | Every pipeline run auto-commits to your knowledge base |
🚀 Quick Start
Prerequisites
Python 3.12+
uv (faster pip alternative —
pip install uv)
Install
git clone https://github.com/outpost2026/linkedin-mcp-custom.git
cd linkedin-mcp-custom
uv syncAuthenticate (one-time)
.\linkedin-mcp.bat --login
# Opens a browser window — log into LinkedIn, then press EnterVerify session
.\linkedin-mcp.bat --status
# ✅ Session valid | page.url = https://www.linkedin.com/feed/Run the pipeline
# Full pipeline (scrapes only new jobs, skips existing KB entries)
.venv\Scripts\python scripts\run_pipeline.py --skip-existing
# Fast mode (reduced delays, no fingerprint — for quick tests)
.venv\Scripts\python scripts\run_pipeline.py --skip-existing --fast
# Partial run (first 15 jobs — for testing)
.venv\Scripts\python scripts\run_pipeline.py --limit 15
# Custom config + analysis profile
.venv\Scripts\python scripts\run_pipeline.py --config ~/.linkedin-mcp-custom/config.yaml --profile industrial
# Via MCP client
.\linkedin-mcp.bat
# Then in your MCP client: call analyze_saved_jobsOutput: agregovany_report.md + metadata_stacku.json + synteticky_report.md in your KB directory.
YAML Configuration
The pipeline uses a 3-layer YAML config (~/.linkedin-mcp-custom/config.yaml):
user: "default"
source:
max_pages: 10 # how many tracker pages to scan
runtime:
headless: true
delay_range: [3.0, 7.0] # anti-bot delay between jobs
page_timeout_ms: 30000
session_heartbeat: 30 # refresh auth every N jobs
fingerprint_mix: true # random viewport/UA/locale
analysis:
default: # baseline EROI profile
thresholds: { sledovat: 65, medium: 50, hranicni: 40 }
weights: { domain: 0.35, tech: 0.25, role: 0.20, growth: 0.10, formal: 0.05, location: 0.05 }
industrial: # custom profile — switch via --profile industrial
thresholds: { sledovat: 70, medium: 55, hranicni: 45 }
weights: { domain: 0.50, tech: 0.20, role: 0.15, growth: 0.05, formal: 0.05, location: 0.05 }📊 Example output (from 71 real jobs)
PIPELINE REPORT
============================================================
Conclusion: ok
Duration: 142.31s total
Job IDs found: 71 (70 already in KB, 1 new)
Jobs scored: 1
Errors: 0
Verdicts: {'SLEDOVAT': 2, 'MEDIUM': 8, 'HRANICNI': 3, 'NESLEDOVAT': 2}Full report: synteticky_report_analyza.md
🧠 EROI Scoring Model
6 dimensions
Dimension | Weight | What it measures |
Domain | 35% | Industrial automation (core) vs adjacent vs noise |
Tech | 25% | Skill overlap — content-aware match ratio × coverage |
Role | 20% | Engineering role vs "fake engineer" (service/sales) |
Growth | 10% | Strategic employer (Siemens, ABB, Thermo Fisher…) |
Formal | 5% | Degree requirements with flexibility detection |
Location | 5% | Remote/hybrid/CZ vs distant/office-only |
Thresholds
Score | Verdict |
≥65% | 🟢 SLEDOVAT (follow — apply now) |
50–64% | 🟡 MEDIUM (consider — mitigate gaps) |
40–49% | 🟡 HRANIČNÍ (borderline — only if time permits) |
<40% | 🔴 NESLEDOVAT (skip — no time allocation) |
Special patterns detected
Fake engineer: title says "Engineer" but content is service/sales → penalizes
roleElectronics manufacturing SMT/PCBA: caps
domainscore (adjacent, not core)Degree flexibility: "equivalent practical experience" found → adds ~5% to
formalPositioning match: strong
rolematch compensates for weakdomainNo-match penalty:
techscore drops sharply when key skills missing
🛠️ MCP Tools
Tool | Description |
| Full pipeline: scrape → EROI score → KB write → git commit |
| List all saved job IDs from LinkedIn tracker |
| Full posting text for a single job ID |
| EROI score a single job (avoids timeout) |
| Verify LinkedIn auth status with diagnostics |
Timeout strategy:
analyze_saved_jobsuses time-budgeted batch processing (default 45s). For full analysis, use the CLI pipeline or callanalyze_jobper job.
📁 Output structure
B2B-Knowledge-Base/
└── 02_ANALYZY/
└── 00_linkedin/
├── agregovany_report.md # Human-readable EROI entries
├── metadata_stacku.json # Machine-readable (schema v1.1)
└── synteticky_report_analyza.md # Market intelligence report🧪 Development
# Tests
.venv\Scripts\python -m pytest tests/ -v
# Lint
.venv\Scripts\python -m ruff check src/
# Type check
.venv\Scripts\python -m mypy src/Debugging known issues
See the pitevni_kniha (autopsy book) for 28 documented bugs, root causes, fixes, and engineering rules.
Known issue | Status |
MCP transport timeout for batch ops | ✅ Fixed (time-budget + per-job tool) |
Cookie lifecycle — silent expiry | ✅ Fixed (session cache + checkpoint detection) |
KB dedup fallback (industry=None) | ✅ Fixed |
Summary table non-idempotent | ✅ Fixed |
Pagination missing pages | ✅ Fixed |
CSS selector fragility | ✅ Fixed |
Refactor branch regression (34% → 100%) | ✅ Fixed (new baseline branch) |
Anti-bot vs. speed tradeoff | ✅ Configurable (--fast, --profile) |
Redundant scraping of known jobs | ✅ Fixed (--skip-existing) |
🤝 Contributing
PRs welcome! This project especially needs:
CI/CD pipeline — GitHub Actions for weekly scraping
Docker deployment — containerize the MCP server
More scorers — add dimensions (salary, benefits, team size)
UI — simple dashboard for browsing scored jobs
Translations — localize EROI labels for your market
Please read CONTRIBUTING.md first (coming soon).
📄 License
MIT — see LICENSE.
📈 Next iterations
Iterační backlog odvozený z 29 bug post-mortem záznamů a obscura-inspired pattern transferu. Každý návrh s hodnocením přínos/riziko.
# | Návrh | Přínos | Riziko | Doporučení |
1 | Optimalizovat page-turn na trackeru — zkrátit | ↓40% času (ušetří ~60-80s) | Nízké — rychlejší navigace, stále sekvenční | ✅ Teď — nejvyšší poměr přínos/riziko |
2 | Parallel per-job scraping — | 3-5× rychlejší (↓20-30s místo ~110s) | Vysoké — emergentní bot fingerprint (Z025) už jednou spadl z 98% na 34% | ❌ Počkat na lepší anti-bot strategii |
3 | CI/CD weekly scrape — rozchodit GitHub Actions workflow | Plně automatický monitoring | Střední — cookie export (Z021) vyžaduje ruční refresh každých pár týdnů | ⏳ Po stabilizaci skórovacího profilu |
4 | Synthetic report 2.0 — trend analýza, skill gap evoluce, časové řady | Vyšší vypovídací hodnota než statický snapshot | Nízké — jen nová analytická vrstva | ⏳ Vyžaduje 2-3 historické snapshoty |
5 | Multi-portál (Jobs.cz, Profesia) — nový scraper per obscura worker pattern | Širší pokrytí trhu | Střední — předčasná abstrakce (obscura transfer sekce 8.3) | ❌ Počkat na 100+ jobů v KB |
6 | Auth guard deduplication — parametr | Eliminace redundantní navigace na feed | Nízké — čistě refaktor bez změny chování | ✅ Teď — navazuje na fix Z029 |
7 | Sbírat job IDs z API interceptu místo DOM/script scanningu (Z018, Z013) | Rychlejší + spolehlivější extrakce | Střední — API formát se může změnit | ⏳ Až LinkedIn změní aktuální strukturu |
Priority
Kdy | Co |
Teď (1-2 běhy) | #1 page-turn optimalizace + #6 auth dedup |
Brzy (3-5 běhů) | #3 CI/CD + #4 report 2.0 |
Až bude dost dat (100+) | #5 multi-portál |
Až LinkedIn zlomí aktuální extrakci | #7 API intercept |
🧭 Why this exists
Built by a systems integration engineer who got tired of LinkedIn's noise-to-signal problem. The name "EROI" comes from energy-return-on-investment — a concept borrowed from off-grid solar (which the author also builds). The same principle applies to job hunting: don't spend energy where the return is negative.
"LinkedIn recommends everything. This tool tells you what matters."
🔗 Links
Available Tools
5 toolsanalyze_saved_jobsAnalyze Saved JobsARead-only
Full pipeline: scrape saved jobs -> EROI score -> KB write-back.
Scrapes all saved jobs from LinkedIn
For each job, extracts full details
Runs EROI analysis (domain/tech/role/growth/formal/location)
Detects skill gaps against your portfolio
Writes structured report + metadata to B2B-Knowledge-Base
Git commits the changes
| Name | Required | Description | Default |
|---|---|---|---|
| write_to_kb | No | If True, appends results to B2B-Knowledge-Base repo. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states write operations (scraping, writing to KB, Git commit), but annotations declare readOnlyHint=true, which directly contradicts the description. This is a serious inconsistency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a summary line followed by a clear bullet list. Every sentence adds value and is front-loaded for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully explains the tool's actions and pipeline steps. Although annotations are contradictory, the description itself is complete for understanding behavior. The presence of an output schema covers return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter write_to_kb is described in the schema with clear semantics (if True, appends to KB). The description adds context that the pipeline runs regardless, making the parameter's effect well-understood.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the full pipeline: scraping saved jobs, running EROI analysis, detecting skill gaps, and writing results to KB with Git commit. It distinguishes itself from sibling tools like get_saved_jobs by offering a comprehensive analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (for full analysis and write-back), but it does not explicitly mention when not to use it or suggest alternatives like get_saved_jobs for simple listing tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_session_toolClose SessionBRead-only
Close the browser session and cleanup resources.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description claims a destructive action ('close', 'cleanup'), but annotations declare readOnlyHint=true, which is a contradiction. No additional behavioral traits are disclosed beyond the conflicting information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no superfluous words. It is front-loaded and efficiently conveys the action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the annotation contradiction, the description is incomplete and misleading. For a tool with no parameters and an output schema, more clarity on the contradiction and side effects would be needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema coverage is 100% by default. The description adds no parameter information, but none is needed. Baseline score of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action (close) and the resource (browser session), and distinguishes this tool from siblings by its unique purpose of session termination.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., health_check, analyze_saved_jobs). The description only states what it does without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_job_detailsGet Job DetailsARead-only
Get full details for a specific LinkedIn job posting.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | LinkedIn numeric job ID (e.g. '4252026496'). Get these from get_saved_jobs output. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. The description is consistent with these annotations but adds no additional behavioral context beyond what is already provided by the structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no extraneous words. Every word is necessary and directly conveys the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one parameter, output schema exists) and the description adequately states its purpose. However, it could be more complete by explicitly linking to get_saved_jobs or mention the output schema, though annotations and schema largely compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter (job_id) described as 'LinkedIn numeric job ID... Get these from get_saved_jobs output.' The tool description adds no additional parameter information beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'full details for a specific LinkedIn job posting.' It specifies the scope (specific job) and distinguishes from sibling tools like get_saved_jobs (which retrieves a list) and analyze_saved_jobs (which analyzes).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives. It is implied from the name and schema that it should be used after get_saved_jobs to get details of a specific job, but no guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_saved_jobsGet Saved JobsARead-only
Get saved jobs from LinkedIn's /jobs-tracker/ page.
Returns saved jobs raw text and a list of numeric job IDs. Pass any job_id to get_job_details for full posting text.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and openWorldHint. The description adds context about the data source (LinkedIn page) and return format (raw text and numeric IDs), enhancing transparency without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences that front-load the purpose, and every word adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and presence of output schema, the description adequately covers what the tool does and suggests next steps. It is complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% due to zero parameters, so baseline is 3. The description adds value by describing the output, which compensates for not needing parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets saved jobs from LinkedIn's /jobs-tracker/ page, specifying the output includes raw text and numeric job IDs. It differentiates from sibling get_job_details by indicating a follow-up use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use this tool (to get saved jobs) and hints at using get_job_details with a job_id, but does not explicitly state when not to use it or alternatives beyond mentioning the sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkHealth CheckARead-only
Check server health and version.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates this is a read operation. The description adds minimal extra behavioral context beyond 'check health and version', but does not contradict the annotation. It would benefit from stating side effects or the nature of the check.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded with the core action. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (no parameters, clear annotations, and an output schema present), the description is adequate. It could be slightly more informative about what the check entails, but the presence of an output schema reduces the need for detailing return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters in the input schema, so the description has no burden to explain them. The baseline score of 3 applies because schema coverage is 100% and no additional semantics are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks server health and version, which is a specific verb and resource. It is distinct from sibling tools that deal with jobs and sessions, leaving no ambiguity about its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, or any prerequisites or conditions. The description simply states what it does, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
5 tool updates
v0.1.0- First observed
analyze_saved_jobs - First observed
close_session_tool - First observed
get_job_details - First observed
get_saved_jobs - First observed
health_check
TDQS
Each tool has a clearly distinct purpose: analyze_saved_jobs is a complex pipeline, get_saved_jobs lists jobs, get_job_details retrieves details, close_session_tool handles cleanup, and health_check is a utility. No overlap or ambiguity.
Naming is inconsistent: analyze_saved_jobs and close_session_tool use different conventions (the latter with a '_tool' suffix), while get_job_details and get_saved_jobs follow a standard verb_noun pattern, and health_check is a noun_noun. No consistent verb prefix or suffix style.
With 5 tools, the server is appropriately scoped for a LinkedIn jobs helper. It covers the main operations without overloading, though the health_check and close_session tools are minor utilities that add slight overhead.
The tool surface covers listing saved jobs, getting details, and an analysis pipeline, but lacks operations for removing or updating saved jobs, which are common in a jobs management context. The analysis tool is comprehensive but the rest is somewhat sparse.
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
ATS resume scoring, job analysis, interview prep, and auto-apply that verifies each submission.
Turn the LinkedIn posts you save into a knowledge base your assistant can search and cite.
Analyze job listings against your resume, track applications, and generate cover letters.
LinkedIn outreach, commenting, scheduling, and data via Claude and human approval gates.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceHelps users find suitable LinkedIn job opportunities by automatically scraping listings, analyzing compatibility with user profiles using AI, and sending custom match reports via email.1-
- AlicenseNot gradedqualityDmaintenanceProvides tools for automating LinkedIn job post search and management. Job opportunities often appear in LinkedIn posts first, before they're posted on traditional job boards. By monitoring LinkedIn posts, you can discover opportunities earlier and get a competitive advantage in your job search.167ISC
- FlicenseNot gradedqualityDmaintenanceAutomates resume tailoring by formatting job descriptions, using AI to customize resumes for specific positions, and saving both jobs and tailored resumes to organized folders.-
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to search, filter, and extract job listings from LinkedIn using an automated headless browser with semantic AI filtering and deduplication.25MIT
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/outpost2026/linkedin-mcp-analyzer'
If you have feedback or need assistance with the MCP directory API, please join our Discord server