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 indexpaginationEnd
(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 IDtitle
(string): The report titleaudienceDefinition
(object): The audience definitionbaselineDefinition
(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 forfacetUrns
(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 forurns
(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 thelist-linkedin-typeahead-facets
tool.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-auth
tool. - 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-auth
tool 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