Files

212 lines
7.0 KiB
Markdown

---
catalog_title: Linear
catalog_description: Manage issues, track projects, and streamline development
catalog_icon: /integrations/assets/linear.png
catalog_tags: ["mcp"]
---
# Linear MCP tool for ADK
<div class="language-support-tag">
<span class="lst-supported">Supported in ADK</span><span class="lst-python">Python</span><span class="lst-typescript">TypeScript</span>
</div>
The [Linear MCP Server](https://linear.app/docs/mcp) connects your ADK agent to
[Linear](https://linear.app/), a purpose-built tool for planning and building
products. This integration gives your agent the ability to manage issues, track
project cycles, and automate development workflows using natural language.
## Use cases
- **Streamline Issue Management**: Create, update, and organize issues using
natural language. Let your agent handle logging bugs, assigning tasks, and
updating statuses.
- **Track Projects and Cycles**: Get instant visibility into your team's
momentum. Query the status of active cycles, check project milestones, and
retrieve deadlines.
- **Contextual Search & Summarization**: Quickly catch up on long discussion
threads or find specific project specifications. Your agent can search
documentation and summarize complex issues.
## Prerequisites
- [Sign up](https://linear.app/signup) for a Linear account
- Generate an API key in
[Linear Settings > Security & access](https://linear.app/docs/security-and-access)
(if using API authentication)
## Use with agent
=== "Python"
=== "Local MCP Server"
```python
from google.adk.agents import Agent
from google.adk.tools.mcp_tool import McpToolset
from google.adk.tools.mcp_tool.mcp_session_manager import StdioConnectionParams
from mcp import StdioServerParameters
root_agent = Agent(
model="gemini-flash-latest",
name="linear_agent",
instruction="Help users manage issues, projects, and cycles in Linear",
tools=[
McpToolset(
connection_params=StdioConnectionParams(
server_params=StdioServerParameters(
command="npx",
args=[
"-y",
"mcp-remote",
"https://mcp.linear.app/mcp",
]
),
timeout=30,
),
)
],
)
```
!!! note
When you run this agent for the first time, a browser window will open
automatically to request access via OAuth. Alternatively, you can use
the authorization URL printed in the console. You must approve this
request to allow the agent to access your Linear data.
=== "Remote MCP Server"
```python
from google.adk.agents import Agent
from google.adk.tools.mcp_tool import McpToolset
from google.adk.tools.mcp_tool.mcp_session_manager import StreamableHTTPConnectionParams
LINEAR_API_KEY = "YOUR_LINEAR_API_KEY"
root_agent = Agent(
model="gemini-flash-latest",
name="linear_agent",
instruction="Help users manage issues, projects, and cycles in Linear",
tools=[
McpToolset(
connection_params=StreamableHTTPConnectionParams(
url="https://mcp.linear.app/mcp",
headers={
"Authorization": f"Bearer {LINEAR_API_KEY}",
},
),
)
],
)
```
!!! note
This code example uses an API key for authentication. To use a
browser-based OAuth authentication flow instead, remove the `headers`
parameter and run the agent.
=== "TypeScript"
=== "Local MCP Server"
```typescript
import { LlmAgent, MCPToolset } from "@google/adk";
const rootAgent = new LlmAgent({
model: "gemini-flash-latest",
name: "linear_agent",
instruction: "Help users manage issues, projects, and cycles in Linear",
tools: [
new MCPToolset({
type: "StdioConnectionParams",
serverParams: {
command: "npx",
args: ["-y", "mcp-remote", "https://mcp.linear.app/mcp"],
},
}),
],
});
export { rootAgent };
```
!!! note
When you run this agent for the first time, a browser window will open
automatically to request access via OAuth. Alternatively, you can use
the authorization URL printed in the console. You must approve this
request to allow the agent to access your Linear data.
=== "Remote MCP Server"
```typescript
import { LlmAgent, MCPToolset } from "@google/adk";
const LINEAR_API_KEY = "YOUR_LINEAR_API_KEY";
const rootAgent = new LlmAgent({
model: "gemini-flash-latest",
name: "linear_agent",
instruction: "Help users manage issues, projects, and cycles in Linear",
tools: [
new MCPToolset({
type: "StreamableHTTPConnectionParams",
url: "https://mcp.linear.app/mcp",
transportOptions: {
requestInit: {
headers: {
Authorization: `Bearer ${LINEAR_API_KEY}`,
},
},
},
}),
],
});
export { rootAgent };
```
!!! note
This code example uses an API key for authentication. To use a
browser-based OAuth authentication flow instead, remove the `header`
property and run the agent.
## Available tools
Tool | Description
---- | -----------
`list_comments` | List comments on an issue
`create_comment` | Create a comment on an issue
`list_cycles` | List cycles in a project
`get_document` | Get a document
`list_documents` | List documents
`get_issue` | Get an issue
`list_issues` | List issues
`create_issue` | Create an issue
`update_issue` | Update an issue
`list_issue_statuses` | List issue statuses
`get_issue_status` | Get an issue status
`list_issue_labels` | List issue labels
`create_issue_label` | Create an issue label
`list_projects` | List projects
`get_project` | Get a project
`create_project` | Create a project
`update_project` | Update a project
`list_project_labels` | List project labels
`list_teams` | List teams
`get_team` | Get a team
`list_users` | List users
`get_user` | Get a user
`search_documentation` | Search documentation
## Additional resources
- [Linear MCP Server Documentation](https://linear.app/docs/mcp)
- [Linear Getting Started Guide](https://linear.app/docs/start-guide)