mcp-audiense-di-linkedin
This server allows Claude or any other MCP-compatible client to interact with the Digital Intelligence LinkedIn Insight service, providing tools to create and analyze reports, get insights, categories, and typeahead suggestions.
๐ LinkedIn DI MCP Server
This server, based on the Model Context Protocol (MCP), allows Claude or any other MCP-compatible client to interact with the Digital Intelligence LinkedIn Insight service. It provides tools to create and analyze reports, get insights, categories, and typeahead suggestions.
โ ๏ธ Disclaimer
- This is a Work In Progress project, so the configuration might vary in the short term.
- This server is intended for use with official LinkedIn accounts only.
- Access and refresh tokens contain sensitive information and should be kept secure.
- API usage is subject to LinkedIn's terms of service and rate limits.
๐ Prerequisites
Before using this server, ensure you have:
- Node.js (v18 or higher)
- Claude Desktop App
- LinkedIn Account with appropriate permissions
- Auth0 Authentication credentials
โ๏ธ Configuring Claude Desktop
- 
Open the configuration file for Claude Desktop: - MacOS:
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
- Windows:
code %AppData%\Claude\claude_desktop_config.json
 
- MacOS:
- 
Add or update the following configuration: "mcpServers": { "di-linkedin": { "command": "/opt/homebrew/bin/node", "args": [ "/ABSOLUTE/PATH/TO/YOUR/build/index.js" ] } }
- 
Save the file and restart Claude Desktop. 
๐ ๏ธ Available Tools
๐ get-linkedin-reports
Description: Retrieves the list of LinkedIn reports owned by the authenticated user.
- 
Parameters: - paginationStart(number, optional): Pagination start index
- paginationEnd(number, optional): Pagination end index
 
- 
Response: - List of reports in JSON format
 
๐ get-linkedin-report
Description: Fetches detailed information about a specific LinkedIn report.
- 
Parameters: - id(string): The ID of the report to get information for
 
- 
Response: - Full report details in JSON format
 
๐ create-linkedin-report
Description: Creates a new LinkedIn report with audience definition.
- 
Parameters: - id(string): The report ID
- title(string): The report title
- audienceDefinition(object): The audience definition
- baselineDefinition(object, optional): The baseline definition
 
- 
Response: - Confirmation of report creation
 
๐ get-linkedin-insights
Description: Gets insights for a specific LinkedIn report.
- 
Parameters: - reportId(string): The ID of the report to get insights for
- facetUrns(array of strings, optional): Filter insights by facet URNs
 
- 
Response: - Insights data in JSON format
 
๐ get-linkedin-categories
Description: Gets categories for a specific LinkedIn report.
- 
Parameters: - reportId(string): The ID of the report to get categories for
- urns(array of strings, optional): Filter categories by URNs
 
- 
Response: - Categories data in JSON format
 
๐ get-linkedin-typeahead
Description: Gets LinkedIn typeahead suggestions for a specific facet and query. Use this to search for entities like companies, job titles, skills, etc.
- 
Parameters: - facet(string): The facet URN (e.g., urn:li:adTargetingFacet:employers). See the list of available facets using the- list-linkedin-typeahead-facetstool.
- query(string, optional): The search query to filter suggestions by keyword
 
- 
Response: - Typeahead suggestions in JSON format, including name, URN, and facet URN for each suggestion
 
- 
Example Usage: { "facet": "urn:li:adTargetingFacet:skills", "query": "javascript" }
๐ list-linkedin-typeahead-facets
Description: Lists all available facets that can be used with the get-linkedin-typeahead tool. Each facet represents a different type of entity you can search for.
- 
Parameters: None 
- 
Response: - A list of all available facets with descriptions, including:
- locations (Geographic locations)
- titles (Current job titles)
- employers (Current employers)
- skills (Professional skills)
- industries (Industries)
- and many more
 
 
- A list of all available facets with descriptions, including:
๐ list-linkedin-facet-values
Description: Lists all LinkedIn facets with predefined values, or filters by a specific facet. This tool helps you discover the exact values you can use for facets that don't use the typeahead system.
- 
Parameters: - facet(string, optional): The specific facet URN to get values for (e.g., urn:li:adTargetingFacet:genders). If not provided, all facets with predefined values will be listed.
 
- 
Response: - When no facet is specified: A comprehensive list of all facets with predefined values, including their descriptions and possible values.
- When a facet is specified: Detailed information about the specified facet, including all possible values and usage examples.
 
- 
Example Usage: { "facet": "urn:li:adTargetingFacet:genders" }
- 
Available Facets with Predefined Values: - genders (e.g., "urn:li:gender:FEMALE", "urn:li:gender:MALE")
- ageRanges (e.g., "urn:li:ageRange:(18,24)", "urn:li:ageRange:(25,34)")
- seniorities (e.g., "urn:li:seniority:1" for "Entry level")
- revenue (e.g., "urn:li:revenue:(1,10)" for "$1-10 million")
- and many more
 
๐ get-linkedin-account
Description: Gets LinkedIn account details including LinkedIn token.
- 
Parameters: None 
- 
Response: - Account details in JSON format
 
๐ initiate-linkedin-device-auth
Description: Initiates the device authorization flow to get a device code for authentication.
- 
Parameters: None 
- 
Response: - Device authorization details and instructions
 
๐ ๏ธ Troubleshooting
Tools Not Appearing in Claude
- Check Claude Desktop logs:
tail -f ~/Library/Logs/Claude/mcp*.log
- Verify environment variables are set correctly.
- Ensure the absolute path to index.js is correct.
Authentication Issues
- Double-check OAuth credentials.
- Try initiating the device authorization flow again using the initiate-linkedin-device-authtool.
- Verify that the required API scopes are enabled.
๐ Viewing Logs
To check server logs:
For MacOS/Linux:
tail -n 20 -f ~/Library/Logs/Claude/mcp*.log
For Windows:
Get-Content -Path "$env:AppData\Claude\Logs\mcp*.log" -Wait -Tail 20
๐ Security Considerations
- Keep API credentials secure โ never expose them in public repositories.
- Use environment variables to manage sensitive data.
๐ License
This project is licensed under the Apache 2.0 License. See the LICENSE file for more details.
๐ Authentication
The server uses Auth0 device authorization flow for authentication:
- Use the initiate-linkedin-device-authtool to start the authorization flow
- Follow the instructions to complete the authorization in your browser
- The server will automatically handle token management, including refreshing tokens when they expire