linkedin-mcp
Server Quality Checklist
Latest release: v1.0.0
- Disambiguation5/5
Each tool has a distinct purpose: self-profile, profile by ID, search people, search jobs, send messages, connections list, and network size. Although 'me' and 'get_profile' both retrieve profiles, one is self and the other is arbitrary, so there is no ambiguity. The two search tools clearly target different resources.
Naming Consistency4/5All tools share the 'linkedin_' prefix, which is consistent. However, the pattern after the prefix varies: some use bare nouns (me, connections, network_stats) while others use verb_noun (search_people, search_jobs, send_message, get_profile). This is a minor inconsistency but still predictable and readable.
Tool Count5/5With 7 tools, the server is well-scoped for a LinkedIn integration. Each tool covers a core functionality area without unnecessary bloat, falling well within the typical 3-15 range for a focused server.
Completeness4/5The tool surface covers the most common LinkedIn actions: viewing profiles, searching people and jobs, messaging, and managing connections. Missing capabilities like posting updates or managing connection requests are noticeable but not critical, as the core workflows are covered.
Average 3.6/5 across 7 of 7 tools scored. Lowest: 2.9/5.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 1 commit in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI status not available
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It explicitly notes the scope requirement, which is useful, but does not mention authentication, rate limits, or what happens when scope is missing. The read-only nature is implied but not stated. Minimal disclosure beyond the obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that leads with the action and resource, immediately followed by the key requirement. No wasted words, and the essential information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple paginated list tool, the description conveys the core function and a critical prerequisite. However, without an output schema or annotations, it does not disclose return format, whether the response includes profiles, or potential errors. Acceptable but with gaps an agent might need to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both count and start, so the description adds no additional parameter meaning. It does not explain acceptable value ranges beyond what the schema provides, but the baseline of 3 applies because the schema already fully documents the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and identifies the exact resource ('member's 1st-degree connections') with pagination noted. It is clear and distinct from sibling tools like 'linkedin_search_people' or 'linkedin_network_stats', though it does not explicitly name an alternative for contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings. It does not mention scenarios where linkedin_network_stats or linkedin_search_people might be more appropriate. Only a prerequisite (approved connections product/scope) is given, which is not usage selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry full behavioral disclosure. It mentions the approval prerequisite, which is a meaningful constraint, but does not disclose what happens without approval, whether the operation is read-only, how results are returned, or any pagination/rate-limit behavior. This is a significant gap for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundancy. The primary action is front-loaded, and the prerequisite is stated separately. It is efficient and easy to scan, though it omits possibly important details that are not covered elsewhere, making it slightly under-specified rather than overly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with no annotations and no output schema, the description should explain what the tool returns, any error conditions, and the implications of the approval requirement. It only covers the approval prerequisite, leaving the agent without enough information about expected output or failure modes. The simplicity of the tool (4 optional params) lowers the bar, but the missing behavioral details make it incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter already has a description. The description's listing of 'keywords / location / company / industry' merely echoes the schema without adding new meaning, such as format expectations, wildcard support, or interaction between filters. It meets the baseline for 100% coverage but does not go beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Search' and the resource 'member profiles', and lists the search dimensions (keywords, location, company, industry) which map to the parameters. It differentiates from sibling tools like linkedin_search_jobs by explicitly targeting member profiles, though it does not name alternatives. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does 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 only states a prerequisite ('Requires an approved search product/scope') but does not explain when to choose this over linkedin_get_profile or linkedin_search_jobs. There is no mention of exclusions or contextual triggers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, leaving the description to carry the full burden of behavioral disclosure. The description only states the action and required scope, but it does not disclose that this is a write operation with potential side effects (sending a message), nor does it mention irreversibility, rate limits, or what happens on success/failure. The term 'send' implies a mutation, but explicit behavioral context is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the purpose and immediately follows with the scope requirement. It is minimal and every word serves a purpose, with no redundancy or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple with 3 parameters and no output schema, yet the description omits key behavioral details like what the response resembles, whether it is irreversible, and any message length limits. It also does not mention that messages can only be sent to first-degree connections, although 'connection' hints at this. Given no annotations or output schema, more context would be beneficial, but the core purpose and scope are covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage; all three parameters already have descriptive text. The description adds no extra meaning beyond the schema, such as format constraints or usage patterns. Since the schema clearly documents recipientUrn and messageBody, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('send') and resource ('message to a connection'). It also adds a specific requirement (w_member_social scope) which further clarifies the tool's function. No sibling tools overlap with this messaging capability, so there is no ambiguity about what it does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by stating the prerequisite scope, which is a necessary condition for using the tool. While it does not explicitly mention alternatives or when not to use it, the absence of any sibling messaging tools makes those exclusions unnecessary. The scope requirement effectively guides the agent on when this tool is applicable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals a key requirement (approved profile product/scope), which is useful. However, it does not mention error patterns (e.g., missing permissions, invalid ID), rate limits, or what happens if the ID is not found. The single behavioral note is helpful but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with zero filler. The verb and resource are front-loaded, followed immediately by the accepted ID types and the prerequisite. Every word contributes, making it easy to scan and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with no output schema, the description covers the essential invocation details: the parameter purpose and a key prerequisite. It does not explain the return shape, but this is less critical given that 'profile' implies its content. The absence of annotation support is partly mitigated by the scope requirement, so the description is close to complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains that personId accepts public, numeric, or URN formats. The description essentially repeats this information without adding new meaning (e.g., syntax examples, required format precedence). Thus it adds minimal value beyond the schema, aligning with the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Retrieve a member profile') and the resource (member profile by person id), with explicit detail on the accepted id formats (publicId, numeric, or URN). It distinguishes from siblings by its specific focus on fetching a profile by ID versus searching (linkedin_search_people) or accessing the caller's own profile (linkedin_me).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a prerequisite ('Requires an approved profile product/scope') but does not explicitly state when to use this tool versus alternatives like linkedin_me or linkedin_search_people. The context is clear that you need a known person ID, but there is no contrast with sibling tools, leaving the agent to infer the selection logic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description bears full burden. It discloses a key requirement: the r_1st_connections_size product/scope, which is critical for authorization. However, it does not mention other behavioral aspects such as response format, potential errors, or side effects (which are minimal for a read operation). Adds some value but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with the purpose stated first and the scope requirement second. No unnecessary words, and the information is structured efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional param, no nested objects, no output schema), the description and schema together provide adequate information for correct invocation. It clarifies the purpose and authorization requirement. It does not explicitly state the return value format, but the 'count' phrasing makes it likely a simple number. Missing only minor detail about response shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% since personUrn has a description including its default. The description adds no additional meaning beyond the schema; the default behavior is already captured in the parameter description. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get'), a resource ('member's network size'), and clarifies it as '1st-degree connection count', distinguishing it from sibling tools like linkedin_connections (which likely lists connections) and linkedin_get_profile (which fetches profile details). Clear and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly discuss when to use this tool versus alternatives. It implies usage for obtaining the network size, but no exclusions or comparisons with siblings like linkedin_connections are provided. Guidance is minimal and left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. The verb 'Search' implies a read-only operation, and the mention of an approved scope adds authorization context. However, it does not disclose pagination, rate limits, or what happens if the scope is missing, leaving significant behavioral aspects undocumented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, the first front-loading the action and scope, the second adding the essential prerequisite. No wasted words; every clause earns its place. The structure is efficient and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with no output schema, the description does not explain what the tool returns (e.g., job listings, IDs, metadata) or any result limits. It also omits details like sorting or default behavior. The prerequisite is helpful, but the lack of output context leaves the agent uncertain about the return shape, making it only partially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%—all four parameters have descriptive text in the schema. The description merely restates the same filter categories without adding format, defaults, or interdependencies. It neither compensates for a gap nor adds value beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Search') and a clear resource ('job postings'), and enumerates the primary filters (keywords, location, company, job type). This unambiguously distinguishes it from sibling tools like linkedin_search_people, which targets people rather than jobs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates the tool is for job postings and adds a critical prerequisite ('Requires an approved jobs product/scope'), which tells the agent when it is permissible to call. However, it does not explicitly mention when NOT to use it or point to alternative tools (e.g., use search_people for people), so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It adds valuable context by listing the returned fields and the required OAuth scopes, which informs the agent of prerequisites and output shape. However, it lacks any mention of failure modes, rate limits, or behavior when scopes are unsupported—important for robust invocation but not critical for a simple call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-constructed sentence that front-loads the core action and resource, then lists the precise return fields and required scopes. Every word contributes to understanding, with zero fluff or repetition—an exemplar of concise, structured writing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless tool with no output schema, the description conveys the essential operational details: what it does, what it returns (field list), and prerequisites (scopes). It could mention authentication or error handling, but the simplicity of the operation makes this largely complete. The explicit field list compensates for the lack of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the description appropriately says nothing about them. The baseline for 0 parameters is 4, and since there is no schema to elaborate on, the description does not need to add parameter-level detail. It correctly focuses on the operation and output.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Get), the resource (authenticated member's profile), and enumerates the specific fields returned (sub, name, email, locale, picture). It implicitly distinguishes from sibling `linkedin_get_profile` by emphasizing 'authenticated member's' (i.e., the caller's own profile), giving the tool a unique, unambiguous purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies required scopes (`openid profile email`), which is a useful prerequisite, but it does not explicitly contrast with alternatives like `linkedin_get_profile`. An agent might be uncertain when to use this tool vs. a generic profile getter; the context of 'authenticated member' implies it's for the caller, but there is no explicit 'use this instead of X' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
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/AriOliv/linkedin-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server