Линейный MCP-сервер
Реализация сервера Model Context Protocol (MCP), обеспечивающая доступ к системе отслеживания проблем Linear через стандартизированный интерфейс.
Функции
Создавайте новые выпуски и подвыпуски с поддержкой лейблов
Получить список линейных проектов
Получить обновления проекта
Создать новое обновление проекта со статусом работоспособности
Обновите существующие проблемы с полной модификацией поля
Удалить проблему с проверкой
Самостоятельно назначать проблемы, используя ключевое слово «я»
Расширенный поиск с мощными возможностями фильтрации Linear
Фильтрация проблем по циклу (текущий, следующий, предыдущий или определенный цикл по UUID или номеру)
Добавляйте комментарии к проблемам с поддержкой разметки
Запрос линейных проблем по идентификатору или ключу с дополнительными связями
Поиск проблем с использованием пользовательских запросов с расширенными метаданными
Типобезопасные операции с использованием официального SDK Linear
Комплексная обработка ошибок
Обработка ограничения скорости
Чистое преобразование данных
Отслеживание отношений родитель/потомок с наследованием команды
Управление и синхронизация этикеток
Related MCP server: Linear MCP Server
Предпосылки
Среда выполнения Bun (v1.0.0 или выше)
Линейный аккаунт с доступом через API
Переменные среды
LINEAR_API_KEY=your_api_key # Your Linear API tokenУстановка и настройка
1. Клонируйте репозиторий:
git clone [repository-url]
cd linear-mcp2. Установите зависимости и соберите:
bun install
bun run build3. Настройте MCP-сервер:
Отредактируйте соответствующий файл конфигурации:
macOS:
Cline:
~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.jsonРабочий стол Клода:
~/Library/Application Support/Claude/claude_desktop_config.json
Окна:
Cline:
%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.jsonРабочий стол Клода:
%APPDATA%\Claude Desktop\claude_desktop_config.json
Линукс:
Клайн:
~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.jsonClaude Desktop: к сожалению, пока не существует
Добавьте следующую конфигурацию в объект mcpServers :
{
"mcpServers": {
"linear": {
"command": "node",
"args": ["/absolute/path/to/linear-mcp/build/index.js"],
"env": {
"LINEAR_API_KEY": "your_api_key"
}
}
}
}4. Перезапустите сервер MCP.
В настройках MCP Клайна перезапустите сервер MCP. Перезапустите Claude Desktop, чтобы загрузить новый сервер MCP.
Разработка
Запустить сервер разработки:
bun run devПроект сборки:
bun run buildДоступные инструменты MCP
Подробные примеры использования всех инструментов см. на USAGE.md .
создать_выпуск
Создайте новый линейный выпуск или подвыпуск.
Схема ввода:
{
"teamId": "string",
"title": "string",
"description": "string",
"parentId": "string",
"status": "string",
"priority": "number",
"assigneeId": "string | 'me'",
"labelIds": ["string"]
}обновление_выпуск
Обновите существующую линейную проблему.
Схема ввода:
{
"issueId": "string",
"title": "string",
"description": "string",
"status": "string", // Expects status NAME (e.g., "In Progress"). Must be valid for the issue's team.
"priority": "number", // Expects 0 (None) to 4 (Low).
"assigneeId": "string | 'me'",
"labelIds": ["string"],
"cycleId": "string"
}получить_выпуск
Получите подробную информацию о конкретной линейной проблеме с дополнительными связями.
Схема ввода:
{
"issueId": "string",
"includeRelationships": "boolean"
}поисковые_вопросы
Поиск проблем Linear с использованием строки запроса и расширенных фильтров. Поддерживает мощные возможности фильтрации Linear.
Схема ввода:
{
"query": "string",
"includeRelationships": "boolean",
"filter": {
"title": { "contains": "string", "eq": "string", ... },
"description": { "contains": "string", "eq": "string", ... },
"priority": { "gte": "number", "lt": "number", ... },
"estimate": { "eq": "number", "in": ["number"], ... },
"dueDate": { "lt": "string", "gt": "string", ... },
"createdAt": { "gt": "P2W", "lt": "2024-01-01", ... },
"updatedAt": { "gt": "P1M", ... },
"completedAt": { "null": true, ... },
"assignee": { "id": { "eq": "string" }, "name": { "contains": "string" } },
"creator": { "id": { "eq": "string" }, "name": { "contains": "string" } },
"team": { "id": { "eq": "string" }, "key": { "eq": "string" } },
"state": { "type": { "eq": "started" }, "name": { "eq": "string" } },
"labels": { "name": { "in": ["string"] }, "every": { "name": { "eq": "string" } } },
"project": { "id": { "eq": "string" }, "name": { "contains": "string" } },
"and": [{ /* filters */ }],
"or": [{ /* filters */ }],
"assignedTo": "string | 'me'",
"createdBy": "string | 'me'"
},
"projectId": "string",
"projectName": "string"
}Поддерживаемые компараторы:
Строковые поля:
eq,neq,in,nin,contains,startsWith,endsWith(плюс варианты без учета регистра)Числовые поля:
eq,neq,lt,lte,gt,gte,in,ninПоля даты:
eq,neq,lt,lte,gt,gte(поддерживает длительность ISO 8601)
получить_команды
Получите список линейных команд с дополнительной фильтрацией по имени/ключу.
Схема ввода:
{
"nameFilter": "string"
}удалить_выпуск
Удалить существующую линейную проблему.
Схема ввода:
{
"issueId": "string"
}создать_комментарий
Создайте новый комментарий к линейной проблеме.
Схема ввода:
{
"issueId": "string",
"body": "string"
}получить_проекты
Получите список линейных проектов с дополнительной фильтрацией по имени и разбиением на страницы.
Схема ввода:
{
"nameFilter": "string",
"includeArchived": "boolean",
"first": "number",
"after": "string"
}получить_обновления_проекта
Получайте обновления проекта для указанного идентификатора проекта с дополнительными параметрами фильтрации.
Схема ввода:
{
"projectId": "string",
"includeArchived": "boolean",
"first": "number",
"after": "string",
"createdAfter": "string",
"createdBefore": "string",
"userId": "string | 'me'",
"health": "string"
}создать_проект_обновить
Создайте новое обновление для линейного проекта.
Схема ввода:
{
"projectId": "string",
"body": "string",
"health": "onTrack | atRisk | offTrack",
"isDiffHidden": "boolean"
}Технические подробности
Создано с помощью TypeScript в строгом режиме
Использует официальный SDK Linear (@linear/sdk)
Использует MCP SDK (@modelcontextprotocol/sdk 1.4.0)
Аутентификация через API-токены
Комплексная обработка ошибок
Соображения по ограничению скорости
Bun runtime для повышения производительности
Модули ESM по всему
Система сборки Vite
Типобезопасные операции
Возможности очистки данных:
Извлечение упоминаний о проблеме (формат ABC-123)
Извлечение упоминаний пользователя (формат @имя пользователя)
Очистка содержимого Markdown
Оптимизация контента для контекста ИИ
Поддержка самостоятельного назначения:
Автоматическое разрешение текущего пользователя
Поддержка ключевого слова «me» в операциях создания/обновления
Эффективное кэширование идентификаторов пользователей
Расширенные возможности поиска:
Комплексная фильтрация с помощью API Linear
Поддержка всех полевых компараторов
Фильтрация отношений
Логические операторы (и, или)
Фильтрация по относительной дате
Фильтр по правообладателю/создателю (включая себя)
Поддержка определенных идентификаторов пользователей
Фильтрация проектов по идентификатору или названию
Эффективная оптимизация запросов
Возможности управления проектами:
Список проектов с фильтрацией и пагинацией
Создание обновлений проекта с отслеживанием состояния работоспособности
Извлечение обновлений проекта с возможностью фильтрации
Обработка ошибок
Сервер реализует комплексную стратегию обработки ошибок:
Обнаружение сетевых ошибок и отправка соответствующих сообщений
Обработка кода статуса HTTP
Подробные сообщения об ошибках с кодами состояния
Подробная информация об ошибке выводится на консоль
Проверка ввода всех параметров
Проверка и синхронизация этикеток
Безопасное распространение ошибок через протокол MCP
Обнаружение и обработка ограничений скорости
Обработка ошибок аутентификации
Неверная обработка запроса
Проверка наследования команды для подзадач
Проверка разрешения пользователя
Проверка фильтра поиска
ЛИЦЕНЗИЯ
Данный проект лицензирован по лицензии MIT — подробности см. в файле LICENCE .