Tiger Linear MCP Server
Provides tools for interacting with Linear's API, enabling AI agents to manage issues, projects, and teams programmatically through the Linear platform.
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., "@Tiger Linear MCP Serverlist my open issues"
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.
Tiger Linear MCP Server
A wrapper around the Linear API to provide some focused tools to LLMs via the Model Context Protocol.
Development
Cloning and running the server locally.
git clone git@github.com:timescale/tiger-linear-mcp-server.gitBuilding
Run npm i to install dependencies and build the project. Use npm run watch to rebuild on changes.
Create a .env file based on the .env.sample file.
cp .env.sample .envTesting
The MCP Inspector is a very handy to exercise the MCP server from a web-based UI.
npx @modelcontextprotocol/inspectorField | Value |
Transport Type |
|
Command |
|
Arguments |
|
Testing in Claude Desktop
Create/edit the file ~/Library/Application Support/Claude/claude_desktop_config.json to add an entry like the following, making sure to use the absolute path to your local tiger-linear-mcp-server project, and use a valid api token.
{
"mcpServers": {
"tiger-linear": {
"command": "node",
"args": [
"/absolute/path/to/tiger-linear-mcp-server/dist/index.js",
"stdio"
],
"env": {
"LINEAR_API_KEY": "lin_api_..."
}
}
}
}Available Tools
4 toolsget_issueGet IssueA
Fetches the details of a specific issue by its key.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | The issue key, like ABC-123 |
Output Schema
| Name | Required | Description |
|---|---|---|
| issue | Yes | |
| involvedUsers | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no readOnlyHint or destructiveHint annotations, the description carries the burden. The verb 'Fetches' transparently indicates a read-only operation, which is appropriate for this simple get-by-key tool. It does not elaborate on error cases, but given the simplicity, this is sufficient.
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, front-loaded sentence with zero filler. It conveys the essential information with maximum efficiency.
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 required parameter), the presence of an output schema, and the clear action stated, the description is fully complete. No additional details are needed for an agent to use this tool correctly.
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 key parameter is well-described ('The issue key, like ABC-123'). The description's 'by its key' adds no new meaning beyond what the schema already 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 clearly states the action ('Fetches'), the resource ('the details of a specific issue'), and the means ('by its key'). It distinguishes from siblings like get_issues (plural) by indicating this tool targets a single, specific issue.
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 implies usage—use this when you have a specific issue key and need its details—but it does not explicitly state when to avoid this tool or mention alternatives. The sibling list provides context but the description itself lacks direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_issuesGet IssuesA
Fetches issues filtered by user ID and/or project ID.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes | Filter issues by assignee user ID. Use this or project_id. | |
| projectId | Yes | Filter issues by project ID. Use this or user_id. | |
| timestampEnd | Yes | Filter issues that have been updated at or before this date. Defaults to current time. | |
| timestampStart | Yes | Filter issues that have been updated at or after this date. Defaults to 7 days ago. |
Output Schema
| Name | Required | Description |
|---|---|---|
| issues | Yes | |
| involvedUsers | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations beyond the title, the description carries the full burden. The verb 'fetches' clearly implies a read-only operation, but the description does not disclose potential side effects, authentication requirements, rate limits, or pagination behavior. It is minimally transparent but not misleading.
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 (8 words) that front-loads the verb and resource. Every word contributes meaning, with no redundant or filler content.
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?
The description is adequate for a simple filtered list tool given the rich input schema and presence of an output schema. However, it lacks explicit usage guidance relative to siblings and does not clarify the logical combination of filters (AND/OR) beyond the brief phrase. It is minimal but not 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 coverage is 100%, so the baseline is 3. The description's phrase 'by user ID and/or project ID' adds a minor clarification that both filters can be combined, which is not explicit in the schema's 'Use this or project_id' language. However, it does not add detail about the timestamp parameters, leaving the schema to carry that weight.
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 'Fetches issues filtered by user ID and/or project ID' clearly specifies a verb (fetches), resource (issues), and the filtering scope. The plural 'issues' distinguishes it from the sibling tool 'get_issue' (singular), and the resource name separates it from 'get_users' and 'get_projects'.
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 instead of the sibling 'get_issue' or when not to use it. It simply states what the tool does without mentioning alternatives or exclusions, leaving the agent to infer usage purely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectsGet ProjectsB
Fetches all projects within the Linear organization.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | Keyword to use to find partial matches on project. Will return projects whose id (e.g. ab5d27fb-e6f5-417b-84a7-91f9aa2a5fc5), name, description, or content contain the given keyword. This is case insensitive. |
Output Schema
| Name | Required | Description |
|---|---|---|
| projects | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description claims to fetch 'all projects' but does not disclose that the keyword parameter can filter results. This omission could mislead an agent into expecting an unfiltered list in all cases. No annotations exist to compensate for the lack of behavioral 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 a single, concise sentence that is front-loaded with the verb and resource. It wastes no words, though it omits important details.
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, output schema present), the description is under-specified. It fails to mention the filtering capability, leading to an incomplete picture. The absence of usage guidance further reduces completeness for an agent deciding when to invoke 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 provides a detailed, 100% description of the keyword parameter, including matching behavior and case insensitivity. The description adds nothing beyond the schema, 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 uses a specific verb ('Fetches') and clearly identifies the resource ('all projects within the Linear organization'). It distinguishes itself from sibling tools that operate on different resources (issues, users).
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. The sibling tools work on different resources, but there is no explicit mention of when to choose get_projects or when to avoid it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usersGet UsersB
Fetches all users within the Linear organization.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | Keyword to use to find partial matches on users. Will return users whose id (e.g. ab5d27fb-e6f5-417b-84a7-91f9aa2a5fc5), name, displayName, or email contain the given keyword. This is case insensitive. |
Output Schema
| Name | Required | Description |
|---|---|---|
| users | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no safety hints (e.g., readOnlyHint), so the description carries full burden. It only states a simple fetch operation, without disclosing pagination, rate limits, or that the keyword parameter is required but nullable to return all users. This lacks the behavioral context needed for safe operation.
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, front-loaded sentence that uses no filler words. It efficiently conveys the core purpose without unnecessary detail, making it easy to parse.
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 an output schema and detailed parameter schema, the description is minimally sufficient for a simple list tool. However, the required-but-nullable keyword parameter and absence of usage context around filtering could confuse an agent, leaving room for improvement in guiding full invocation.
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 schema description covers 100% of the parameter, detailing that keyword performs case-insensitive partial matches on id, name, displayName, or email. The tool 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 clearly states the tool fetches all users in the Linear organization with a specific verb ('Fetches') and resource ('users'). This immediately distinguishes it from sibling tools like get_issue and get_projects, which target different entity types.
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 any exclusions or prerequisites. The description does not mention whether a keyword is needed or how to fetch all users without filtering, leaving the agent to infer usage from the schema.
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.
4 tool updates
v0.1.0- First observed
get_issue - First observed
get_issues - First observed
get_projects - First observed
get_users
TDQS
Each tool targets a distinct resource and granularity: single issue, list of issues, all users, and all projects. There is no overlap or ambiguity between singular and plural forms.
All tools follow the consistent 'get_<resource>' pattern, making the API intuitive and predictable. No mixed conventions or vague verbs.
Four tools is well within the ideal 3-15 range and each tool earns its place by covering the core read operations for issues, users, and projects. The count feels appropriate for a focused read-only server.
The tool surface is read-only only, with no create, update, or delete operations for issues or other resources. For a Linear server, there are also missing common resources like teams and cycles, leaving significant gaps for any agent needing to manage workflows.
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
Search, read and create Linear issues, projects, teams and cycles.
Linear MCP — wraps the Linear GraphQL API (OAuth)
MCP server for Linear project management and issue tracking
Task management for people and AI agents, with scoped OAuth access to issues, projects, and docs.
130
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables interaction with Linear's API for managing issues, teams, and projects programmatically through the Model Context Protocol.7833MIT
- AlicenseNot gradedqualityDmaintenanceProvides access to Linear's issue tracking system through a standardized Model Context Protocol interface, allowing users to create, update, search, and manage issues, projects, and comments via natural language.2881MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI models to interact with Linear for issue tracking and project management through the Model Context Protocol, supporting capabilities like creating issues, searching, managing sprints, and bulk updating statuses.5-
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Linear workspace through the Model Context Protocol, supporting issue management, project cycles, teams, and global search.713MIT
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/timescale/tiger-linear-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server