@fruition/fcp-mcp-server 1.14.1 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -40,10 +40,12 @@ if [ -z "$UNROO_API_KEY" ]; then
40
40
  exit 0
41
41
  fi
42
42
 
43
- # Get git remote URL (if in a git repo)
43
+ # Get git remote URL and branch (if in a git repo)
44
44
  GIT_REMOTE=""
45
+ GIT_BRANCH=""
45
46
  if git rev-parse --git-dir > /dev/null 2>&1; then
46
47
  GIT_REMOTE=$(git remote get-url origin 2>/dev/null || echo "")
48
+ GIT_BRANCH=$(git symbolic-ref --short HEAD 2>/dev/null || echo "")
47
49
  fi
48
50
 
49
51
  # Get repo name from current directory
@@ -74,7 +76,8 @@ JSON_PAYLOAD=$(cat <<EOF
74
76
  "machine_id": "${MACHINE_ID}",
75
77
  "tool_name": "${TOOL_NAME:-}",
76
78
  "tool_description": "${TOOL_DESCRIPTION:-}",
77
- "project_slug": "${PROJECT_SLUG:-}"
79
+ "project_slug": "${PROJECT_SLUG:-}",
80
+ "git_branch": "${GIT_BRANCH}"
78
81
  }
79
82
  EOF
80
83
  )
package/dist/index.js CHANGED
@@ -591,6 +591,18 @@ class UnrooClient {
591
591
  });
592
592
  }
593
593
  // ============================================================================
594
+ // Comment APIs
595
+ // ============================================================================
596
+ async addComment(taskId, input) {
597
+ return this.fetch(`/api/external/fcp/tasks/${encodeURIComponent(taskId)}/comments`, {
598
+ method: 'POST',
599
+ body: JSON.stringify(input),
600
+ });
601
+ }
602
+ async listComments(taskId) {
603
+ return this.fetch(`/api/external/fcp/tasks/${encodeURIComponent(taskId)}/comments`);
604
+ }
605
+ // ============================================================================
594
606
  // Parking Lot / Backlog APIs
595
607
  // ============================================================================
596
608
  async logFutureWork(input) {
@@ -1509,6 +1521,47 @@ const TOOLS = [
1509
1521
  required: ['task_id'],
1510
1522
  },
1511
1523
  },
1524
+ {
1525
+ name: 'unroo_add_comment',
1526
+ description: 'Add a comment to an Unroo task. Use this for progress updates, notes, or tagging people with @mentions. Comments sync to Jira and notify watchers. Use is_internal=true for team-only notes.',
1527
+ inputSchema: {
1528
+ type: 'object',
1529
+ properties: {
1530
+ task_id: {
1531
+ type: 'string',
1532
+ description: 'Task ID or Jira key (e.g., task_abc123 or FLYFRU-189)',
1533
+ },
1534
+ comment_text: {
1535
+ type: 'string',
1536
+ description: 'The comment content. Use @email to mention people (e.g., @tony.diaz@fruition.net)',
1537
+ },
1538
+ is_internal: {
1539
+ type: 'boolean',
1540
+ description: 'If true, comment is team-only (not synced to Jira, not visible to customers). Default: false',
1541
+ },
1542
+ mentions: {
1543
+ type: 'array',
1544
+ items: { type: 'string' },
1545
+ description: 'Email addresses of people to mention/notify (e.g., ["tony.diaz@fruition.net"])',
1546
+ },
1547
+ },
1548
+ required: ['task_id', 'comment_text'],
1549
+ },
1550
+ },
1551
+ {
1552
+ name: 'unroo_list_comments',
1553
+ description: 'List comments on an Unroo task. Returns all comments in reverse chronological order.',
1554
+ inputSchema: {
1555
+ type: 'object',
1556
+ properties: {
1557
+ task_id: {
1558
+ type: 'string',
1559
+ description: 'Task ID or Jira key (e.g., task_abc123 or FLYFRU-189)',
1560
+ },
1561
+ },
1562
+ required: ['task_id'],
1563
+ },
1564
+ },
1512
1565
  {
1513
1566
  name: 'unroo_get_my_tasks',
1514
1567
  description: 'Get tasks assigned to the current user (based on API key). Useful for finding your work items.',
@@ -3061,6 +3114,41 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
3061
3114
  ],
3062
3115
  };
3063
3116
  }
3117
+ case 'unroo_add_comment': {
3118
+ const { task_id, comment_text, is_internal, mentions } = args;
3119
+ const commentResult = await unrooClient.addComment(task_id, {
3120
+ comment_text,
3121
+ is_internal,
3122
+ mentions,
3123
+ });
3124
+ return {
3125
+ content: [
3126
+ {
3127
+ type: 'text',
3128
+ text: JSON.stringify({
3129
+ success: true,
3130
+ message: `Comment added to task ${task_id}${is_internal ? ' (internal)' : ''}`,
3131
+ comment: commentResult.comment,
3132
+ }, null, 2),
3133
+ },
3134
+ ],
3135
+ };
3136
+ }
3137
+ case 'unroo_list_comments': {
3138
+ const { task_id } = args;
3139
+ const commentsResult = await unrooClient.listComments(task_id);
3140
+ return {
3141
+ content: [
3142
+ {
3143
+ type: 'text',
3144
+ text: JSON.stringify({
3145
+ total: commentsResult.total,
3146
+ comments: commentsResult.comments,
3147
+ }, null, 2),
3148
+ },
3149
+ ],
3150
+ };
3151
+ }
3064
3152
  case 'unroo_get_my_tasks': {
3065
3153
  const { status, limit } = args;
3066
3154
  // Note: The API key determines the user, tasks are filtered server-side
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fruition/fcp-mcp-server",
3
- "version": "1.14.1",
3
+ "version": "1.15.0",
4
4
  "description": "MCP Server for FCP Launch Coordination System - enables Claude Code to interact with FCP launches and track development time",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",