@brxce/mcp-server 1.0.3 → 1.0.4
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.
- package/dist/http-server.d.ts +5 -0
- package/dist/http-server.d.ts.map +1 -0
- package/dist/http-server.js +154 -0
- package/dist/http-server.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -1
- package/dist/resources/workspace-members-resource.d.ts.map +1 -1
- package/dist/resources/workspace-members-resource.js +4 -2
- package/dist/resources/workspace-members-resource.js.map +1 -1
- package/dist/server.d.ts +24 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +212 -0
- package/dist/server.js.map +1 -0
- package/dist/services/api-client.d.ts +32 -1
- package/dist/services/api-client.d.ts.map +1 -1
- package/dist/services/api-client.js +140 -65
- package/dist/services/api-client.js.map +1 -1
- package/dist/tools/comment-tool.d.ts +4 -0
- package/dist/tools/comment-tool.d.ts.map +1 -0
- package/dist/tools/comment-tool.js +139 -0
- package/dist/tools/comment-tool.js.map +1 -0
- package/dist/tools/criteria-tool.d.ts +4 -0
- package/dist/tools/criteria-tool.d.ts.map +1 -0
- package/dist/tools/criteria-tool.js +194 -0
- package/dist/tools/criteria-tool.js.map +1 -0
- package/dist/tools/invitation-tool.d.ts +11 -0
- package/dist/tools/invitation-tool.d.ts.map +1 -0
- package/dist/tools/invitation-tool.js +245 -0
- package/dist/tools/invitation-tool.js.map +1 -0
- package/dist/tools/meeting-agenda-tool.d.ts.map +1 -1
- package/dist/tools/meeting-agenda-tool.js +9 -86
- package/dist/tools/meeting-agenda-tool.js.map +1 -1
- package/dist/tools/meeting-create-tool.d.ts.map +1 -1
- package/dist/tools/meeting-create-tool.js +3 -91
- package/dist/tools/meeting-create-tool.js.map +1 -1
- package/dist/tools/meeting-decisions-tool.d.ts.map +1 -1
- package/dist/tools/meeting-decisions-tool.js +8 -83
- package/dist/tools/meeting-decisions-tool.js.map +1 -1
- package/dist/tools/meeting-delete-tool.d.ts +7 -0
- package/dist/tools/meeting-delete-tool.d.ts.map +1 -0
- package/dist/tools/meeting-delete-tool.js +57 -0
- package/dist/tools/meeting-delete-tool.js.map +1 -0
- package/dist/tools/meeting-list-tool.d.ts.map +1 -1
- package/dist/tools/meeting-list-tool.js +6 -93
- package/dist/tools/meeting-list-tool.js.map +1 -1
- package/dist/tools/meeting-notes-tool.d.ts.map +1 -1
- package/dist/tools/meeting-notes-tool.js +8 -69
- package/dist/tools/meeting-notes-tool.js.map +1 -1
- package/dist/tools/meeting-update-tool.d.ts.map +1 -1
- package/dist/tools/meeting-update-tool.js +4 -132
- package/dist/tools/meeting-update-tool.js.map +1 -1
- package/dist/tools/notification-tool.d.ts +11 -0
- package/dist/tools/notification-tool.d.ts.map +1 -0
- package/dist/tools/notification-tool.js +143 -0
- package/dist/tools/notification-tool.js.map +1 -0
- package/dist/tools/tag-category-tool.d.ts.map +1 -1
- package/dist/tools/tag-category-tool.js +9 -63
- package/dist/tools/tag-category-tool.js.map +1 -1
- package/dist/tools/tag-search-tool.d.ts.map +1 -1
- package/dist/tools/tag-search-tool.js +11 -87
- package/dist/tools/tag-search-tool.js.map +1 -1
- package/dist/tools/tag-tool.d.ts.map +1 -1
- package/dist/tools/tag-tool.js +13 -101
- package/dist/tools/tag-tool.js.map +1 -1
- package/dist/tools/worknode-archive-tool.d.ts.map +1 -1
- package/dist/tools/worknode-archive-tool.js +4 -44
- package/dist/tools/worknode-archive-tool.js.map +1 -1
- package/dist/tools/worknode-batch-tool.d.ts +4 -0
- package/dist/tools/worknode-batch-tool.d.ts.map +1 -0
- package/dist/tools/worknode-batch-tool.js +109 -0
- package/dist/tools/worknode-batch-tool.js.map +1 -0
- package/dist/tools/worknode-by-member-tool.d.ts +4 -0
- package/dist/tools/worknode-by-member-tool.d.ts.map +1 -0
- package/dist/tools/worknode-by-member-tool.js +168 -0
- package/dist/tools/worknode-by-member-tool.js.map +1 -0
- package/dist/tools/worknode-complete-tool.d.ts +4 -0
- package/dist/tools/worknode-complete-tool.d.ts.map +1 -0
- package/dist/tools/worknode-complete-tool.js +83 -0
- package/dist/tools/worknode-complete-tool.js.map +1 -0
- package/dist/tools/worknode-create-tool.d.ts.map +1 -1
- package/dist/tools/worknode-create-tool.js +22 -113
- package/dist/tools/worknode-create-tool.js.map +1 -1
- package/dist/tools/worknode-delete-tool.d.ts +4 -0
- package/dist/tools/worknode-delete-tool.d.ts.map +1 -0
- package/dist/tools/worknode-delete-tool.js +51 -0
- package/dist/tools/worknode-delete-tool.js.map +1 -0
- package/dist/tools/worknode-history-tool.d.ts +4 -0
- package/dist/tools/worknode-history-tool.d.ts.map +1 -0
- package/dist/tools/worknode-history-tool.js +101 -0
- package/dist/tools/worknode-history-tool.js.map +1 -0
- package/dist/tools/worknode-move-tool.d.ts +4 -0
- package/dist/tools/worknode-move-tool.d.ts.map +1 -0
- package/dist/tools/worknode-move-tool.js +78 -0
- package/dist/tools/worknode-move-tool.js.map +1 -0
- package/dist/tools/worknode-plan-organize-tool.d.ts.map +1 -1
- package/dist/tools/worknode-plan-organize-tool.js +8 -117
- package/dist/tools/worknode-plan-organize-tool.js.map +1 -1
- package/dist/tools/worknode-read-tool.d.ts.map +1 -1
- package/dist/tools/worknode-read-tool.js +7 -110
- package/dist/tools/worknode-read-tool.js.map +1 -1
- package/dist/tools/worknode-subtree-tool.d.ts.map +1 -1
- package/dist/tools/worknode-subtree-tool.js +5 -65
- package/dist/tools/worknode-subtree-tool.js.map +1 -1
- package/dist/tools/worknode-tag-tool.d.ts.map +1 -1
- package/dist/tools/worknode-tag-tool.js +11 -99
- package/dist/tools/worknode-tag-tool.js.map +1 -1
- package/dist/tools/worknode-update-tool.d.ts.map +1 -1
- package/dist/tools/worknode-update-tool.js +22 -110
- package/dist/tools/worknode-update-tool.js.map +1 -1
- package/dist/tools/workspace-ascii-export-tool.d.ts +4 -0
- package/dist/tools/workspace-ascii-export-tool.d.ts.map +1 -0
- package/dist/tools/workspace-ascii-export-tool.js +96 -0
- package/dist/tools/workspace-ascii-export-tool.js.map +1 -0
- package/dist/tools/workspace-inbox-tool.d.ts.map +1 -1
- package/dist/tools/workspace-inbox-tool.js +4 -72
- package/dist/tools/workspace-inbox-tool.js.map +1 -1
- package/dist/tools/workspace-list-tool.d.ts.map +1 -1
- package/dist/tools/workspace-list-tool.js +3 -49
- package/dist/tools/workspace-list-tool.js.map +1 -1
- package/dist/tools/workspace-member-tool.d.ts +7 -0
- package/dist/tools/workspace-member-tool.d.ts.map +1 -0
- package/dist/tools/workspace-member-tool.js +172 -0
- package/dist/tools/workspace-member-tool.js.map +1 -0
- package/dist/tools/workspace-members-list-tool.d.ts.map +1 -1
- package/dist/tools/workspace-members-list-tool.js +5 -84
- package/dist/tools/workspace-members-list-tool.js.map +1 -1
- package/dist/tools/workspace-statistics-tool.d.ts.map +1 -1
- package/dist/tools/workspace-statistics-tool.js +3 -169
- package/dist/tools/workspace-statistics-tool.js.map +1 -1
- package/dist/tools/workspace-tree-tool.d.ts.map +1 -1
- package/dist/tools/workspace-tree-tool.js +10 -178
- package/dist/tools/workspace-tree-tool.js.map +1 -1
- package/package.json +12 -11
|
@@ -23,79 +23,11 @@ function toMinimalWorkNode(node) {
|
|
|
23
23
|
*/
|
|
24
24
|
export function registerWorkspaceInboxTool(server, apiClient) {
|
|
25
25
|
server.registerTool('brxce_workspace_inbox', {
|
|
26
|
-
description: `Get workspace inbox items
|
|
26
|
+
description: `Get workspace inbox (backlog items). Verify workspaceId via user://me first.
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
2. Identify the correct workspaceId from the resource data
|
|
32
|
-
3. If user doesn't specify workspace, use their default workspace from user://me
|
|
33
|
-
4. If ambiguous, ask user to clarify which workspace to use
|
|
34
|
-
5. NEVER assume or guess workspaceId values
|
|
35
|
-
|
|
36
|
-
**Example Workflow:**
|
|
37
|
-
\`\`\`
|
|
38
|
-
User: "Show me my inbox"
|
|
39
|
-
LLM:
|
|
40
|
-
1. Reads user://me resource
|
|
41
|
-
2. Finds default workspace: {id: 138, name: "BRXCE Development"}
|
|
42
|
-
3. Calls brxce_workspace_inbox with workspaceId: 138
|
|
43
|
-
\`\`\`
|
|
44
|
-
|
|
45
|
-
**Inbox Categories:**
|
|
46
|
-
|
|
47
|
-
1️⃣ **My Inbox** (Personal backlog items):
|
|
48
|
-
- Items I created with no assignees
|
|
49
|
-
- Items I created and assigned only to myself
|
|
50
|
-
- Quick captures waiting to be organized
|
|
51
|
-
- Personal todos not yet distributed
|
|
52
|
-
|
|
53
|
-
2️⃣ **Shared Inbox** (Collaborative backlog items):
|
|
54
|
-
- Items created by others and assigned to me
|
|
55
|
-
- Items I created with multiple assignees
|
|
56
|
-
- Items I created and assigned only to others
|
|
57
|
-
- Delegated or collaborative work in backlog
|
|
58
|
-
|
|
59
|
-
**When to use this tool:**
|
|
60
|
-
The LLM should call this tool when the user asks:
|
|
61
|
-
- "What's in my inbox?" or "Show me my inbox"
|
|
62
|
-
- "What needs organizing?" or "Show backlog items"
|
|
63
|
-
- "What's in workspace [X] inbox?"
|
|
64
|
-
- "Show me shared inbox" or "What's assigned to me in backlog?"
|
|
65
|
-
|
|
66
|
-
**Key Features:**
|
|
67
|
-
- All items have status='backlog' (inbox state)
|
|
68
|
-
- Workspace-based filtering (uses default workspace if not specified)
|
|
69
|
-
- Separate counts for My vs Shared inbox
|
|
70
|
-
- Limited to most recent items (default 50 per category)
|
|
71
|
-
|
|
72
|
-
**Best Practices:**
|
|
73
|
-
1. Call this when user mentions "inbox" or "backlog" items
|
|
74
|
-
2. Use workspaceId if user specifies a workspace, otherwise use default
|
|
75
|
-
3. Present My Inbox and Shared Inbox separately to user
|
|
76
|
-
4. Help user understand difference between personal vs collaborative backlog
|
|
77
|
-
|
|
78
|
-
**Output Format:**
|
|
79
|
-
Returns JSON with:
|
|
80
|
-
- myInbox: Array of personal backlog items
|
|
81
|
-
- sharedInbox: Array of collaborative backlog items
|
|
82
|
-
- meta: Counts and workspace info
|
|
83
|
-
|
|
84
|
-
⏰ **TIMEZONE HANDLING:**
|
|
85
|
-
ALL date/time fields in the response are in UTC (ISO 8601 format):
|
|
86
|
-
- completedAt, createdAt, updatedAt, dueDate, startDate
|
|
87
|
-
|
|
88
|
-
When presenting results to the user, you MUST convert UTC timestamps to the user's local timezone:
|
|
89
|
-
1. Check the current date/time from the <env> tag in the system prompt
|
|
90
|
-
2. Identify the user's timezone (e.g., Asia/Seoul = UTC+9)
|
|
91
|
-
3. Convert ALL displayed timestamps from UTC to local time
|
|
92
|
-
4. Format dates in a user-friendly way (e.g., "오후 5:16" not "08:16 UTC")
|
|
93
|
-
|
|
94
|
-
Example conversion (Korea Time, UTC+9):
|
|
95
|
-
- API returns: "completedAt": "2025-10-20T08:16:25.556Z" (UTC)
|
|
96
|
-
- Display to user: "완료: 2025-10-20 오후 5:16" (KST)
|
|
97
|
-
|
|
98
|
-
The LLM should format this into a clear summary showing both categories.`,
|
|
28
|
+
Categories: myInbox (items I created), sharedInbox (assigned by others)
|
|
29
|
+
Params: workspaceId (optional, uses default), limit (default: 50)
|
|
30
|
+
Returns: myInbox[], sharedInbox[], summary{counts}. Dates in UTC.`,
|
|
99
31
|
inputSchema: {
|
|
100
32
|
workspaceId: z
|
|
101
33
|
.string()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-inbox-tool.js","sourceRoot":"","sources":["../../src/tools/workspace-inbox-tool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkCxB;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAAS;IAClC,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,SAAS;QACpC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;QAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;QAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAiB,EAAE,SAAoB;IAChF,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,WAAW,EAAE
|
|
1
|
+
{"version":3,"file":"workspace-inbox-tool.js","sourceRoot":"","sources":["../../src/tools/workspace-inbox-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-list-tool.d.ts","sourceRoot":"","sources":["../../src/tools/workspace-list-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAiB3D;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"workspace-list-tool.d.ts","sourceRoot":"","sources":["../../src/tools/workspace-list-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAiB3D;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QAuEhF"}
|
|
@@ -4,57 +4,11 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export function registerWorkspaceListTool(server, apiClient) {
|
|
6
6
|
server.registerTool('brxce_list_workspaces', {
|
|
7
|
-
description: `List all workspaces the
|
|
7
|
+
description: `List all workspaces the user has access to.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Prefer user://me resource for simple lookups. Use this tool when user explicitly asks to list workspaces.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
- User explicitly asks to "list workspaces" or "show all workspaces"
|
|
13
|
-
- You need workspace details beyond basic info (description, type, role)
|
|
14
|
-
- You want to filter workspaces by specific criteria
|
|
15
|
-
|
|
16
|
-
**Use user://me resource when:**
|
|
17
|
-
- You just need workspace IDs and names for context
|
|
18
|
-
- You're about to call another MCP tool that needs workspaceId
|
|
19
|
-
- You want both user info AND workspaces in one call
|
|
20
|
-
|
|
21
|
-
**Common Use Cases:**
|
|
22
|
-
- "Show me all my workspaces" → Use this tool
|
|
23
|
-
- "What workspaces do I have access to?" → Use this tool
|
|
24
|
-
- "I need the workspace ID for BRXCE Development" → Use user://me resource instead
|
|
25
|
-
- Before calling brxce_workspace_overview → Use user://me resource instead
|
|
26
|
-
|
|
27
|
-
**Output Format:**
|
|
28
|
-
Returns JSON with:
|
|
29
|
-
- workspaces: Array of workspace objects with full details
|
|
30
|
-
- id: Workspace ID
|
|
31
|
-
- name: Workspace name
|
|
32
|
-
- slug: URL-friendly identifier
|
|
33
|
-
- description: Workspace description
|
|
34
|
-
- workspaceType: Type of workspace (e.g., "team", "personal")
|
|
35
|
-
- planType: Subscription plan (e.g., "free", "pro")
|
|
36
|
-
- spaceId: Parent space ID (if applicable)
|
|
37
|
-
- userRole: User's role in this workspace (e.g., "owner", "member")
|
|
38
|
-
- total: Total number of workspaces
|
|
39
|
-
|
|
40
|
-
**Best Practices:**
|
|
41
|
-
1. Prefer user://me resource for simple workspace lookups
|
|
42
|
-
2. Use this tool when user explicitly asks for workspace list
|
|
43
|
-
3. Cache workspace data to avoid repeated calls
|
|
44
|
-
4. Use workspace slug for user-friendly URLs
|
|
45
|
-
|
|
46
|
-
**Example Workflow:**
|
|
47
|
-
\`\`\`
|
|
48
|
-
User: "Show me all my workspaces"
|
|
49
|
-
LLM:
|
|
50
|
-
1. Calls brxce_list_workspaces
|
|
51
|
-
2. Formats response in readable list
|
|
52
|
-
3. Shows workspace names, types, and roles
|
|
53
|
-
\`\`\`
|
|
54
|
-
|
|
55
|
-
⏰ **TIMEZONE HANDLING:**
|
|
56
|
-
All timestamps in the response are in UTC (ISO 8601 format).
|
|
57
|
-
Convert to user's local timezone when presenting results.`,
|
|
11
|
+
Returns: workspaces[{id, name, slug, type, plan, userRole}], total. Dates in UTC.`,
|
|
58
12
|
inputSchema: {},
|
|
59
13
|
}, async (args) => {
|
|
60
14
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-list-tool.js","sourceRoot":"","sources":["../../src/tools/workspace-list-tool.ts"],"names":[],"mappings":"AAkBA;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAiB,EAAE,SAAoB;IAC/E,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,WAAW,EAAE
|
|
1
|
+
{"version":3,"file":"workspace-list-tool.js","sourceRoot":"","sources":["../../src/tools/workspace-list-tool.ts"],"names":[],"mappings":"AAkBA;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAiB,EAAE,SAAoB;IAC/E,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,WAAW,EAAE;;;;kFAI+D;QAC5E,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,EAAE,IAAyB,EAAE,EAAE;QAClC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,CAAwB,iBAAiB,CAAC,CAAC;YAE/E,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACxC,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gCACnB,KAAK,EAAE,4BAA4B;gCACnC,OAAO,EAAE,oCAAoC;6BAC9C,CAAC;yBACH;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC;YAEjC,2CAA2C;YAC3C,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;4BACE,KAAK,EAAE,UAAU,CAAC,MAAM;4BACxB,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gCAClC,EAAE,EAAE,EAAE,CAAC,EAAE;gCACT,IAAI,EAAE,EAAE,CAAC,IAAI;gCACb,IAAI,EAAE,EAAE,CAAC,IAAI;gCACb,IAAI,EAAE,EAAE,CAAC,aAAa;gCACtB,IAAI,EAAE,EAAE,CAAC,QAAQ;gCACjB,QAAQ,EAAE,EAAE,CAAC,QAAQ;6BACtB,CAAC,CAAC;yBACJ,EACD,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,KAAK,EAAE,4BAA4B;4BACnC,OAAO,EAAE,KAAK,CAAC,OAAO;yBACvB,CAAC;qBACH;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import type { ApiClient } from '../services/api-client.js';
|
|
3
|
+
/**
|
|
4
|
+
* Register Add Workspace Member tool for direct member addition (bypassing invitation)
|
|
5
|
+
*/
|
|
6
|
+
export declare function registerAddWorkspaceMemberTool(server: McpServer, apiClient: ApiClient): void;
|
|
7
|
+
//# sourceMappingURL=workspace-member-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-member-tool.d.ts","sourceRoot":"","sources":["../../src/tools/workspace-member-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAyB3D;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QAgMrF"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Register Add Workspace Member tool for direct member addition (bypassing invitation)
|
|
4
|
+
*/
|
|
5
|
+
export function registerAddWorkspaceMemberTool(server, apiClient) {
|
|
6
|
+
server.registerTool('brxce_add_workspace_member', {
|
|
7
|
+
description: `Add existing BRXCE user to workspace (bypasses invitation). Verify workspaceId via user://me.
|
|
8
|
+
|
|
9
|
+
Use brxce_create_invitation for email-based invites.
|
|
10
|
+
|
|
11
|
+
Params: workspaceId, userId, role? (owner|admin|member|viewer, default: member)
|
|
12
|
+
Returns: member info with joinedAt`,
|
|
13
|
+
inputSchema: {
|
|
14
|
+
workspaceId: z
|
|
15
|
+
.string()
|
|
16
|
+
.uuid()
|
|
17
|
+
.describe('Workspace ID (get from user://me resource)'),
|
|
18
|
+
userId: z
|
|
19
|
+
.string()
|
|
20
|
+
.uuid()
|
|
21
|
+
.describe('User ID of the person to add (must exist in BRXCE)'),
|
|
22
|
+
role: z
|
|
23
|
+
.enum(['owner', 'admin', 'member', 'viewer'])
|
|
24
|
+
.optional()
|
|
25
|
+
.describe('Role to assign (defaults to "member")'),
|
|
26
|
+
},
|
|
27
|
+
}, async (args) => {
|
|
28
|
+
const { workspaceId, userId, role } = args;
|
|
29
|
+
// Validate required fields
|
|
30
|
+
if (!workspaceId || typeof workspaceId !== 'string') {
|
|
31
|
+
return {
|
|
32
|
+
content: [
|
|
33
|
+
{
|
|
34
|
+
type: 'text',
|
|
35
|
+
text: JSON.stringify({
|
|
36
|
+
error: 'Invalid workspace ID',
|
|
37
|
+
message: 'workspaceId is required and must be a UUID string',
|
|
38
|
+
hint: 'Use user://me resource to get valid workspace IDs',
|
|
39
|
+
}),
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
isError: true,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
if (!userId || typeof userId !== 'string') {
|
|
46
|
+
return {
|
|
47
|
+
content: [
|
|
48
|
+
{
|
|
49
|
+
type: 'text',
|
|
50
|
+
text: JSON.stringify({
|
|
51
|
+
error: 'Invalid user ID',
|
|
52
|
+
message: 'userId is required and must be a UUID string',
|
|
53
|
+
hint: 'Use user://me or workspace members list to get valid user IDs',
|
|
54
|
+
}),
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
isError: true,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
try {
|
|
61
|
+
const response = await apiClient.post('/mcp/workspace-members/add', {
|
|
62
|
+
workspaceId,
|
|
63
|
+
userId,
|
|
64
|
+
role: role || 'member',
|
|
65
|
+
});
|
|
66
|
+
if (!response.success || !response.data) {
|
|
67
|
+
return {
|
|
68
|
+
content: [
|
|
69
|
+
{
|
|
70
|
+
type: 'text',
|
|
71
|
+
text: JSON.stringify({
|
|
72
|
+
error: 'Failed to add workspace member',
|
|
73
|
+
message: response.message || 'API returned unsuccessful response',
|
|
74
|
+
}),
|
|
75
|
+
},
|
|
76
|
+
],
|
|
77
|
+
isError: true,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
const { member } = response.data;
|
|
81
|
+
return {
|
|
82
|
+
content: [
|
|
83
|
+
{
|
|
84
|
+
type: 'text',
|
|
85
|
+
text: JSON.stringify({
|
|
86
|
+
userId: member.userId,
|
|
87
|
+
email: member.email,
|
|
88
|
+
role: member.role,
|
|
89
|
+
workspaceId: member.workspaceId,
|
|
90
|
+
joinedAt: member.joinedAt,
|
|
91
|
+
userName: member.user?.name,
|
|
92
|
+
username: member.user?.username,
|
|
93
|
+
message: `Added ${member.user?.name || member.email} as ${member.role}`,
|
|
94
|
+
}, null, 2),
|
|
95
|
+
},
|
|
96
|
+
],
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
// Handle specific error codes
|
|
101
|
+
if (error.response?.status === 403) {
|
|
102
|
+
return {
|
|
103
|
+
content: [
|
|
104
|
+
{
|
|
105
|
+
type: 'text',
|
|
106
|
+
text: JSON.stringify({
|
|
107
|
+
error: 'Access denied',
|
|
108
|
+
message: 'Only workspace owner or admin can add members',
|
|
109
|
+
}),
|
|
110
|
+
},
|
|
111
|
+
],
|
|
112
|
+
isError: true,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
if (error.response?.status === 404) {
|
|
116
|
+
return {
|
|
117
|
+
content: [
|
|
118
|
+
{
|
|
119
|
+
type: 'text',
|
|
120
|
+
text: JSON.stringify({
|
|
121
|
+
error: 'Not found',
|
|
122
|
+
message: error.response?.data?.error === 'Target user not found'
|
|
123
|
+
? 'User does not exist in BRXCE'
|
|
124
|
+
: 'Workspace not found or access denied',
|
|
125
|
+
hint: error.response?.data?.error === 'Target user not found'
|
|
126
|
+
? 'Use brxce_create_invitation to invite users via email'
|
|
127
|
+
: 'Verify workspace ID from user://me resource',
|
|
128
|
+
}),
|
|
129
|
+
},
|
|
130
|
+
],
|
|
131
|
+
isError: true,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
if (error.response?.status === 400) {
|
|
135
|
+
const errorMessage = error.response?.data?.error || 'Invalid request';
|
|
136
|
+
let hint = 'Check the request parameters';
|
|
137
|
+
if (errorMessage.includes('already a member')) {
|
|
138
|
+
hint = 'Use brxce_list_workspace_members to check existing members';
|
|
139
|
+
}
|
|
140
|
+
else if (errorMessage.includes('personal workspace')) {
|
|
141
|
+
hint = 'Personal workspaces cannot have multiple members';
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
content: [
|
|
145
|
+
{
|
|
146
|
+
type: 'text',
|
|
147
|
+
text: JSON.stringify({
|
|
148
|
+
error: 'Validation error',
|
|
149
|
+
message: errorMessage,
|
|
150
|
+
hint,
|
|
151
|
+
}),
|
|
152
|
+
},
|
|
153
|
+
],
|
|
154
|
+
isError: true,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
return {
|
|
158
|
+
content: [
|
|
159
|
+
{
|
|
160
|
+
type: 'text',
|
|
161
|
+
text: JSON.stringify({
|
|
162
|
+
error: 'Failed to add workspace member',
|
|
163
|
+
message: error.message,
|
|
164
|
+
}),
|
|
165
|
+
},
|
|
166
|
+
],
|
|
167
|
+
isError: true,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=workspace-member-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-member-tool.js","sourceRoot":"","sources":["../../src/tools/workspace-member-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-members-list-tool.d.ts","sourceRoot":"","sources":["../../src/tools/workspace-members-list-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"workspace-members-list-tool.d.ts","sourceRoot":"","sources":["../../src/tools/workspace-members-list-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAuB3D;;;GAGG;AACH,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QAyIvF"}
|
|
@@ -5,91 +5,10 @@ import { z } from 'zod';
|
|
|
5
5
|
*/
|
|
6
6
|
export function registerWorkspaceMembersListTool(server, apiClient) {
|
|
7
7
|
server.registerTool('brxce_list_workspace_members', {
|
|
8
|
-
description: `List
|
|
8
|
+
description: `List workspace members. Verify workspaceId via user://me first.
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
1. Read the \`user://me\` resource to get available workspaces
|
|
13
|
-
2. Identify the correct workspaceId from the resource data
|
|
14
|
-
3. If user doesn't specify workspace, use their default workspace
|
|
15
|
-
4. NEVER assume or guess workspaceId values
|
|
16
|
-
|
|
17
|
-
**Example Workflow:**
|
|
18
|
-
\`\`\`
|
|
19
|
-
User: "Who are the members of BRXCE Development workspace?"
|
|
20
|
-
LLM:
|
|
21
|
-
1. Reads user://me resource
|
|
22
|
-
2. Finds workspace: {id: 138, name: "BRXCE Development"}
|
|
23
|
-
3. Calls brxce_list_workspace_members with workspaceId: 138
|
|
24
|
-
\`\`\`
|
|
25
|
-
|
|
26
|
-
**When to use this tool:**
|
|
27
|
-
The LLM should call this tool when the user asks about:
|
|
28
|
-
- "Who are the members of workspace X?"
|
|
29
|
-
- "Show me team members"
|
|
30
|
-
- "Who can I assign this task to?"
|
|
31
|
-
- "List all people in this workspace"
|
|
32
|
-
- When creating meetings and need to select participants
|
|
33
|
-
|
|
34
|
-
**Output Format:**
|
|
35
|
-
Returns JSON with:
|
|
36
|
-
- workspaceId: The workspace ID
|
|
37
|
-
- workspaceName: The workspace name
|
|
38
|
-
- totalMembers: Total number of members
|
|
39
|
-
- members: Array of member objects
|
|
40
|
-
- userId: User ID (use this for assignee/participant fields)
|
|
41
|
-
- email: Email address
|
|
42
|
-
- name: Display name
|
|
43
|
-
- role: Role in workspace (e.g., "owner", "admin", "member")
|
|
44
|
-
- joinedAt: When they joined (ISO 8601, UTC)
|
|
45
|
-
|
|
46
|
-
**Best Practices:**
|
|
47
|
-
1. Always verify workspaceId exists via user://me resource first
|
|
48
|
-
2. Use userId when assigning WorkNodes or adding meeting participants
|
|
49
|
-
3. Show user-friendly names (name or username) in UI, but use userId internally
|
|
50
|
-
4. Cache member list to avoid repeated calls during task assignment
|
|
51
|
-
|
|
52
|
-
**Common Use Cases:**
|
|
53
|
-
1. **Meeting Creation**: Get member list to select participants
|
|
54
|
-
\`\`\`
|
|
55
|
-
User: "Create a meeting with the team"
|
|
56
|
-
LLM:
|
|
57
|
-
1. Get workspace ID from context
|
|
58
|
-
2. Call brxce_list_workspace_members
|
|
59
|
-
3. Show member list for user to select
|
|
60
|
-
4. Use selected userId values in brxce_create_meeting
|
|
61
|
-
\`\`\`
|
|
62
|
-
|
|
63
|
-
2. **Task Assignment**: Get member list to assign WorkNode
|
|
64
|
-
\`\`\`
|
|
65
|
-
User: "Assign this task to someone"
|
|
66
|
-
LLM:
|
|
67
|
-
1. Get workspace ID from WorkNode context
|
|
68
|
-
2. Call brxce_list_workspace_members
|
|
69
|
-
3. Show member list
|
|
70
|
-
4. Use selected userId in brxce_update_worknodes
|
|
71
|
-
\`\`\`
|
|
72
|
-
|
|
73
|
-
3. **Team Overview**: Show who's in the workspace
|
|
74
|
-
\`\`\`
|
|
75
|
-
User: "Who's on the team?"
|
|
76
|
-
LLM:
|
|
77
|
-
1. Get default workspace ID
|
|
78
|
-
2. Call brxce_list_workspace_members
|
|
79
|
-
3. Format as readable list with roles
|
|
80
|
-
\`\`\`
|
|
81
|
-
|
|
82
|
-
⏰ **TIMEZONE HANDLING:**
|
|
83
|
-
The \`joinedAt\` field is in UTC (ISO 8601 format).
|
|
84
|
-
When presenting to the user, convert to their local timezone:
|
|
85
|
-
1. Check the current date/time from the <env> tag
|
|
86
|
-
2. Identify the user's timezone (e.g., Asia/Seoul = UTC+9)
|
|
87
|
-
3. Convert UTC timestamps to local time
|
|
88
|
-
4. Format in user-friendly way (e.g., "가입: 2025-10-20")
|
|
89
|
-
|
|
90
|
-
Example conversion (Korea Time, UTC+9):
|
|
91
|
-
- API returns: "joinedAt": "2025-10-20T08:16:25.556Z" (UTC)
|
|
92
|
-
- Display to user: "가입: 2025-10-20 오후 5:16" (KST)`,
|
|
10
|
+
Params: workspaceId (required)
|
|
11
|
+
Returns: members[{userId, name, nickname, jobTitle, email, role, joinedAt}], total. Use userId for assignee fields.`,
|
|
93
12
|
inputSchema: {
|
|
94
13
|
workspaceId: z
|
|
95
14
|
.string()
|
|
@@ -144,6 +63,8 @@ Example conversion (Korea Time, UTC+9):
|
|
|
144
63
|
members: members.map((member) => ({
|
|
145
64
|
userId: member.userId,
|
|
146
65
|
name: member.name,
|
|
66
|
+
nickname: member.nickname,
|
|
67
|
+
jobTitle: member.jobTitle,
|
|
147
68
|
email: member.email,
|
|
148
69
|
role: member.role,
|
|
149
70
|
joinedAt: member.joinedAt,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-members-list-tool.js","sourceRoot":"","sources":["../../src/tools/workspace-members-list-tool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"workspace-members-list-tool.js","sourceRoot":"","sources":["../../src/tools/workspace-members-list-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-statistics-tool.d.ts","sourceRoot":"","sources":["../../src/tools/workspace-statistics-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AA0D3D;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"workspace-statistics-tool.d.ts","sourceRoot":"","sources":["../../src/tools/workspace-statistics-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AA0D3D;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QAiJtF"}
|