内容
# Linear MCP Server
一个与Linear的API集成的模型上下文协议(Model Context Protocol,MCP)服务器,允许AI模型通过标准化的MCP工具与Linear进行交互。
## AI集成快速开始
### 与Claude和Cursor的集成
您可以通过将此MCP服务器添加到您的配置文件中,将其与Claude Desktop或Cursor集成:
```json
{
"mcpServers": {
"linear": {
"command": "npx",
"args": ["-y", "@brs98/linear-mcp"],
"env": {
"LINEAR_API_KEY": "<your-linear-api-key>"
}
}
}
}
```
要仅使用特定工具,请修改`args`字段:
```json
{
"mcpServers": {
"linear": {
"command": "npx",
"args": ["-y", "@brs98/linear-mcp", "--tools=issues,projects,teams,cycles"],
"env": {
"LINEAR_API_KEY": "<your-linear-api-key>"
}
}
}
}
```
此配置允许Claude和其他AI助手通过MCP服务器直接与您的Linear实例进行交互。
### NPX使用
您可以使用npx直接运行MCP服务器,而无需安装:
```bash
npx @brs98/linear-mcp
```
使用环境变量:
```bash
LINEAR_API_KEY=your_api_key npx @brs98/linear-mcp
```
### 可用的CLI选项
您可以使用命令行选项自定义启用哪些工具组:
```bash
# 仅包含问题工具
npx @brs98/linear-mcp --issues-only
# 包含问题和评论,但不包括标签
npx @brs98/linear-mcp --no-labels
# 指定要包含的确切工具
npx @brs98/linear-mcp --tools=issues,comments
# 仅包含项目和团队工具
npx @brs98/linear-mcp --tools=projects,teams
# 包含所有工具,除了webhooks
npx @brs98/linear-mcp --no-webhooks
# 仅用于冲刺规划的周期工具
npx @brs98/linear-mcp --cycles-only
```
#### CLI选项参考:
| 选项 | 描述 |
|------|------|
| `--tools`, `-t` | 指定要包含的工具(以逗号分隔) |
| `--no-issues` | 排除问题工具 |
| `--no-comments` | 排除评论工具 |
| `--no-labels` | 排除标签工具 |
| `--no-teams` | 排除团队工具 |
| `--no-projects` | 排除项目工具 |
| `--no-cycles` | 排除周期工具 |
| `--no-roadmaps` | 排除路线图工具 |
| `--no-webhooks` | 排除webhook工具 |
| `--issues-only` | 仅包含问题工具 |
| `--comments-only` | 仅包含评论工具 |
| `--labels-only` | 仅包含标签工具 |
| `--teams-only` | 仅包含团队工具 |
| `--projects-only` | 仅包含项目工具 |
| `--cycles-only` | 仅包含周期工具 |
| `--roadmaps-only` | 仅包含路线图工具 |
| `--webhooks-only` | 仅包含webhook工具 |
| `--verbose`, `-v` | 启用详细日志 |
| `--help`, `-h` | 显示帮助信息 |
## 特性
- 获取和搜索Linear问题
- 创建、更新和删除问题
- 管理问题属性(标签、指派人、优先级)
- 处理问题评论
- 团队管理操作
- 项目管理功能
- 冲刺/周期规划和跟踪
- 路线图管理
- Webhook配置
- 完全与Linear的GraphQL API集成
## 需求
- Node.js 18+(用于本地安装)
- Linear API密钥
- Docker(可选,用于容器化使用)
## 安装
### 选项1:本地安装
```bash
# 克隆仓库
git clone https://github.com/yourusername/linear-mcp.git
cd linear-mcp
# 安装依赖
npm install
# 构建应用
npm run build
```
### 选项2:Docker安装
```bash
# 克隆仓库
git clone https://github.com/yourusername/linear-mcp.git
cd linear-mcp
# 构建Docker镜像
docker build -t @brs98/linear-mcp .
```
## 配置
### 环境变量
在项目根目录创建一个`.env`文件,包含以下变量:
```
LINEAR_API_KEY=your_linear_api_key_here
SERVER_NAME=linear-mcp
SERVER_VERSION=1.0.0
LOG_LEVEL=info
```
您可以从您的Linear账户设置中获取Linear API密钥。
## 使用
### 启动服务器
#### 选项1:本地执行
```bash
# 启动服务器
npm start
# 仅启动问题工具
npm start -- --issues-only
```
#### 选项2:使用Docker
```bash
# 使用Docker运行(所有工具)
docker run -it --env-file .env @brs98/linear-mcp
# 使用Docker运行(仅问题)
docker run -it --env-file .env @brs98/linear-mcp --issues-only
# 或使用docker-compose
docker-compose up
```
### 连接到MCP服务器
服务器通过stdin/stdout遵循MCP协议进行通信。要连接:
1. 按照上述描述启动服务器
2. 使用MCP客户端与服务器通信
3. 客户端应连接到服务器的stdin/stdout
### 使用MCP客户端的示例
```javascript
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
// 启动客户端
const transport = new StdioClientTransport({
command: 'npx',
args: ['-y', '@brs98/linear-mcp'], // 通过npx直接运行
env: {
LINEAR_API_KEY: 'your_linear_api_key_here'
}
});
const client = new Client({
name: 'linear-mcp-client',
version: '1.0.0',
});
await client.connect(transport);
// 调用工具
const issues = await client.callTool({
name: 'getIssues',
arguments: {
limit: 10
}
});
console.log(issues);
```
### 可用工具
#### 问题操作 - `issues`
- `getIssues` - 获取问题列表
- `getIssueById` - 根据ID获取特定问题
- `searchIssues` - 使用各种过滤器搜索问题
- `createIssue` - 创建新问题
- `updateIssue` - 更新现有问题
- `deleteIssue` - 删除问题
- `assignIssue` - 将问题分配给用户
- `setIssuePriority` - 设置问题的优先级
- `getIssueHistory` - 获取问题的历史记录
#### 评论操作 - `comments`
- `getComments` - 获取问题的评论
- `createComment` - 向问题添加评论
#### 标签操作 - `labels`
- `getLabels` - 获取所有可用标签
- `addIssueLabel` - 向问题添加标签
- `removeIssueLabel` - 从问题中移除标签
#### 团队操作 - `teams`
- `getTeams` - 获取团队列表
- `getTeamById` - 根据ID获取特定团队
- `createTeam` - 创建新团队
- `updateTeam` - 更新现有团队
- `getTeamMembers` - 获取团队成员
#### 项目操作 - `projects`
- `getProjects` - 获取项目列表
- `getProjectById` - 根据ID获取特定项目
- `createProject` - 创建新项目
- `updateProject` - 更新现有项目
- `deleteProject` - 删除项目
- `getProjectIssues` - 获取与项目相关的问题
- `addIssueToProject` - 将问题添加到项目
- `removeIssueFromProject` - 从项目中移除问题
#### 周期操作 - `cycles`
- `getCycles` - 获取周期列表
- `getCycleById` - 根据ID获取特定周期
- `getActiveCycle` - 获取团队的活动周期
- `createCycle` - 创建新周期
- `updateCycle` - 更新现有周期
- `getCycleIssues` - 获取周期中的问题
- `addIssueToCycle` - 将问题添加到周期
- `removeIssueFromCycle` - 从周期中移除问题
#### 路线图操作 - `roadmaps`
- `getRoadmaps` - 获取路线图列表
- `getRoadmapById` - 根据ID获取特定路线图
- `createRoadmap` - 创建新路线图
- `updateRoadmap` - 更新现有路线图
#### Webhook操作 - `webhooks`
- `createWebhook` - 创建新Webhook
- `getWebhooks` - 获取Webhook列表
- `deleteWebhook` - 删除Webhook
## 开发
### 构建
```bash
npm run build
```
### 测试
```bash
npm test
```
### 代码检查
```bash
npm run lint
```
### 发布到npm
要将此包发布到npm:
```bash
# 登录到npm
npm login
# 构建并发布
npm publish
```
## Docker开发
用于Docker开发:
```bash
# 在开发模式下启动并挂载卷
docker-compose up --build
```
这将把您的本地目录挂载到容器中,允许您进行更改并看到反映,而无需重建镜像。
## 安全考虑
- 安全存储您的Linear API密钥,切勿将其提交到版本控制
- MCP服务器通过API密钥完全访问您的Linear问题
- 考虑在生产部署中使用具有有限范围的API密钥
- 对于生产使用,添加适当的日志以跟踪使用情况
## 许可证
MIT