Class: LinearToonMcp::Tools::GetProject

Inherits:
Get
  • Object
show all
Defined in:
lib/linear_toon_mcp/tools/get_project.rb

Overview

Fetch a single Linear project by ID, name, or slug and return it as TOON. Supports optional includes for members, milestones, and resources.

Constant Summary collapse

BASE_FIELDS =
<<~GRAPHQL
  id
  name
  slugId
  icon
  color
  url
  description
  state
  priority
  priorityLabel
  startDate
  targetDate
  createdAt
  updatedAt
  archivedAt
  progress
  scope
  completedScopeHistory
  lead { id name }
  status { id name }
  teams { nodes { id name } }
  labels { nodes { id name } }
  initiatives { nodes { id name } }
GRAPHQL
MEMBERS_FIELDS =
"members { nodes { id name email } }"
MILESTONES_FIELDS =
"projectMilestones { nodes { id name targetDate } }"
RESOURCES_FIELDS =
"documents { nodes { id title } }"

Instance Method Summary collapse

Methods inherited from Get

entity, entity_label, entity_name, #not_found_message, query_string, #variables

Methods inherited from Base

call, #call, error_response, success_response

Instance Method Details

#perform(query:, includeMembers: false, includeMilestones: false, includeResources: false) ⇒ Object

standard:disable Naming/VariableName

Parameters:

  • query (String)

    project name, ID, or slug



59
60
61
62
63
64
# File 'lib/linear_toon_mcp/tools/get_project.rb', line 59

def perform(query:, includeMembers: false, includeMilestones: false, includeResources: false)
  project_id = Resolvers::Project.call(value: query)
  graphql = build_query(includeMembers:, includeMilestones:, includeResources:)
  data = client.query(graphql, variables: {id: project_id})
  data["project"] or raise Error, "Project not found: #{query}"
end