Skip to main content
Glama
expel-io

Atlassian Goals MCP Server

by expel-io

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ATLASSIAN_EMAILYesYour Atlassian account email
ATLASSIAN_CLOUD_IDYesYour Atlassian cloud ID from https://your-company.atlassian.net/_edge/tenant_info
ATLASSIAN_SITE_URLYesYour Atlassian site URL (e.g., https://your-company.atlassian.net)
ATLASSIAN_API_TOKENYesYour Atlassian API token generated at https://id.atlassian.com/manage-profile/security/api-tokens

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_goalsA

List Atlassian Goals with optional filtering by status, search term, or tags. Supports cursor-based pagination for retrieving large result sets.

get_goalA

Get detailed information about a specific goal by its ID. Returns complete goal details including description, metrics, parent/child relationships, and recent updates.

get_goalsA

Fetch multiple goals by their IDs in a single batch request. Returns complete goal details including description, metrics, parent/child relationships, and recent updates for each goal. More efficient than calling get_goal multiple times.

search_goalsA

Search for goals using TQL (Townsquare Query Language). Supports flexible queries with multiple operators.

Supported operators:

  • LIKE: Partial text match. Use _ as single-character wildcard. Example: name LIKE "A.1" or name LIKE "A._"

  • =: Exact match for status/owner. Example: status = on_track

  • AND: Combine conditions. Example: name LIKE "Q4" AND status = on_track

  • OR: Match either condition. Example: name LIKE "A." OR name LIKE "B."

Searchable fields:

  • name: Goal name (use LIKE for partial match)

  • status: Goal status (pending, on_track, at_risk, off_track, done, cancelled)

  • owner: Owner account ID (use = for exact match)

  • tag: Goal tag (use LIKE for partial match)

Examples:

  • Find goals containing "Q4": name LIKE "Q4"

  • Find goals A.1, B.1, C.1: name LIKE "A.1" OR name LIKE "B.1" OR name LIKE "C.1"

  • Find all A.x goals: name LIKE "A."

  • Find on-track Q4 goals: name LIKE "Q4" AND status = on_track

  • Find goals by owner: owner = 712020:user-uuid-here

  • Find goals with a specific tag: tag LIKE "Platform"

  • Find goals with multiple tags (all): tag LIKE "Platform" AND tag LIKE "Q1"

  • Find goals with any of several tags: tag LIKE "Platform" OR tag LIKE "Security"

list_projectsA

List Atlassian Projects with optional filtering by name. Supports cursor-based pagination for retrieving large result sets.

get_projectA

Get detailed information about a specific project by its ID. Returns complete project details including description, members, linked goals, and recent updates.

get_projectsA

Fetch multiple projects by their IDs in a single batch request. Returns complete project details including description, members, linked goals, and recent updates for each project. More efficient than calling get_project multiple times.

search_projectsA

Search for projects using TQL (Townsquare Query Language). Supports name-based queries.

Supported operators:

  • LIKE: Partial text match. Example: name LIKE "Integration"

  • OR: Match either condition. Example: name LIKE "Integration" OR name LIKE "Migration"

Searchable fields:

  • name: Project name (use LIKE for partial match)

Examples:

  • Find projects containing "Integration": name LIKE "Integration"

  • Find projects matching multiple terms: name LIKE "Integration" OR name LIKE "API"

post_goal_updateA

Post a weekly status update to a goal — the entry that appears in the goal's Updates tab. Resolve the goal's ARI via search_goals or get_goal first; this tool requires the ID, not a name.

Status and score Status for on_track / at_risk / off_track is derived from the score (1–100 integer). Pick whichever the user expresses:

  • "we're on track" → status: "on_track" (tool fills the band's midpoint score, 80)

  • "on track at 90" → status: "on_track", score: 90

  • "score 50" alone → score: 50 (status inferred as at_risk) The Atlassian UI labels these as decimals (e.g. "On track - 0.8"), but the API stores them as 1–100. Translate accordingly: 0.8 → 80. For pending / paused / done / cancelled / archived, send only status — these are non-score states and adding a score is a validation error.

Markdown Both summary and details accept markdown — headings, bold/italic, lists, links, inline and block code, blockquotes. The tool converts to ADF before sending.

Example call

post_goal_update({
  goalId: "ari:cloud:townsquare:...:goal/abc",
  summary: "Shipped the migration; on track for end-of-quarter delivery.",
  details: "## What landed\n- Migration scripts merged\n- Rollback plan validated",
  status: "on_track",
  metricUpdates: [{ targetId: "...", value: 42 }]
})
edit_goal_updateA

Edit a previously-posted goal update — fix a typo, adjust status/score, correct a metric value, replace the More detail body, etc. Identify the update by its ARI (the id returned from post_goal_update or from a goal's updates list). Both goalId and goalUpdateId are required so the tool can resolve the existing note ARI when replacing details.

Only the fields you supply are changed; all others are left alone. At least one of summary/details/status/score/targetDate/metricUpdates is required.

Status/score behaves identically to post_goal_update: on_track/at_risk/off_track derive from a 1–100 score; pending/paused/done/cancelled/archived take only status.

Markdown — both summary and details accept markdown and are converted to ADF before send.

Details replace, not append — when details is supplied, the tool looks up the update's existing "More detail" note and overwrites it. (Townsquare's editUpdate API would otherwise create a second note that the UI doesn't surface.)

Metric updatesedit_goal_update takes metricId (the metric itself), not targetId (the metric target). This is asymmetric with post_goal_update and matches the Townsquare API.

Example

edit_goal_update({
  goalId: "ari:cloud:townsquare:...:goal/abc",
  goalUpdateId: "ari:cloud:townsquare:...:goal-update/xyz",
  summary: "Corrected summary — actually on track, not at risk.",
  status: "on_track"
})
update_goalA

Edit a goal's metadata — name, description, owner, target date, start date, or archive flag. Status changes are NOT done here; use post_goal_update to change status. Tag changes are also separate (use add_goal_tags / remove_goal_tags).

Only the fields you supply are changed; all others are left alone. At least one editable field is required.

Markdowndescription accepts markdown and is converted to ADF before send.

Owner — pass an Atlassian account ID (the same value that comes back from get_goal as owner.accountId).

Archivearchived: true archives the goal (hides it from active lists); archived: false unarchives. This is destructive in effect — confirm with the user before archiving real goals.

Example

update_goal({
  goalId: "ari:cloud:townsquare:...:goal/abc",
  name: "Renamed goal",
  description: "## New description\nUpdated context here.",
  targetDate: { date: "2026-12-31", confidence: "QUARTER" }
})
delete_latest_goal_updateA

Delete the latest goal update on a goal. The Townsquare API only supports deleting the most recent update per goal — earlier updates cannot be removed this way. Resolve the update ARI via get_goal (the first item in the updates list) before calling.

If the supplied ID is not the latest update for its goal, the API will reject the call.

Example

delete_latest_goal_update({
  goalUpdateId: "ari:cloud:townsquare:...:goal-update/abc"
})
add_goal_tagsA

Attach one or more tags to a goal by name. Tag names that don't yet exist at the workspace level are auto-created — be aware this leaves a new workspace-level tag behind, and the Townsquare API does not expose a delete-tag mutation. Use the exact spelling and casing of an existing tag when possible.

Example

add_goal_tags({
  goalId: "ari:cloud:townsquare:...:goal/abc",
  tagNames: ["Platform", "Q4"]
})
remove_goal_tagsA

Detach one or more tags from a goal. Prefer tagNames (the tool looks up matching tag IDs from the goal's current tag list); tagIds is supported for the rare case where the caller already has them. Tags are only detached from the goal — the workspace-level tag definition remains.

Example

remove_goal_tags({
  goalId: "ari:cloud:townsquare:...:goal/abc",
  tagNames: ["Q4"]
})
health_checkA

Check API connectivity and authentication status with the Atlassian Goals API. Returns connection status, response time, and diagnostic information.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/expel-io/atlassian-goals-mcp'

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