{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"github-stickerdaniel--linkedin-mcp-server","slug":"stickerdaniel--linkedin-mcp-server","name":"linkedin-mcp-server","type":"mcp","url":"https://github.com/stickerdaniel/linkedin-mcp-server","page_url":"https://unfragile.ai/stickerdaniel--linkedin-mcp-server","categories":["mcp-servers"],"tags":["ai-agents","anthropic","chatgpt","chatgpt-desktop","claude","claude-ai","claude-code","claude-desktop","desktop-extension","dxt","linkedin","linkedin-api","linkedin-mcp","linkedin-profile-scraper","linkedin-scraper","mcp","mcp-server","model-context-protocol","python"],"pricing":{"model":"open_source","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"github-stickerdaniel--linkedin-mcp-server__cap_0","uri":"capability://tool.use.integration.mcp.native.linkedin.profile.retrieval.with.persistent.browser.session.management","name":"mcp-native linkedin profile retrieval with persistent browser session management","description":"Exposes LinkedIn person profiles as MCP tools callable by Claude and other MCP-compatible AI assistants. Uses Patchright (a hardened Playwright fork) to maintain persistent browser profiles stored locally (~/.linkedin-mcp/profile) with cookie-based authentication, eliminating repeated login flows. Implements a 'one-section-one-navigation' architecture where each profile section (work history, education, skills, certifications, posts) maps to a discrete URL, allowing the AI to request only needed data and minimize page loads.","intents":["I want Claude to fetch a LinkedIn profile and analyze someone's career trajectory","I need to extract work history and skills from multiple profiles without manual scraping","I want to build an AI agent that enriches CRM data with LinkedIn profile information","I need to retrieve recent posts from a specific person's profile for analysis"],"best_for":["AI agent builders integrating LinkedIn data into Claude workflows","Recruitment automation teams using Claude for candidate research","Sales development teams automating prospect enrichment via AI assistants"],"limitations":["Requires valid LinkedIn credentials and active account; LinkedIn account suspension will block all operations","Sequential execution lock serializes all tool calls to avoid detection, adding latency for concurrent requests","Patchright-based browser automation may break if LinkedIn significantly changes DOM structure or anti-bot mechanisms","No built-in caching of profile data; each request triggers a fresh page load and scrape"],"requires":["Python 3.9+","Valid LinkedIn account credentials (email/password or 2FA)","Claude Desktop or MCP-compatible AI assistant","Patchright browser automation library (included in dependencies)"],"input_types":["LinkedIn profile URL or username (string)","Section identifier (work, education, skills, certifications, posts)"],"output_types":["Structured JSON with profile metadata, work history array, education array, skills array, certifications array, recent posts array"],"categories":["tool-use-integration","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-stickerdaniel--linkedin-mcp-server__cap_1","uri":"capability://tool.use.integration.company.profile.and.feed.extraction.with.section.based.navigation","name":"company profile and feed extraction with section-based navigation","description":"Retrieves comprehensive company data from LinkedIn including overview, employees, recent feed posts, and company metadata through MCP tools. Implements the same 'one-section-one-navigation' pattern as person profiles, where each company section (overview, employees, feed) maps to a specific URL. Uses Patchright browser automation to parse company pages and extract structured data without triggering rate limits or detection.","intents":["I want to analyze a company's recent LinkedIn activity and employee growth trends","I need to fetch company metadata (size, industry, location) for a list of target companies","I want Claude to research a company's recent posts to understand their messaging and culture","I need to extract employee information from a company page for recruitment targeting"],"best_for":["Sales intelligence teams using Claude to research target accounts","Recruitment teams automating company research and employee discovery","Market research teams analyzing company activity and growth signals"],"limitations":["Company pages may have dynamic content that requires JavaScript rendering; Patchright handles this but adds latency","Employee lists on company pages are paginated; the tool may not retrieve all employees in a single call","LinkedIn frequently updates company page layouts, requiring maintenance of DOM selectors","Sequential execution lock means multiple company profile requests queue and execute serially"],"requires":["Python 3.9+","Valid LinkedIn account with authenticated session","Claude Desktop or MCP-compatible AI assistant","Company LinkedIn URL or company ID"],"input_types":["Company LinkedIn URL or company ID (string)","Section identifier (overview, employees, feed)"],"output_types":["Structured JSON with company metadata (name, industry, size, location, description), employee list, recent feed posts with engagement metrics"],"categories":["tool-use-integration","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-stickerdaniel--linkedin-mcp-server__cap_10","uri":"capability://automation.workflow.docker.containerization.with.docker.compose.orchestration","name":"docker containerization with docker-compose orchestration","description":"Provides Docker and docker-compose configurations for containerized deployment of the LinkedIn MCP server. Enables users to run the server in isolated containers with predefined dependencies, environment variables, and volume mounts for profile persistence. Supports both standalone Docker runs and multi-container orchestration via docker-compose, simplifying deployment across different environments (local, cloud, CI/CD).","intents":["I want to deploy the LinkedIn MCP server in Docker without managing Python dependencies","I need to run the server in a cloud environment (AWS, GCP, Azure) with containerization","I want to persist LinkedIn profiles across container restarts using Docker volumes","I need to integrate the LinkedIn MCP server into a larger docker-compose stack"],"best_for":["DevOps teams deploying LinkedIn MCP servers in containerized environments","Cloud-native organizations using Kubernetes or Docker Compose","Developers who want to avoid local Python environment setup","Teams running multiple server instances with different LinkedIn accounts"],"limitations":["Docker images add overhead compared to native Python execution; startup time is slower","Volume mounts for profile persistence require careful configuration; incorrect mounts will lose authentication state","Docker networking may complicate Claude Desktop integration if the server runs in a container on a different host","Container resource limits (CPU, memory) may impact performance for concurrent requests","Docker image maintenance is required to keep dependencies and security patches up-to-date"],"requires":["Docker 20.10+ or Docker Desktop","docker-compose 1.29+ (for docker-compose deployments)","Valid LinkedIn credentials (passed via environment variables or .env file)","Understanding of Docker volumes and networking"],"input_types":["Dockerfile configuration","docker-compose.yml with service definitions","Environment variables for credentials and configuration"],"output_types":["Running Docker container with LinkedIn MCP server","Persistent volume for profile storage","Network interface for Claude Desktop or other MCP clients"],"categories":["automation-workflow","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-stickerdaniel--linkedin-mcp-server__cap_11","uri":"capability://tool.use.integration.claude.desktop.integration.with.manifest.based.tool.registration","name":"claude desktop integration with manifest-based tool registration","description":"Integrates with Claude Desktop through a manifest.json file that registers the LinkedIn MCP server as a tool provider. The manifest defines tool schemas (input parameters, output types) and server connection details, enabling Claude Desktop to discover and invoke LinkedIn tools. Uses Claude Desktop's native MCP client to communicate with the server via stdio or network sockets.","intents":["I want to add LinkedIn tools to Claude Desktop without manual configuration","I need to understand how Claude Desktop discovers and registers MCP servers","I want to customize tool schemas and descriptions for Claude's tool selection","I need to debug Claude Desktop's integration with the LinkedIn MCP server"],"best_for":["Claude Desktop users who want seamless LinkedIn integration","Developers building MCP servers for Claude Desktop","Teams standardizing on Claude Desktop as their primary AI interface"],"limitations":["Claude Desktop integration requires manual manifest.json configuration; changes require server restart","Tool schemas in manifest.json must be kept in sync with actual tool implementations; schema drift causes errors","Claude Desktop's tool selection is based on tool descriptions; poorly written descriptions may lead to incorrect tool invocation","Debugging Claude Desktop's tool invocation requires access to Claude Desktop logs, which may not be easily accessible","Claude Desktop version compatibility may affect MCP server functionality; older versions may not support all MCP features"],"requires":["Claude Desktop 0.1.0+ with MCP support","manifest.json file with tool definitions","Running LinkedIn MCP server instance","Network connectivity between Claude Desktop and MCP server (stdio or socket)"],"input_types":["manifest.json with tool schemas and server configuration","Tool invocation requests from Claude Desktop"],"output_types":["Tool responses returned to Claude Desktop","Implicit: Claude Desktop's tool selection and invocation logic"],"categories":["tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-stickerdaniel--linkedin-mcp-server__cap_12","uri":"capability://data.processing.analysis.one.section.one.navigation.scraping.architecture.for.minimal.page.loads","name":"one-section-one-navigation scraping architecture for minimal page loads","description":"Implements a 'one-section-one-navigation' design pattern where each data section (person work history, company overview, job details) maps to exactly one URL. This allows Claude to request only the specific data it needs without loading entire profiles or pages. Reduces page loads, minimizes rate-limit exposure, and improves reliability by limiting the DOM parsing surface area. Each tool corresponds to a discrete navigation action, enabling granular data fetching.","intents":["I want to fetch only a person's work history without loading their entire profile","I need to minimize page loads to avoid LinkedIn rate limits","I want to build efficient AI agents that request only the data they need","I need to understand how the scraping architecture minimizes detection risk"],"best_for":["Developers building high-volume LinkedIn scraping workflows","Teams concerned about rate limits and account restrictions","AI agent builders optimizing for latency and efficiency","Researchers studying efficient web scraping architectures"],"limitations":["Granular section-based tools require more tool definitions in manifest.json; more tools to maintain","Some LinkedIn data requires multiple page loads to assemble (e.g., complete work history with company details); users must chain multiple tool calls","LinkedIn's page structure may change, breaking the one-section-one-navigation mapping; maintenance is required","Some sections may not be independently navigable; the architecture assumes each section has a discrete URL"],"requires":["Python 3.9+","Understanding of LinkedIn's URL structure and page organization","Patchright browser automation library"],"input_types":["Section identifier (work, education, skills, overview, feed, etc.)","Profile or company URL"],"output_types":["Structured data for the requested section only","No extraneous data from other sections"],"categories":["data-processing-analysis","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-stickerdaniel--linkedin-mcp-server__cap_2","uri":"capability://tool.use.integration.job.search.and.filtering.with.structured.query.parameters","name":"job search and filtering with structured query parameters","description":"Enables Claude to search LinkedIn job listings with filters (keywords, location, experience level, job type, salary range) and retrieve detailed job information by ID. Implements structured search parameters that map to LinkedIn's search API query format, allowing the AI to construct filtered job searches without manual URL manipulation. Returns job metadata including title, company, location, salary, description, and application requirements.","intents":["I want Claude to search for software engineering jobs in San Francisco with 3+ years experience required","I need to fetch detailed information about a specific job posting to analyze requirements","I want to build an AI agent that finds jobs matching a candidate's profile and skills","I need to search jobs by company, location, and salary range for market analysis"],"best_for":["Recruitment automation teams building AI-powered job matching systems","Career coaching platforms using Claude to recommend jobs to users","Job market research teams analyzing hiring trends and salary data","Talent acquisition teams automating job opportunity discovery"],"limitations":["LinkedIn job search results are paginated; the tool may not retrieve all matching jobs in a single call","Job postings are frequently updated or removed; cached results may become stale","Some job details (salary, benefits) are optional fields and may not be present for all postings","Search filters are limited to LinkedIn's native filter set; custom filtering logic must be implemented in the AI layer"],"requires":["Python 3.9+","Valid LinkedIn account with authenticated session","Claude Desktop or MCP-compatible AI assistant","Job search parameters (keywords, location, filters)"],"input_types":["Search query string (keywords)","Filter parameters: location, experience level, job type, salary range, company","Job ID for detailed retrieval"],"output_types":["Array of job listing objects with title, company, location, salary, job description, requirements, application link","Detailed job posting with full description, company info, and application metadata"],"categories":["tool-use-integration","search-retrieval"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-stickerdaniel--linkedin-mcp-server__cap_3","uri":"capability://tool.use.integration.inbox.message.retrieval.and.conversation.search.with.threading.support","name":"inbox message retrieval and conversation search with threading support","description":"Retrieves LinkedIn inbox conversations and enables message search across threads. Implements conversation listing (fetching recent inbox threads) and message search (finding specific messages within conversations). Uses Patchright to navigate LinkedIn's messaging interface and extract conversation metadata (participants, timestamps, message content). Maintains conversation threading context for multi-turn message analysis.","intents":["I want Claude to search my LinkedIn messages for job opportunities or recruiter outreach","I need to retrieve recent conversations to analyze networking patterns","I want to build an AI agent that summarizes LinkedIn messages and flags important conversations","I need to extract recruiter messages for analysis and response automation"],"best_for":["Sales teams using Claude to analyze inbound LinkedIn messages for leads","Recruitment teams automating message triage and response","Professionals using AI to summarize and organize LinkedIn conversations","Talent acquisition teams extracting recruiter outreach for analysis"],"limitations":["LinkedIn messaging interface is heavily JavaScript-dependent; rendering adds latency to message retrieval","Message search is limited to the authenticated user's inbox; cannot access other users' messages","Conversation history may be truncated if threads are very long; pagination may be required","Sequential execution lock means multiple message searches queue serially, adding latency for bulk operations"],"requires":["Python 3.9+","Valid LinkedIn account with authenticated session","Claude Desktop or MCP-compatible AI assistant","Access to inbox (standard LinkedIn account permission)"],"input_types":["Search query string (keywords, sender name, date range)","Conversation ID for detailed thread retrieval","Pagination parameters (offset, limit)"],"output_types":["Array of conversation objects with participants, last message timestamp, message preview, unread status","Detailed conversation thread with full message history, timestamps, and participant metadata"],"categories":["tool-use-integration","search-retrieval"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-stickerdaniel--linkedin-mcp-server__cap_4","uri":"capability://tool.use.integration.connection.request.sending.with.personalized.message.support","name":"connection request sending with personalized message support","description":"Enables Claude to send LinkedIn connection requests programmatically, optionally including personalized messages. Implements form submission via Patchright to navigate LinkedIn's connection request flow, including message composition and submission. Handles LinkedIn's rate limiting and connection request validation (e.g., preventing duplicate requests to the same person).","intents":["I want Claude to send connection requests to a list of prospects with personalized messages","I need to automate networking outreach while maintaining personalization","I want to build an AI agent that identifies prospects and sends targeted connection requests","I need to scale relationship-building by automating initial outreach"],"best_for":["Sales development teams automating prospecting and outreach","Recruitment teams building talent pipelines through automated networking","Entrepreneurs and solopreneurs scaling relationship-building","AI agent builders creating autonomous networking workflows"],"limitations":["LinkedIn enforces strict rate limits on connection requests; sending too many requests in short time windows triggers account restrictions","Connection requests with messages are rate-limited more aggressively than requests without messages","Cannot send connection requests to users who have already received a request or are already connected","Personalized messages must comply with LinkedIn's content policy; spam-like messages may trigger account warnings","Sequential execution lock means bulk connection requests queue and execute serially, limiting throughput"],"requires":["Python 3.9+","Valid LinkedIn account with authenticated session","Claude Desktop or MCP-compatible AI assistant","Target user LinkedIn profile URL or user ID","Optional: personalized message text"],"input_types":["Target user LinkedIn profile URL or user ID (string)","Optional personalized message (string, max 300 characters per LinkedIn limits)","Optional metadata (reason for connection, mutual connections)"],"output_types":["Success/failure status (boolean)","Response metadata: request ID, timestamp, message (if included), confirmation status"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-stickerdaniel--linkedin-mcp-server__cap_5","uri":"capability://automation.workflow.sequential.tool.execution.middleware.with.rate.limit.protection","name":"sequential tool execution middleware with rate-limit protection","description":"Implements a 'Sequential Middleware Lock' that serializes all MCP tool calls within a single process to prevent LinkedIn from detecting multiple concurrent sessions from the same account. Uses a queue-based execution model where simultaneous tool invocations are queued and executed serially. This design decision protects against account suspension and detection while maintaining a single authenticated browser session across all tools.","intents":["I want to ensure my LinkedIn account doesn't get flagged when Claude makes multiple rapid requests","I need to build reliable AI agents that respect LinkedIn's anti-bot detection mechanisms","I want to prevent concurrent session detection that could trigger account restrictions","I need to understand the latency trade-offs of serialized vs concurrent execution"],"best_for":["AI agent builders prioritizing account safety over throughput","Teams running long-lived Claude workflows against LinkedIn","Developers building production systems that cannot risk account suspension","Organizations with strict compliance requirements around automation"],"limitations":["Sequential execution adds latency for concurrent requests; a 10-request batch may take 10x longer than parallel execution","No built-in request prioritization; all requests queue in FIFO order regardless of importance","Queue depth is unbounded; very large request batches may consume significant memory","No timeout mechanism for stuck requests; a single slow request blocks the entire queue","Single-process limitation means horizontal scaling requires multiple server instances with separate LinkedIn accounts"],"requires":["Python 3.9+","Single-process MCP server instance (no multi-process parallelization)","Understanding of MCP tool call semantics and async/await patterns"],"input_types":["MCP tool call requests (any tool in the LinkedIn MCP server)","Implicit: execution context and queue state"],"output_types":["Serialized tool responses in FIFO execution order","Implicit: queue depth and execution latency metrics"],"categories":["automation-workflow","safety-moderation"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-stickerdaniel--linkedin-mcp-server__cap_6","uri":"capability://memory.knowledge.persistent.browser.profile.management.with.cookie.based.authentication","name":"persistent browser profile management with cookie-based authentication","description":"Manages persistent browser profiles stored locally (default: ~/.linkedin-mcp/profile) that maintain LinkedIn authentication state (cookies, session tokens) across server restarts. Eliminates repeated login flows by reusing authenticated browser contexts. Implements profile initialization on first run (prompting for credentials) and automatic session refresh on subsequent runs. Uses Patchright to manage browser lifecycle and profile persistence.","intents":["I want to set up a LinkedIn MCP server once and reuse authentication across multiple Claude sessions","I need to avoid repeated login prompts when running long-lived AI agents","I want to understand how authentication state is persisted and where credentials are stored","I need to rotate or update LinkedIn credentials without rebuilding the server"],"best_for":["Developers deploying LinkedIn MCP servers in production or long-running environments","Teams running Claude agents that make multiple LinkedIn requests across sessions","Users who want to minimize manual interaction with the MCP server setup"],"limitations":["Browser profiles are stored unencrypted on disk; requires filesystem-level security (file permissions, disk encryption)","LinkedIn session tokens expire; the server may require periodic re-authentication if tokens become invalid","Profile directory must be writable by the process running the MCP server; permission issues will block startup","Patchright browser instances consume significant memory; multiple profiles or long-running sessions may exhaust resources","Profile corruption (e.g., from unexpected process termination) may require manual profile deletion and re-authentication"],"requires":["Python 3.9+","Writable filesystem directory for profile storage (~/.linkedin-mcp/profile or custom path)","Valid LinkedIn credentials (email/password) for initial authentication","Patchright browser automation library"],"input_types":["LinkedIn email and password (on first run only)","Optional: custom profile directory path (via environment variable or config)"],"output_types":["Persistent browser profile directory with cookies, session storage, and browser cache","Implicit: authenticated Patchright browser context reused across tool calls"],"categories":["memory-knowledge","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-stickerdaniel--linkedin-mcp-server__cap_7","uri":"capability://tool.use.integration.fastmcp.framework.integration.for.mcp.protocol.compliance","name":"fastmcp framework integration for mcp protocol compliance","description":"Implements the Model Context Protocol (MCP) server using the FastMCP framework, which handles MCP protocol serialization, tool registration, and request/response lifecycle management. Exposes all LinkedIn scraping tools as MCP-compliant tools callable by Claude Desktop and other MCP-compatible AI assistants. Manages tool schema definition (input parameters, output types) and error handling within the MCP protocol contract.","intents":["I want to make LinkedIn tools available to Claude Desktop without custom integration code","I need to ensure my LinkedIn tools are compatible with any MCP-compliant AI assistant","I want to understand how tool schemas are defined and validated in the MCP protocol","I need to debug tool calls and responses within the MCP protocol framework"],"best_for":["Claude Desktop users integrating LinkedIn tools into their workflows","Developers building MCP-compatible AI assistants that need LinkedIn integration","Teams standardizing on MCP as a protocol for AI tool integration","Organizations evaluating MCP as an alternative to REST APIs for AI tool exposure"],"limitations":["FastMCP is a relatively new framework; documentation and community support are limited compared to established frameworks","MCP protocol overhead adds latency compared to direct function calls; each tool call requires serialization and deserialization","Tool schemas must be manually defined in FastMCP; schema changes require code updates and server restart","Error handling is constrained by MCP protocol error types; custom error semantics may not map cleanly","MCP protocol is text-based (JSON-RPC); binary data (images, files) must be base64-encoded, adding overhead"],"requires":["Python 3.9+","FastMCP framework (included in dependencies)","Claude Desktop 0.1.0+ or other MCP-compatible AI assistant","Understanding of MCP protocol basics (tools, resources, prompts)"],"input_types":["MCP tool call requests (JSON-RPC format)","Tool parameters as defined in tool schema"],"output_types":["MCP tool response (JSON-RPC format)","Tool output as defined in tool schema"],"categories":["tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-stickerdaniel--linkedin-mcp-server__cap_8","uri":"capability://safety.moderation.patchright.based.bot.detection.evasion.for.linkedin.automation","name":"patchright-based bot detection evasion for linkedin automation","description":"Uses Patchright, a hardened fork of Playwright designed specifically for automation evasion, to bypass LinkedIn's advanced bot detection mechanisms. Patchright patches Playwright's WebDriver exposure, randomizes browser fingerprints, and implements anti-detection heuristics that prevent LinkedIn from identifying automated browser sessions. This enables reliable scraping without triggering account restrictions or CAPTCHAs.","intents":["I want to scrape LinkedIn without getting my account flagged or blocked","I need to understand what makes Patchright more reliable than standard Playwright for LinkedIn","I want to build long-running LinkedIn automation that doesn't trigger detection","I need to know the limitations of bot detection evasion and when it might fail"],"best_for":["Developers building production LinkedIn automation that must avoid detection","Teams running long-lived AI agents against LinkedIn","Organizations that cannot risk account suspension due to detection","Researchers studying bot detection evasion techniques"],"limitations":["Patchright is a third-party fork of Playwright; it may lag behind Playwright's latest features and security patches","Bot detection evasion is an arms race; LinkedIn may update detection mechanisms that break Patchright's evasion techniques","Patchright's evasion techniques are not publicly documented; users must trust the maintainer's implementation","Some evasion techniques (e.g., fingerprint randomization) may introduce non-deterministic behavior that breaks reproducibility","Patchright adds overhead compared to standard Playwright; browser startup and page load times may be slower"],"requires":["Python 3.9+","Patchright library (included in dependencies)","Understanding that bot detection evasion is not guaranteed and may fail unpredictably"],"input_types":["Implicit: browser automation requests (page navigation, element interaction, data extraction)"],"output_types":["Implicit: browser responses and page content"],"categories":["safety-moderation","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-stickerdaniel--linkedin-mcp-server__cap_9","uri":"capability://automation.workflow.configuration.management.with.environment.variables.and.credential.handling","name":"configuration management with environment variables and credential handling","description":"Manages server configuration through environment variables (.env file) and credential storage, allowing users to customize LinkedIn credentials, profile directory, and server behavior without code changes. Implements credential validation on startup and provides clear error messages for missing or invalid configuration. Supports both interactive credential prompts (first run) and non-interactive credential loading (subsequent runs).","intents":["I want to configure the LinkedIn MCP server with my credentials without editing code","I need to understand what configuration options are available and how to set them","I want to deploy the server in different environments (local, Docker, cloud) with different credentials","I need to rotate credentials or change the profile directory without rebuilding the server"],"best_for":["Developers deploying LinkedIn MCP servers in production","Teams managing multiple server instances with different LinkedIn accounts","Users who want to avoid hardcoding credentials in code or config files","Organizations with credential rotation or security policies"],"limitations":["Environment variables are visible in process listings and shell history; not suitable for highly sensitive environments",".env files are stored in plaintext on disk; requires filesystem-level security (file permissions, disk encryption)","No built-in credential encryption; credentials are stored and transmitted in plaintext","Configuration validation is limited to presence checks; invalid credential formats are only caught at runtime","No support for credential rotation or expiration; users must manually update credentials"],"requires":["Python 3.9+",".env file in the server directory or environment variables set in the shell","Valid LinkedIn credentials (email/password)","Optional: custom profile directory path"],"input_types":["Environment variables: LINKEDIN_EMAIL, LINKEDIN_PASSWORD, LINKEDIN_PROFILE_DIR",".env file with key=value pairs"],"output_types":["Validated configuration object with credentials and paths","Error messages for missing or invalid configuration"],"categories":["automation-workflow","safety-moderation"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":49,"verified":false,"data_access_risk":"high","permissions":["Python 3.9+","Valid LinkedIn account credentials (email/password or 2FA)","Claude Desktop or MCP-compatible AI assistant","Patchright browser automation library (included in dependencies)","Valid LinkedIn account with authenticated session","Company LinkedIn URL or company ID","Docker 20.10+ or Docker Desktop","docker-compose 1.29+ (for docker-compose deployments)","Valid LinkedIn credentials (passed via environment variables or .env file)","Understanding of Docker volumes and networking"],"failure_modes":["Requires valid LinkedIn credentials and active account; LinkedIn account suspension will block all operations","Sequential execution lock serializes all tool calls to avoid detection, adding latency for concurrent requests","Patchright-based browser automation may break if LinkedIn significantly changes DOM structure or anti-bot mechanisms","No built-in caching of profile data; each request triggers a fresh page load and scrape","Company pages may have dynamic content that requires JavaScript rendering; Patchright handles this but adds latency","Employee lists on company pages are paginated; the tool may not retrieve all employees in a single call","LinkedIn frequently updates company page layouts, requiring maintenance of DOM selectors","Sequential execution lock means multiple company profile requests queue and execute serially","Docker images add overhead compared to native Python execution; startup time is slower","Volume mounts for profile persistence require careful configuration; incorrect mounts will lose authentication state","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.5010783900517176,"quality":0.5,"ecosystem":0.6000000000000001,"match_graph":0.25,"freshness":0.75,"weights":{"adoption":0.25,"quality":0.25,"ecosystem":0.15,"match_graph":0.23,"freshness":0.12}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"active","updated_at":"2026-05-24T12:16:22.064Z","last_scraped_at":"2026-05-03T13:56:59.049Z","last_commit":"2026-05-03T10:08:36Z"},"community":{"stars":1739,"forks":330,"weekly_downloads":null,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=stickerdaniel--linkedin-mcp-server","compare_url":"https://unfragile.ai/compare?artifact=stickerdaniel--linkedin-mcp-server"}},"signature":"lKJQAtY+mFEJGvbt7eGQ428JZI4lrL8CAn9ZRiYA/wn0sw7rHhht4iDT5ge4owr2UaudTzA078jybnkqBMg3Dg==","signedAt":"2026-06-20T06:56:28.324Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/stickerdaniel--linkedin-mcp-server","artifact":"https://unfragile.ai/stickerdaniel--linkedin-mcp-server","verify":"https://unfragile.ai/api/v1/verify?slug=stickerdaniel--linkedin-mcp-server","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}