A Model Context Protocol server for interacting with LinkedIn's API through the Model Context Protocol
Server has 7 tools with basic schemas and descriptions, but significant gaps limit production readiness. All tools have descriptions (10-50 chars, mostly short), and input schemas are present with type definitions. However, parameter descriptions are sparse or missing entirely. The send-message tool has required parameters but lacks validation guidance. Output schemas are not documented, responses are wrapped in a generic resource format without field-level documentation. Error handling is minimal (try-catch with generic logging). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk profiles. Naming is verb-first and clear, but parameter naming lacks consistency (publicId vs urnId mixing camelCase conventions). No pagination support despite search tools that could return large result sets.
Retrieve the current user connections
Retrieve the current user's LinkedIn profile information
Retrieve network statistics for the current user
Retrieve detailed LinkedIn profile information
Search for LinkedIn job postings based on various criteria
Search for LinkedIn profiles based on various criteria
No output schema documentation. Tools return generic resource-wrapped JSON without field-level documentation. LLMs cannot plan downstream calls or extract specific fields reliably.
Parameter descriptions are minimal or absent. E.g., 'keywords' in search-people lacks guidance on format, length, or examples. 'currentCompany' array lacks explanation of expected format (company names vs IDs). LLMs cannot infer valid input.
No pagination support on search tools. search-people and search-jobs accept no limit, offset, or page parameters. Large result sets will blow context window and degrade LLM reasoning.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | <=2025-11-25 | v2 |
Send a message to a LinkedIn connection
Missing tool annotations. send-message is destructive (WRITE risk) but has no destructiveHint annotation. get-profile, get-my-profile, get-network-stats, get-connections are read-only but lack readOnlyHint. Agents cannot distinguish safe from risky operations.
Minimal error handling. Errors are caught and logged but not returned with actionable recovery guidance. E.g., if get-profile fails with 'profile not found', the LLM receives a generic error with no suggestion to try search-people first.