@maheidem/linkedin-mcp
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., "@@maheidem/linkedin-mcpCreate a LinkedIn post about AI trends for tech professionals"
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.
@maheidem/linkedin-mcp
A comprehensive LinkedIn API MCP (Model Context Protocol) server that integrates seamlessly with Claude Desktop/Code. This package provides full LinkedIn functionality including post creation, profile optimization, content generation, and analytics - all accessible through Claude's natural language interface.
π Quick Start
Install and configure with a single command:
npx @maheidem/linkedin-mcp installThat's it! The installer will:
β Install the MCP server
β Automatically configure Claude Desktop/Code
β Set up token storage
β Provide setup instructions
Related MCP server: LinkedIn Intelligence MCP Server
π Features
β¨ Core Functionality
π LinkedIn Posting: Create and publish posts with full formatting
π Profile Analytics: Get detailed insights and optimization recommendations
π Content Analytics: Track post performance and engagement metrics
π― Content Generation: AI-powered post creation with industry best practices
π€ Profile Management: Update and optimize LinkedIn profiles
π Secure OAuth: Robust token management with automatic refresh
π Developer Features
π± Cross-Platform: Works on Windows, macOS, and Linux
π§ CLI Management: Easy installation, configuration, and maintenance
π Comprehensive API: All LinkedIn REST API endpoints available
π Security First: Secure token storage and handling
π Full Documentation: Complete API reference and examples
π¦ Installation Methods
Method 1: NPX Install (Recommended)
npx @maheidem/linkedin-mcp installMethod 2: Global Install + Setup
npm install -g @maheidem/linkedin-mcp
linkedin-mcp installMethod 3: Local Install
npm install @maheidem/linkedin-mcp
npx linkedin-mcp installπ§ CLI Commands
Installation & Setup
# Install and configure for Claude
linkedin-mcp install
# Check installation status
linkedin-mcp status
# Set up LinkedIn OAuth credentials
linkedin-mcp auth
# Remove configuration
linkedin-mcp uninstallUsage Examples
# Check if everything is working
linkedin-mcp status
# Set up authentication
linkedin-mcp authπ Authentication Setup
After installation, you need to set up LinkedIn OAuth:
Create LinkedIn App:
Go to LinkedIn Developers
Create a new app
Note your Client ID and Client Secret
Configure Redirect URI:
Add
http://localhost:3000/callbackto your app's redirect URIs
Set Up Credentials:
linkedin-mcp authComplete OAuth Flow:
Use the LinkedIn OAuth flow to get an access token
The token will be automatically managed by the MCP server
π― Usage with Claude
Once installed, you can use LinkedIn functionality directly in Claude:
Creating Posts
Create a LinkedIn post about the latest developments in AI, targeting ML engineers and including relevant hashtags.Profile Optimization
Analyze my LinkedIn profile and provide optimization recommendations for better visibility in the tech industry.Content Strategy
Generate 5 LinkedIn post ideas about machine learning trends, each with different engagement strategies.Analytics & Insights
Show me the performance metrics for my last 10 LinkedIn posts and identify the most engaging content types.π Available Tools
The MCP server provides these tools to Claude:
π Posting & Content
linkedin_create_post- Create and publish postslinkedin_create_optimized_post- AI-generated optimized postslinkedin_post_profile_update- Announce profile changes
π Analytics & Data
linkedin_get_user_posts- Retrieve your posts with paginationlinkedin_get_post_details- Detailed post analyticslinkedin_get_user_activity- Activity timeline and engagement
π€ Profile Management
linkedin_get_user_info- User profile informationlinkedin_analyze_profile_from_data- Profile optimization analysislinkedin_generate_optimized_content- Content generation for profiles
π Authentication
linkedin_get_auth_url- Generate OAuth URLslinkedin_exchange_code- Handle OAuth token exchange
π§ Configuration
Claude Configuration Location
The installer automatically detects and configures:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%/Claude/claude_desktop_config.jsonLinux:
~/.config/claude/claude_desktop_config.json
Token Storage
Tokens are securely stored at:
All Platforms:
~/.linkedin-mcp/tokens/
Example Configuration
{
"mcpServers": {
"linkedin-complete": {
"command": "node",
"args": ["/path/to/server/linkedin-complete-mcp.js"],
"env": {
"LINKEDIN_TOKEN_STORAGE_PATH": "/home/user/.linkedin-mcp/tokens"
}
}
}
}π Troubleshooting
Installation Issues
# Check status
linkedin-mcp status
# Reinstall if needed
linkedin-mcp uninstall
linkedin-mcp installAuthentication Problems
# Reset credentials
linkedin-mcp auth
# Check token storage
ls ~/.linkedin-mcp/tokens/Claude Integration Issues
Restart Claude Desktop/Code after installation
Check configuration file location matches your system
Verify MCP server permissions
Common Solutions
"Server not found": Run
linkedin-mcp installagain"Token expired": The server automatically refreshes tokens
"Permission denied": Check file permissions on token directory
π API Reference
Core Methods
Creating Posts
// Through Claude's natural language interface:
"Create a post about AI trends with these key points: [points]"
// Direct API usage:
linkedin_create_post({
text: "Your post content here",
visibility: "PUBLIC"
})Profile Analysis
linkedin_analyze_profile_from_data({
name: "Your Name",
currentHeadline: "Current headline",
industry: "Technology"
})See API_REFERENCE.md for complete documentation.
π Security & Privacy
π Secure Storage: Tokens encrypted and stored locally
π Auto-Refresh: Automatic token renewal
π« No Data Collection: No analytics or tracking
π Local First: All processing happens on your machine
π€ Contributing
Contributions welcome! Please see our contributing guidelines.
Development Setup
git clone https://github.com/maheidem/linkedin-mcp
cd linkedin-mcp
npm install
npm run buildTesting & Examples
# Run unit tests
npm test
# Run example scripts
npm run test:examples
npm run test:oauth
# Try the demo
npm run demo
# Development mode
npm run devProject Structure
βββ src/ # TypeScript source code
βββ dist/ # Compiled JavaScript
βββ examples/ # Usage examples and demos
βββ tests/ # Test files
βββ docs/ # Documentation
βββ configs/ # Configuration templates
βββ .github/workflows/ # CI/CD workflowsπ License
MIT License - see LICENSE file for details.
π Acknowledgments
Built with:
π Support
π Issues: GitHub Issues
π Documentation: Full Docs
π¬ Discussions: GitHub Discussions
Made with β€οΈ for the Claude community
Available Tools
13 toolslinkedin_analyze_profile_from_dataC
Analyze LinkedIn profile data and provide optimization recommendations
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full name | |
| currentHeadline | No | Current LinkedIn headline | |
| currentSummary | No | Current about section | |
| skills | No | List of current skills | |
| industry | No | Industry/field | |
| experience | No | Years of experience |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states 'analyze' and 'provide recommendations', which implies a read-like operation, but does not disclose whether this modifies data, requires authentication, or how recommendations are structured. Minimal behavioral context.
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 sentence with no wasted words. It is front-loaded with the action and outcome, achieving conciseness without sacrificing clarity.
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 6 parameters (one required) and no output schema, the description is too brief. It does not explain the type of analysis, the nature of recommendations, or any limitations. The agent lacks sufficient context to use the tool effectively.
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 input schema fully describes all 6 parameters (100% coverage), so the description adds no extra meaning beyond the schema. Baseline is 3; the description does not provide additional context on how parameters influence analysis.
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 action ('Analyze LinkedIn profile data') and the outcome ('provide optimization recommendations'), indicating the verb and resource. However, it does not differentiate from sibling tools like 'linkedin_generate_optimized_content', which may also involve profile 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 provides no guidance on when to use this tool versus alternatives, no prerequisites, and no context for appropriate use. The agent is left without information on when to choose this over other LinkedIn tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_create_optimized_postC
β¨ Generate and create an optimized LinkedIn post
| Name | Required | Description | Default |
|---|---|---|---|
| accessToken | Yes | LinkedIn access token | |
| topic | Yes | Post topic or theme | |
| role | Yes | Your professional role | |
| industry | No | Your industry | |
| tone | No | Post tone | |
| includeHashtags | No | Include relevant hashtags | |
| includeQuestion | No | Include engagement question |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It states it generates and creates a post, but does not disclose key behaviors such as whether it posts immediately, requires authentication beyond accessToken, or has any destructive effects. The word 'create' implies writing, but no further detail.
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 one sentence with an emoji, which is concise but not particularly structured. It front-loads the core action but lacks any breakdown or additional context. It is acceptable but could be more informative without adding length.
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 tool has 7 parameters, no output schema, and no annotations, the description is insufficient. It does not explain what the tool returns (e.g., post URL or confirmation), how it uses the parameters, or any side effects. The complexity of generating and posting warrants a richer description.
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 description coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond the schema; it merely restates the tool's purpose. Parameters are well-described in the schema itself, so the description does not enhance understanding.
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 'generate and create' and the resource 'optimized LinkedIn post'. It distinguishes from the sibling 'linkedin_create_post' by implying optimization, but does not explicitly differentiate from 'linkedin_generate_optimized_content', which may cause confusion.
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 on when to use this tool versus alternatives like 'linkedin_create_post' or 'linkedin_generate_optimized_content'. No exclusions or prerequisites mentioned, leaving the agent to guess the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_create_postC
π Create a LinkedIn post (WORKING!)
| Name | Required | Description | Default |
|---|---|---|---|
| accessToken | Yes | LinkedIn access token | |
| text | Yes | Post content text | |
| visibility | No | Post visibility (default: PUBLIC) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description lacks behavioral details beyond 'create'. With no annotations, it should disclose permissions required, side effects, or return value, but it only states the tool is 'WORKING!', which is vague and not informative.
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 sentence with an emoji, achieving high conciseness. It could be more structured, but there is no unnecessary information.
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 annotations and no output schema, the description should explain return values, error handling, or completion confirmation. It only says 'create', leaving the agent underinformed for a tool with many siblings.
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 description coverage is 100%, so the schema already explains each parameter. The description adds no additional parameter meaning, so the baseline score 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 'Create a LinkedIn post' clearly states the action and resource. However, it does not differentiate from the sibling tool 'linkedin_create_optimized_post', which also creates posts. The verb 'create' and resource 'LinkedIn post' are specific enough for basic understanding.
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 like 'linkedin_create_optimized_post'. There is no mention of prerequisites, such as needing an access token, which is already required in the schema but not noted in the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_exchange_codeB
Exchange authorization code for access token
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Authorization code from callback |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only states the action without revealing any side effects, idempotency, required permissions, rate limits, or error handling. For a tool that likely makes an API call and stores tokens, this is insufficient.
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 no wasted words. It is a single sentence that front-loads the key information. However, it could potentially include more detail without becoming verbose.
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 tool's simplicity (one parameter, no output schema, no annotations), the description is adequate but not fully complete. It does not mention the return value (access token) or potential error states. For a straightforward OAuth exchange, it covers the essential action.
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 input schema has 100% description coverage, with the 'code' parameter described as 'Authorization code from callback'. The description adds no additional meaning beyond what the schema provides, so the baseline score 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 'Exchange authorization code for access token' uses a specific verb 'Exchange' and clearly identifies the resource (authorization code) and the outcome (access token). It distinguishes this tool from its sibling 'linkedin_get_auth_url' which generates the URL to obtain the code.
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 no guidance on when to use this tool versus alternatives. It does not mention that it should be used after obtaining an authorization code via 'linkedin_get_auth_url', nor does it specify prerequisites or post-conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_generate_optimized_contentC
Generate optimized LinkedIn content (headlines, summaries, posts)
| Name | Required | Description | Default |
|---|---|---|---|
| contentType | Yes | Type of content to generate | |
| currentRole | Yes | Current job title | |
| skills | No | Key skills | |
| achievements | No | Key achievements or metrics | |
| industry | No | Industry/field | |
| tone | No | Content tone |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description states it 'generates' content but does not disclose whether it posts to LinkedIn, returns text, or has any side effects. For a generation tool, it should clarify its output behavior.
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 sentence, which is concise but vague. It could be improved by adding structure (e.g., listing what the tool does and does not do).
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?
With no output schema and 6 parameters, the description does not explain return values, error conditions, or complete usage context. It fails to cover important aspects like what the generated content looks like or how it is delivered.
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 description coverage is 100%, so the baseline is 3. The description adds little extra meaning beyond listing content types, which is already in the schema enum. It does not elaborate on parameter usage or constraints.
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 states 'Generate optimized LinkedIn content' and lists specific content types (headlines, summaries, posts), providing a clear verb-resource relationship. However, it does not distinguish this from sibling tools like 'linkedin_create_optimized_post', which may have overlapping functionality.
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 offers no guidance on when to use this tool versus alternatives (e.g., linkedin_create_optimized_post). There is no mention of prerequisites, context, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_get_auth_urlA
Generate LinkedIn OAuth authorization URL
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | Optional state parameter |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It states that the tool generates a URL, which is a safe, read-only operation. However, it does not disclose if the tool makes external calls, requires authentication, or has rate limits. For a simple URL generation tool, the description is minimally adequate.
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 with no extraneous information. It is front-loaded with the core purpose and efficient in conveying the tool's function.
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 tool's simplicity (one optional parameter, no output schema, low complexity), the description is complete enough. It explains the tool's purpose without needing to detail return values. The context of OAuth flow is implied, but the description could mention what to do with the generated URL for better completeness.
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 description coverage is 100% (the single 'state' parameter is described). The description adds no additional context beyond the schema. Per the scoring rubric, high schema coverage gives a baseline of 3, and the description does not detract or add value.
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 action ('Generate') and the resource ('LinkedIn OAuth authorization URL'). It is distinct from sibling tools like linkedin_exchange_code, which handles the code exchange step, and other tools that involve creating posts or analyzing profiles.
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, such as linkedin_exchange_code. However, by naming the output as an 'authorization URL', it implies a prerequisite step in the OAuth flow, providing limited implicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_get_feedC
π° Get LinkedIn feed/timeline posts
| Name | Required | Description | Default |
|---|---|---|---|
| accessToken | Yes | LinkedIn access token | |
| count | No | Number of posts to retrieve (default: 10, max: 50) | |
| start | No | Start position for pagination (default: 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for behavioral disclosure. It merely states the operation without any details on authentication, rate limits, error handling, or side effects.
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 sentence with an emoji, making it concise but lacking structured information. The emoji adds no functional value.
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?
For a feed retrieval tool, the description omits details about return format, pagination behavior (beyond basic parameters), and potential errors. It is insufficient for an agent to fully utilize the tool.
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 input schema covers 100% of parameters with descriptions, so the baseline is 3. The description adds no extra parameter information beyond what the schema provides.
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 'LinkedIn feed/timeline posts', making the tool's purpose unambiguous. It distinguishes from sibling tools like 'linkedin_get_user_posts' which focus on individual user posts.
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 no guidance on when to use this tool over alternatives like 'linkedin_get_user_posts' or 'linkedin_get_post_details'. There is no mention of prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_get_post_commentsC
π¬ Get comments on a specific post
| Name | Required | Description | Default |
|---|---|---|---|
| accessToken | Yes | LinkedIn access token | |
| postId | Yes | LinkedIn post/share ID | |
| count | No | Number of comments to retrieve (default: 10, max: 50) | |
| start | No | Start position for pagination (default: 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not mention authentication requirements, rate limits, or behavior when no comments exist. It only states the basic action, missing opportunities to add value beyond the name.
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 sentence with an emoji, which is concise but too minimal. It is front-loaded but lacks substance.
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 4 parameters, no output schema, and no annotations, the description is insufficient. It does not cover return format, pagination details, or error handling, leaving the agent without critical context.
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 has 100% coverage, so baseline is 3. The description does not add extra meaning to parameters like count or start; pagination behavior is implied but not explained.
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 it retrieves comments on a specific post, distinguishing it from siblings like get_feed or get_post_details. However, it lacks specificity about scope or filtering beyond the post ID.
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 on when to use this tool versus alternatives such as linkedin_get_post_details or linkedin_get_feed. No context on prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_get_post_detailsC
π Get detailed information about a specific post
| Name | Required | Description | Default |
|---|---|---|---|
| accessToken | Yes | LinkedIn access token | |
| postId | Yes | LinkedIn post/share ID | |
| includeStats | No | Include engagement statistics (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description fails to disclose what 'detailed information' includes, auth requirements, or any side effects. It does not compensate for the lack of structured metadata.
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 brief but lacks essential details. It is front-loaded but too minimal to be fully useful.
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?
With no output schema and multiple sibling tools, the description is insufficient for an agent to understand the returned data or when to prefer this tool. Missing context on auth response format and statistics behavior.
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 descriptions cover all parameters, so baseline is 3. The tool description adds no extra meaning beyond the schema, such as postId format or the impact of includeStats.
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 retrieves detailed information about a post, but it does not differentiate it from siblings like linkedin_get_user_posts or linkedin_get_post_comments.
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 on when to use this tool versus alternatives or any prerequisites. Sibling tools exist that could overlap in functionality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_get_user_activityB
π Get user's recent activity (likes, comments, shares)
| Name | Required | Description | Default |
|---|---|---|---|
| accessToken | Yes | LinkedIn access token | |
| activityTypes | No | Types of activities to retrieve (default: all) | |
| count | No | Number of activities to retrieve (default: 20, max: 100) | |
| start | No | Start position for pagination (default: 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose authentication requirements beyond 'accessToken', rate limits, or what happens if the token is invalid. The mutability or side effects are not addressed.
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 with an emoji, front-loading the purpose. It conveys the core function without extraneous text.
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?
No output schema exists, and the description does not explain the response format, pagination behavior (beyond parameters), or error scenarios. Given the complexity and lack of output schema, the description is incomplete.
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 description coverage is 100%; all four parameters have descriptions in the schema. The tool description adds no extra meaning, so baseline 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 'Get user's recent activity' with specific types in parentheses (likes, comments, shares), using a specific verb-resource pair. It distinguishes from sibling tools like 'linkedin_get_user_posts' by focusing on activity rather than posts.
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 explicit guidance on when to use this tool versus alternatives. Sibling tools like 'linkedin_get_user_posts' and 'linkedin_get_feed' exist, but the description provides no context for differentiation or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_get_user_infoC
Get user information via OpenID Connect
| Name | Required | Description | Default |
|---|---|---|---|
| accessToken | Yes | LinkedIn access token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states the operation and protocol. It omits critical behavioral details such as error cases, authentication requirements beyond token presence, or rate limits.
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?
A single sentence expresses the tool's purpose efficiently with no superfluous words.
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?
Despite low complexity, the lack of an output schema and any description of return data means the agent cannot infer what user information is retrieved, leaving a significant gap for effective use.
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 parameter 'accessToken' is well-documented in the schema. The description adds 'via OpenID Connect' which provides context on token origin, but no additional syntax or constraints beyond the schema.
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 'Get user information via OpenID Connect' clearly conveys the action and resource, hinting at authentication-based identity data. However, it does not explicitly differentiate from sibling tools like 'linkedin_get_user_activity' which also retrieve user-related information.
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, nor does it mention prerequisites or context for invocation. The description is purely functional.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_get_user_postsA
π Get user's own posts with pagination
| Name | Required | Description | Default |
|---|---|---|---|
| accessToken | Yes | LinkedIn access token | |
| count | No | Number of posts to retrieve (default: 10, max: 50) | |
| start | No | Start position for pagination (default: 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions pagination behavior but omits details like rate limits, authentication requirements (accessToken is required but implied), post ordering, or additional side effects.
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?
Single sentence with no redundant words. Efficiently conveys the core purpose and a key behavior (pagination).
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?
No output schema exists, so the description should hint at return format. It does not. The tool is simple but lacks information about what the response contains (e.g., list of posts, metadata). Adequate but incomplete given no output schema.
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 each parameter described (accessToken, count, start). The description adds 'with pagination' which aligns with start and count, but does not provide extra semantic meaning beyond the schema.
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 'Get user's own posts with pagination' uses a specific verb and resource, clearly distinguishing it from sibling tools like 'linkedin_get_feed' (likely for feed posts). The emoji adds a helpful visual cue.
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 on when to use this tool versus alternatives. No explicit 'when not to use' or comparison to siblings such as 'linkedin_get_feed'. The agent must infer context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_post_profile_updateC
π’ Create a post announcing your profile updates
| Name | Required | Description | Default |
|---|---|---|---|
| accessToken | Yes | LinkedIn access token | |
| updateType | Yes | Type of profile update | |
| details | Yes | Details about the update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description lacks disclosure of side effects, authorization requirements, or rate limits. The accessToken parameter implies auth, but that's from schema, not description.
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?
Single sentence is efficient and front-loaded. However, it may be too brief given the need for clarification on parameter usage.
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?
With 3 required parameters and no output schema, the description is minimally adequate but doesn't explain return values or error conditions. Sibling tools exist, so more context would help.
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 covers 100% of parameters with descriptions. The tool description adds no extra meaning beyond what the schema provides, so baseline 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 action (create a post) and the specific context (announcing profile updates). It distinguishes from sibling tools like linkedin_create_post by focusing on updates, but could be more explicit about the scope.
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 on when to use this tool versus alternatives like linkedin_create_post or linkedin_create_optimized_post. Missing when-not-to-use and prerequisites.
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.
13 tool updates
v1.1.0- First observed
linkedin_analyze_profile_from_data - First observed
linkedin_create_optimized_post - First observed
linkedin_create_post - First observed
linkedin_exchange_code - First observed
linkedin_generate_optimized_content - First observed
linkedin_get_auth_url - First observed
linkedin_get_feed - First observed
linkedin_get_post_comments - First observed
linkedin_get_post_details - First observed
linkedin_get_user_activity - First observed
linkedin_get_user_info - First observed
linkedin_get_user_posts - First observed
linkedin_post_profile_update
TDQS
Most tools are clearly distinct, but there is some overlap between linkedin_create_post, linkedin_create_optimized_post, and linkedin_post_profile_update, which all create posts. The first two are distinguished by optimization, but the third could be confused as a different action. Overall, boundaries are mostly clear.
All tools follow a consistent linkedin_verb_noun pattern using snake_case. Verbs like create, get, generate, and post are used predictably. The naming is uniform and easy to parse, with no mixing of conventions.
With 13 tools, the server covers a substantial but focused set of LinkedIn operationsβauth, profile, posts, feed, comments, and activity. This is well within the typical 3-15 range and feels complete without being bloated.
The tool surface covers the main LinkedIn use cases (auth, profile, posts, feed, comments, activity, optimization). Minor gaps exist, such as lacking update/delete operations for posts or comments, but the core workflows are supported and agents can operate without major dead ends.
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
LinkedIn outreach, commenting, scheduling, and data via Claude and human approval gates.
LinkedIn outreach, commenting, scheduling, and data via Claude and human approval gates.
Write LinkedIn posts in your voice: ideas, drafts, scheduling, analytics from your personal AI.
Your professional network in Claude β search contacts, log notes, and send warm intros.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA powerful LinkedIn Profile Analyzer that seamlessly integrates with Claude AI to fetch and analyze public LinkedIn profiles, enabling users to extract, search, and analyze posts data through RapidAPI's LinkedIn Data API.33MIT
- AlicenseBqualityFmaintenanceConnects Claude Desktop to LinkedIn's data layer for AI-powered networking, enabling profile research, content creation and scheduling, engagement automation, analytics tracking, and messaging through natural language.148541MIT
- AlicenseAqualityDmaintenanceEnables Claude Desktop to manage your LinkedIn profile and company pages, including posting, reading posts, and fetching profile information.72144MIT
- AlicenseNot gradedqualityDmaintenanceEnables Claude AI to interact with LinkedIn through browser automation, including profile reading, people and job search, company research, post publishing, and profile editing.MIT
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/Maheidem/linkedin-optimizer-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server