OAUTH 2.0
PROJECT MANAGEMENT
Connect to Linear's hosted MCP server to manage issues, projects, cycles, and comments directly from your AI workflows.
For more tools, view docs.
from langchain_mcp_adapters.client import MultiServerMCPClient
from scalekit import ScalekitClient
client = ScalekitClient(env_url=ENV_URL, client_id=CLIENT_ID, client_secret=SECRET)
token = client.agent.get_token(user_id="user_id", connector="linearmcp")
mcp = MultiServerMCPClient({
"linearmcp": {
"url": "https://mcp.scalekit.com/linearmcp",
"headers": {"Authorization": "Bearer " + token}
}
})
tools = await mcp.get_tools()import OpenAI from "openai";
import { ScalekitClient } from "@scalekit-sdk/node";
const client = new ScalekitClient({ envUrl, clientId, clientSecret });
const token = await client.agent.getToken({ userId: "user_id", connector: "linearmcp" });
const openai = new OpenAI();
// Connect to MCP at https://mcp.scalekit.com/linearmcp
// Pass: Authorization: Bearer + tokenimport Anthropic from "@anthropic-ai/sdk";
import { ScalekitClient } from "@scalekit-sdk/node";
const client = new ScalekitClient({ envUrl, clientId, clientSecret });
const token = await client.agent.getToken({ userId: "user_id", connector: "linearmcp" });
const anthropic = new Anthropic();
// Connect to MCP at https://mcp.scalekit.com/linearmcp
// Pass: Authorization: Bearer + tokenfrom google.adk.agents import LlmAgent
from scalekit import ScalekitClient
client = ScalekitClient(env_url=ENV_URL, client_id=CLIENT_ID, client_secret=SECRET)
token = client.agent.get_token(user_id="user_id", connector="linearmcp")
# Connect to MCP at https://mcp.scalekit.com/linearmcp
# Pass: Authorization: Bearer + token// shared token
audit → bot_service_account
// scalekit
audit → user_abc ✓Does the agent access Linear as the user or as a shared key?
As the user. Each workspace member authorizes once and Scalekit resolves their credential at request time. Audit logs attribute every action to that user, not a shared service account.
Where is the Linear OAuth token stored?
In Scalekit's managed AES-256 token vault, namespaced per tenant. Refresh is automatic. Revocation is a single dashboard action. Tokens never appear in prompts, logs, or LLM context.
Can I limit what the agent is allowed to do in Linear?
Yes. Pass a tool name filter to listScopedTools so the project management agent only sees the subset you authorize. Pre-API-call scope checks block out-of-policy actions before the request reaches Linear.
What happens when a user revokes Linear access?
The connection is invalidated on the next tool call. Subsequent requests for that user fail closed with a clear error. Other users in the tenant remain unaffected. The event is logged for audit.
Do issue updates show as the user or a bot?
As the user. Issues, comments, and status updates attribute to the authorizing user in Linear's history, and team membership controls which projects and cycles the agent can touch.
What other MCP connectors does Scalekit support?
Scalekit runs the Dart AI MCP server, Atlassian Rovo MCP server, and Monday MCP server on the same per-user auth, token vault, and audit trail. Browse 500+ connectors in the MCP connector directory.
How do I build a Linear agent?
Follow a step-by-step tutorial: Add Linear Tools to a Claude Agent in 50 Lines of Python; Build a Customer Escalation Agent: Intercom, Linear, Slack; DevOps AI agent assistant for GitHub, Linear, Slack. Each one covers per-user auth, tool scoping, and working agent code for Linear.