Skip to main content
Glama

mcp-linear

MCP-сервер, предоставляющий операции с задачами Linear. Автономный — не зависит от встроенного Claude Linear MCP.

Задачи адресуются по человекочитаемому идентификатору (GOV-123). Статусы, команды, метки и исполнители задаются по имени; сервер преобразует их в UUID Linear и возвращает ошибку со списком допустимых вариантов, если имя не совпало.

Инструменты

Инструмент

Описание

get_issue

Получить задачу по идентификатору

list_my_issues

Задачи, назначенные на владельца API-ключа

search_issues

Полнотекстовый поиск с фильтрами по команде/статусу/исполнителю

create_issue

Создать задачу в команде

update_issue

Обновить поля существующей задачи

get_comments

Комментарии к задаче

add_comment

Опубликовать комментарий

list_teams

Ключи и названия команд

list_states

Статусы рабочего процесса для команды

list_labels

Метки команды плюс метки рабочего пространства (команда необязательна)

list_users

Активные пользователи

Настройка

python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"
cp .env.example .env
# Edit .env — set LINEAR_API_KEY

Получите API-ключ: Linear → Settings → Security & access → Personal API keys. Для операций записи нужен ключ с правом записи.

Добавление в Claude Code

{
  "mcpServers": {
    "linear": {
      "command": "/Users/piuschungath/Workspace/mcp-linear/.venv/bin/mcp-linear",
      "env": { "LINEAR_API_KEY": "lin_api_..." }
    }
  }
}

Тесты

.venv/bin/pytest

Весь HTTP замокан с помощью respx. Ни API-ключ, ни доступ к сети не требуются.

С mcp-pr-assistant

Два сервера работают вместе без импорта друг друга: получите задачу через get_issue, передайте её поля в create_pr_from_ticket, затем отправьте URL PR обратно через add_comment.

Проверка схемы

Имена полей GraphQL в src/mcp_linear/queries.py были проверены против живого API Linear 2026-08-21 путём выполнения фактических строк запросов инструментов (не их копий) в реальном рабочем пространстве.

Проверено корректно:

  • компаратор номера задачи Float!

  • метки в рамках команды через team { labels }

  • корневое соединение issueLabels

  • viewer.assignedIssues(orderBy: updatedAt)

  • каждое поле, которое отправляют три мутации — IssueCreateInput, IssueUpdateInput и CommentCreateInput — все принимают teamId, title, description, stateId, assigneeId, priority, labelIds, issueId и body в том виде, как они используются

Было обнаружено и исправлено одно расхождение:

  • Полнотекстовый поиск. issueSearch отклоняет свой аргумент query как устаревший. Поиск теперь использует searchIssues(term: ...), который возвращает IssueSearchPayload, чьи узлы — IssueSearchResult, а не Issue — поэтому он не может развернуть фрагмент IssueFields. В queries.py объявлен второй фрагмент, SearchFields, с идентичной выборкой по этому типу. Интроспекция подтвердила, что IssueSearchResult несёт каждое поле, которое выбирает IssueFields. Если вы меняете один фрагмент, меняйте и другой.

Одно осталось неподтверждённым:

  • Метки рабочего пространства. Корневое соединение issueLabels разрешается, но было ли установлено, возвращает ли оно только метки всего рабочего пространства — или также метки, ограниченные командой, принадлежащие другим командам — не было установлено. Разрешение меток сначала обращается к собственным меткам команды, поэтому метка команды всегда побеждает одноимённую метку рабочего пространства.

Чтобы повторно проверить после изменения схемы Linear:

LINEAR_API_KEY=lin_api_... .venv/bin/python scripts/probe_schema.py <team-key> <issue-number> <issue-uuid>

Для этого нужен ключ команды, существующий номер задачи в этой команде и UUID этой задачи (и один раз интерактивно запрашивается UUID команды, выведенный первым пробным запросом). Пробный запрос доступен только для чтения: мутации проверяются путём интроспекции их типов ввода, а не записью в ваш трекер.

Примечания

  • Личные API-ключи Linear отправляются как Authorization: <key> без префикса Bearer.

  • Linear сообщает о большинстве сбоев как HTTP 200 с массивом errors на верхнем уровне, поэтому клиент проверяет тело ответа, а не код состояния.

  • Метаданные команд, статусов, меток и пользователей кэшируются на время жизни процесса сервера. Перезапустите сервер после изменения статусов рабочего процесса или меток команды.

-
license - not tested
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • Shortcut project management. Create, update, search stories and manage workflows.

  • Connect to Atlassian Jira, Confluence, and Compass to search, create, and manage your work.

  • Manage projects, tasks, time tracking, and team collaboration through natural language.

View all MCP Connectors

Latest Blog Posts

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/pius-grainger/mcp-linear'

If you have feedback or need assistance with the MCP directory API, please join our Discord server