@brxce/mcp-server 1.0.3 → 1.1.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.
- package/README.md +11 -4
- package/dist/config/environment.d.ts.map +1 -1
- package/dist/config/environment.js +6 -7
- package/dist/config/environment.js.map +1 -1
- package/dist/constants/enums.d.ts +11 -0
- package/dist/constants/enums.d.ts.map +1 -0
- package/dist/constants/enums.js +39 -0
- package/dist/constants/enums.js.map +1 -0
- 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 +63 -1
- package/dist/index.js.map +1 -1
- package/dist/prompts/worknode-prompts.d.ts.map +1 -1
- package/dist/prompts/worknode-prompts.js +5 -4
- package/dist/prompts/worknode-prompts.js.map +1 -1
- package/dist/prompts/workspace-context-prompt.d.ts.map +1 -1
- package/dist/prompts/workspace-context-prompt.js +2 -1
- package/dist/prompts/workspace-context-prompt.js.map +1 -1
- package/dist/resources/user-resource.d.ts.map +1 -1
- package/dist/resources/user-resource.js +2 -1
- package/dist/resources/user-resource.js.map +1 -1
- package/dist/resources/workspace-members-resource.d.ts.map +1 -1
- package/dist/resources/workspace-members-resource.js +6 -3
- package/dist/resources/workspace-members-resource.js.map +1 -1
- package/dist/resources/workspace-resource.d.ts.map +1 -1
- package/dist/resources/workspace-resource.js +2 -1
- package/dist/resources/workspace-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 +36 -2
- package/dist/services/api-client.d.ts.map +1 -1
- package/dist/services/api-client.js +153 -64
- package/dist/services/api-client.js.map +1 -1
- package/dist/services/workspace-context.d.ts +56 -0
- package/dist/services/workspace-context.d.ts.map +1 -0
- package/dist/services/workspace-context.js +104 -0
- package/dist/services/workspace-context.js.map +1 -0
- 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 +154 -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 +208 -0
- package/dist/tools/criteria-tool.js.map +1 -0
- package/dist/tools/invitation-tool.d.ts +19 -0
- package/dist/tools/invitation-tool.d.ts.map +1 -0
- package/dist/tools/invitation-tool.js +501 -0
- package/dist/tools/invitation-tool.js.map +1 -0
- package/dist/tools/meeting-agenda-notes-tool.d.ts +7 -0
- package/dist/tools/meeting-agenda-notes-tool.d.ts.map +1 -0
- package/dist/tools/meeting-agenda-notes-tool.js +326 -0
- package/dist/tools/meeting-agenda-notes-tool.js.map +1 -0
- package/dist/tools/meeting-agenda-tool.d.ts.map +1 -1
- package/dist/tools/meeting-agenda-tool.js +12 -11
- 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 +74 -139
- 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 +12 -11
- 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 +58 -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 +14 -100
- 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 +12 -11
- 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 +8 -135
- package/dist/tools/meeting-update-tool.js.map +1 -1
- package/dist/tools/my-work-tool.d.ts +7 -0
- package/dist/tools/my-work-tool.d.ts.map +1 -0
- package/dist/tools/my-work-tool.js +283 -0
- package/dist/tools/my-work-tool.js.map +1 -0
- package/dist/tools/notification-tool.d.ts +23 -0
- package/dist/tools/notification-tool.d.ts.map +1 -0
- package/dist/tools/notification-tool.js +330 -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 +15 -6
- package/dist/tools/tag-category-tool.js.map +1 -1
- package/dist/tools/tag-changes-tool.d.ts +4 -0
- package/dist/tools/tag-changes-tool.d.ts.map +1 -0
- package/dist/tools/tag-changes-tool.js +79 -0
- package/dist/tools/tag-changes-tool.js.map +1 -0
- package/dist/tools/tag-search-tool.d.ts.map +1 -1
- package/dist/tools/tag-search-tool.js +13 -6
- 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 +26 -15
- package/dist/tools/tag-tool.js.map +1 -1
- package/dist/tools/user-search-tool.d.ts +8 -0
- package/dist/tools/user-search-tool.d.ts.map +1 -0
- package/dist/tools/user-search-tool.js +164 -0
- package/dist/tools/user-search-tool.js.map +1 -0
- package/dist/tools/worknode-archive-tool.d.ts.map +1 -1
- package/dist/tools/worknode-archive-tool.js +15 -52
- 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 +117 -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 +171 -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 +95 -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 +40 -126
- 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 +64 -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 +103 -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 +80 -0
- package/dist/tools/worknode-move-tool.js.map +1 -0
- package/dist/tools/worknode-permanent-delete-tool.d.ts +10 -0
- package/dist/tools/worknode-permanent-delete-tool.d.ts.map +1 -0
- package/dist/tools/worknode-permanent-delete-tool.js +131 -0
- package/dist/tools/worknode-permanent-delete-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 +10 -118
- 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 +23 -117
- 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 +153 -99
- package/dist/tools/worknode-subtree-tool.js.map +1 -1
- package/dist/tools/worknode-tag-relations-tool.d.ts +4 -0
- package/dist/tools/worknode-tag-relations-tool.d.ts.map +1 -0
- package/dist/tools/worknode-tag-relations-tool.js +143 -0
- package/dist/tools/worknode-tag-relations-tool.js.map +1 -0
- package/dist/tools/worknode-tag-tool.d.ts.map +1 -1
- package/dist/tools/worknode-tag-tool.js +17 -8
- 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 +37 -120
- 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 +99 -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 +8 -77
- 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 +5 -50
- package/dist/tools/workspace-list-tool.js.map +1 -1
- package/dist/tools/workspace-member-tool.d.ts +15 -0
- package/dist/tools/workspace-member-tool.d.ts.map +1 -0
- package/dist/tools/workspace-member-tool.js +518 -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 +10 -87
- 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 +8 -172
- 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 +37 -185
- package/dist/tools/workspace-tree-tool.js.map +1 -1
- package/dist/utils/error-utils.d.ts +58 -0
- package/dist/utils/error-utils.d.ts.map +1 -0
- package/dist/utils/error-utils.js +118 -0
- package/dist/utils/error-utils.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +13 -11
|
@@ -1,60 +1,15 @@
|
|
|
1
|
+
import { getErrorMessage } from '../utils/error-utils.js';
|
|
1
2
|
/**
|
|
2
3
|
* Register Workspace List tool for LLM-invoked queries
|
|
3
4
|
* This tool allows the LLM to list all workspaces the user has access to
|
|
4
5
|
*/
|
|
5
6
|
export function registerWorkspaceListTool(server, apiClient) {
|
|
6
7
|
server.registerTool('brxce_list_workspaces', {
|
|
7
|
-
description: `List all workspaces the
|
|
8
|
+
description: `List all workspaces the user has access to.
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
Prefer user://me resource for simple lookups. Use this tool when user explicitly asks to list workspaces.
|
|
10
11
|
|
|
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.`,
|
|
12
|
+
Returns: workspaces[{id, name, slug, type, plan, userRole}], total. Dates in UTC.`,
|
|
58
13
|
inputSchema: {},
|
|
59
14
|
}, async (args) => {
|
|
60
15
|
try {
|
|
@@ -101,7 +56,7 @@ Convert to user's local timezone when presenting results.`,
|
|
|
101
56
|
type: 'text',
|
|
102
57
|
text: JSON.stringify({
|
|
103
58
|
error: 'Failed to fetch workspaces',
|
|
104
|
-
message: error
|
|
59
|
+
message: getErrorMessage(error),
|
|
105
60
|
}),
|
|
106
61
|
},
|
|
107
62
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-list-tool.js","sourceRoot":"","sources":["../../src/tools/workspace-list-tool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workspace-list-tool.js","sourceRoot":"","sources":["../../src/tools/workspace-list-tool.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAgB1D;;;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,KAAc,EAAE,CAAC;YACxB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,KAAK,EAAE,4BAA4B;4BACnC,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC;yBAChC,CAAC;qBACH;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
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
|
+
/**
|
|
8
|
+
* Register Update Member Role tool for changing workspace member's role
|
|
9
|
+
*/
|
|
10
|
+
export declare function registerUpdateMemberRoleTool(server: McpServer, apiClient: ApiClient): void;
|
|
11
|
+
/**
|
|
12
|
+
* Register Remove Workspace Member tool for removing a member from workspace
|
|
13
|
+
*/
|
|
14
|
+
export declare function registerRemoveWorkspaceMemberTool(server: McpServer, apiClient: ApiClient): void;
|
|
15
|
+
//# 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;AA0B3D;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QAmMrF;AAiBD;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QAoNnF;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QA4KxF"}
|
|
@@ -0,0 +1,518 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { getErrorMessage, getErrorResponseStatus, getErrorResponseData } from '../utils/error-utils.js';
|
|
3
|
+
/**
|
|
4
|
+
* Register Add Workspace Member tool for direct member addition (bypassing invitation)
|
|
5
|
+
*/
|
|
6
|
+
export function registerAddWorkspaceMemberTool(server, apiClient) {
|
|
7
|
+
server.registerTool('brxce_add_workspace_member', {
|
|
8
|
+
description: `Add existing BRXCE user to workspace (bypasses invitation). Verify workspaceId via user://me.
|
|
9
|
+
|
|
10
|
+
Use brxce_create_invitation for email-based invites.
|
|
11
|
+
|
|
12
|
+
Params: workspaceId, userId, role? (owner|admin|member|viewer, default: member)
|
|
13
|
+
Returns: member info with joinedAt`,
|
|
14
|
+
inputSchema: {
|
|
15
|
+
workspaceId: z
|
|
16
|
+
.string()
|
|
17
|
+
.uuid()
|
|
18
|
+
.describe('Workspace ID (get from user://me resource)'),
|
|
19
|
+
userId: z
|
|
20
|
+
.string()
|
|
21
|
+
.uuid()
|
|
22
|
+
.describe('User ID of the person to add (must exist in BRXCE)'),
|
|
23
|
+
role: z
|
|
24
|
+
.enum(['owner', 'admin', 'member', 'viewer'])
|
|
25
|
+
.optional()
|
|
26
|
+
.describe('Role to assign (defaults to "member")'),
|
|
27
|
+
},
|
|
28
|
+
}, async (args) => {
|
|
29
|
+
const { workspaceId, userId, role } = args;
|
|
30
|
+
// Validate required fields
|
|
31
|
+
if (!workspaceId || typeof workspaceId !== 'string') {
|
|
32
|
+
return {
|
|
33
|
+
content: [
|
|
34
|
+
{
|
|
35
|
+
type: 'text',
|
|
36
|
+
text: JSON.stringify({
|
|
37
|
+
error: 'Invalid workspace ID',
|
|
38
|
+
message: 'workspaceId is required and must be a UUID string',
|
|
39
|
+
hint: 'Use user://me resource to get valid workspace IDs',
|
|
40
|
+
}),
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
isError: true,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
if (!userId || typeof userId !== 'string') {
|
|
47
|
+
return {
|
|
48
|
+
content: [
|
|
49
|
+
{
|
|
50
|
+
type: 'text',
|
|
51
|
+
text: JSON.stringify({
|
|
52
|
+
error: 'Invalid user ID',
|
|
53
|
+
message: 'userId is required and must be a UUID string',
|
|
54
|
+
hint: 'Use user://me or workspace members list to get valid user IDs',
|
|
55
|
+
}),
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
isError: true,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
try {
|
|
62
|
+
const response = await apiClient.post('/mcp/workspace-members/add', {
|
|
63
|
+
workspaceId,
|
|
64
|
+
userId,
|
|
65
|
+
role: role || 'member',
|
|
66
|
+
});
|
|
67
|
+
if (!response.success || !response.data) {
|
|
68
|
+
return {
|
|
69
|
+
content: [
|
|
70
|
+
{
|
|
71
|
+
type: 'text',
|
|
72
|
+
text: JSON.stringify({
|
|
73
|
+
error: 'Failed to add workspace member',
|
|
74
|
+
message: response.message || 'API returned unsuccessful response',
|
|
75
|
+
}),
|
|
76
|
+
},
|
|
77
|
+
],
|
|
78
|
+
isError: true,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
const { member } = response.data;
|
|
82
|
+
return {
|
|
83
|
+
content: [
|
|
84
|
+
{
|
|
85
|
+
type: 'text',
|
|
86
|
+
text: JSON.stringify({
|
|
87
|
+
userId: member.userId,
|
|
88
|
+
email: member.email,
|
|
89
|
+
role: member.role,
|
|
90
|
+
workspaceId: member.workspaceId,
|
|
91
|
+
joinedAt: member.joinedAt,
|
|
92
|
+
userName: member.user?.name,
|
|
93
|
+
username: member.user?.username,
|
|
94
|
+
message: `Added ${member.user?.name || member.email} as ${member.role}`,
|
|
95
|
+
}, null, 2),
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
const status = getErrorResponseStatus(error);
|
|
102
|
+
const responseData = getErrorResponseData(error);
|
|
103
|
+
// Handle specific error codes
|
|
104
|
+
if (status === 403) {
|
|
105
|
+
return {
|
|
106
|
+
content: [
|
|
107
|
+
{
|
|
108
|
+
type: 'text',
|
|
109
|
+
text: JSON.stringify({
|
|
110
|
+
error: 'Access denied',
|
|
111
|
+
message: 'Only workspace owner or admin can add members',
|
|
112
|
+
}),
|
|
113
|
+
},
|
|
114
|
+
],
|
|
115
|
+
isError: true,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
if (status === 404) {
|
|
119
|
+
return {
|
|
120
|
+
content: [
|
|
121
|
+
{
|
|
122
|
+
type: 'text',
|
|
123
|
+
text: JSON.stringify({
|
|
124
|
+
error: 'Not found',
|
|
125
|
+
message: responseData?.error === 'Target user not found'
|
|
126
|
+
? 'User does not exist in BRXCE'
|
|
127
|
+
: 'Workspace not found or access denied',
|
|
128
|
+
hint: responseData?.error === 'Target user not found'
|
|
129
|
+
? 'Use brxce_create_invitation to invite users via email'
|
|
130
|
+
: 'Verify workspace ID from user://me resource',
|
|
131
|
+
}),
|
|
132
|
+
},
|
|
133
|
+
],
|
|
134
|
+
isError: true,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
if (status === 400) {
|
|
138
|
+
const errMsg = responseData?.error || 'Invalid request';
|
|
139
|
+
let hint = 'Check the request parameters';
|
|
140
|
+
if (errMsg.includes('already a member')) {
|
|
141
|
+
hint = 'Use brxce_list_workspace_members to check existing members';
|
|
142
|
+
}
|
|
143
|
+
else if (errMsg.includes('personal workspace')) {
|
|
144
|
+
hint = 'Personal workspaces cannot have multiple members';
|
|
145
|
+
}
|
|
146
|
+
return {
|
|
147
|
+
content: [
|
|
148
|
+
{
|
|
149
|
+
type: 'text',
|
|
150
|
+
text: JSON.stringify({
|
|
151
|
+
error: 'Validation error',
|
|
152
|
+
message: errMsg,
|
|
153
|
+
hint,
|
|
154
|
+
}),
|
|
155
|
+
},
|
|
156
|
+
],
|
|
157
|
+
isError: true,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
return {
|
|
161
|
+
content: [
|
|
162
|
+
{
|
|
163
|
+
type: 'text',
|
|
164
|
+
text: JSON.stringify({
|
|
165
|
+
error: 'Failed to add workspace member',
|
|
166
|
+
message: getErrorMessage(error),
|
|
167
|
+
}),
|
|
168
|
+
},
|
|
169
|
+
],
|
|
170
|
+
isError: true,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
const VALID_ROLES = ['owner', 'admin', 'member', 'viewer'];
|
|
176
|
+
/**
|
|
177
|
+
* Register Update Member Role tool for changing workspace member's role
|
|
178
|
+
*/
|
|
179
|
+
export function registerUpdateMemberRoleTool(server, apiClient) {
|
|
180
|
+
server.registerTool('brxce_update_member_role', {
|
|
181
|
+
description: `Update workspace member's role. Verify workspaceId via user://me.
|
|
182
|
+
|
|
183
|
+
Params: workspaceId (uuid), userId (uuid), role (owner|admin|member|viewer)
|
|
184
|
+
Returns: Updated member info with new role
|
|
185
|
+
|
|
186
|
+
Note: Only workspace owner or admin can change roles. Cannot change owner's role.`,
|
|
187
|
+
inputSchema: {
|
|
188
|
+
workspaceId: z
|
|
189
|
+
.string()
|
|
190
|
+
.uuid()
|
|
191
|
+
.describe('Workspace ID (get from user://me resource)'),
|
|
192
|
+
userId: z
|
|
193
|
+
.string()
|
|
194
|
+
.uuid()
|
|
195
|
+
.describe('User ID of the member to update'),
|
|
196
|
+
role: z
|
|
197
|
+
.enum(['owner', 'admin', 'member', 'viewer'])
|
|
198
|
+
.describe('New role to assign'),
|
|
199
|
+
},
|
|
200
|
+
}, async (args) => {
|
|
201
|
+
const { workspaceId, userId, role } = args;
|
|
202
|
+
// Validate required fields
|
|
203
|
+
if (!workspaceId || typeof workspaceId !== 'string') {
|
|
204
|
+
return {
|
|
205
|
+
content: [
|
|
206
|
+
{
|
|
207
|
+
type: 'text',
|
|
208
|
+
text: JSON.stringify({
|
|
209
|
+
error: 'Invalid workspace ID',
|
|
210
|
+
message: 'workspaceId is required and must be a UUID string',
|
|
211
|
+
hint: 'Use user://me resource to get valid workspace IDs',
|
|
212
|
+
}),
|
|
213
|
+
},
|
|
214
|
+
],
|
|
215
|
+
isError: true,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
if (!userId || typeof userId !== 'string') {
|
|
219
|
+
return {
|
|
220
|
+
content: [
|
|
221
|
+
{
|
|
222
|
+
type: 'text',
|
|
223
|
+
text: JSON.stringify({
|
|
224
|
+
error: 'Invalid user ID',
|
|
225
|
+
message: 'userId is required and must be a UUID string',
|
|
226
|
+
hint: 'Use brxce_list_workspace_members to get valid user IDs',
|
|
227
|
+
}),
|
|
228
|
+
},
|
|
229
|
+
],
|
|
230
|
+
isError: true,
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
if (!role || typeof role !== 'string') {
|
|
234
|
+
return {
|
|
235
|
+
content: [
|
|
236
|
+
{
|
|
237
|
+
type: 'text',
|
|
238
|
+
text: JSON.stringify({
|
|
239
|
+
error: 'Invalid role',
|
|
240
|
+
message: 'role is required',
|
|
241
|
+
hint: 'Valid roles: owner, admin, member, viewer',
|
|
242
|
+
}),
|
|
243
|
+
},
|
|
244
|
+
],
|
|
245
|
+
isError: true,
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
if (!VALID_ROLES.includes(role)) {
|
|
249
|
+
return {
|
|
250
|
+
content: [
|
|
251
|
+
{
|
|
252
|
+
type: 'text',
|
|
253
|
+
text: JSON.stringify({
|
|
254
|
+
error: 'Invalid role',
|
|
255
|
+
message: `Invalid role: ${role}`,
|
|
256
|
+
hint: 'Valid roles: owner, admin, member, viewer',
|
|
257
|
+
}),
|
|
258
|
+
},
|
|
259
|
+
],
|
|
260
|
+
isError: true,
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
try {
|
|
264
|
+
const response = await apiClient.patch(`/mcp/workspaces/${workspaceId}/members/${userId}`, { role });
|
|
265
|
+
if (!response.success || !response.data) {
|
|
266
|
+
return {
|
|
267
|
+
content: [
|
|
268
|
+
{
|
|
269
|
+
type: 'text',
|
|
270
|
+
text: JSON.stringify({
|
|
271
|
+
error: 'Failed to update member role',
|
|
272
|
+
message: response.message || 'API returned unsuccessful response',
|
|
273
|
+
}),
|
|
274
|
+
},
|
|
275
|
+
],
|
|
276
|
+
isError: true,
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
const { member } = response.data;
|
|
280
|
+
return {
|
|
281
|
+
content: [
|
|
282
|
+
{
|
|
283
|
+
type: 'text',
|
|
284
|
+
text: JSON.stringify({
|
|
285
|
+
userId: member.userId,
|
|
286
|
+
email: member.email,
|
|
287
|
+
role: member.role,
|
|
288
|
+
workspaceId: member.workspaceId,
|
|
289
|
+
userName: member.user?.name,
|
|
290
|
+
username: member.user?.username,
|
|
291
|
+
message: `Updated ${member.user?.name || member.email} role to ${member.role}`,
|
|
292
|
+
}, null, 2),
|
|
293
|
+
},
|
|
294
|
+
],
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
catch (error) {
|
|
298
|
+
const status = getErrorResponseStatus(error);
|
|
299
|
+
const responseData = getErrorResponseData(error);
|
|
300
|
+
if (status === 403) {
|
|
301
|
+
return {
|
|
302
|
+
content: [
|
|
303
|
+
{
|
|
304
|
+
type: 'text',
|
|
305
|
+
text: JSON.stringify({
|
|
306
|
+
error: 'Access denied',
|
|
307
|
+
message: 'Only workspace owner or admin can change member roles',
|
|
308
|
+
}),
|
|
309
|
+
},
|
|
310
|
+
],
|
|
311
|
+
isError: true,
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
if (status === 404) {
|
|
315
|
+
return {
|
|
316
|
+
content: [
|
|
317
|
+
{
|
|
318
|
+
type: 'text',
|
|
319
|
+
text: JSON.stringify({
|
|
320
|
+
error: 'Not found',
|
|
321
|
+
message: responseData?.error || 'Member or workspace not found',
|
|
322
|
+
hint: 'Verify workspace and user IDs from brxce_list_workspace_members',
|
|
323
|
+
}),
|
|
324
|
+
},
|
|
325
|
+
],
|
|
326
|
+
isError: true,
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
if (status === 400) {
|
|
330
|
+
const errMsg = responseData?.error || 'Invalid request';
|
|
331
|
+
let hint = 'Check the request parameters';
|
|
332
|
+
if (errMsg.includes('owner')) {
|
|
333
|
+
hint = 'Workspace owner role cannot be changed directly';
|
|
334
|
+
}
|
|
335
|
+
return {
|
|
336
|
+
content: [
|
|
337
|
+
{
|
|
338
|
+
type: 'text',
|
|
339
|
+
text: JSON.stringify({
|
|
340
|
+
error: 'Validation error',
|
|
341
|
+
message: errMsg,
|
|
342
|
+
hint,
|
|
343
|
+
}),
|
|
344
|
+
},
|
|
345
|
+
],
|
|
346
|
+
isError: true,
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
return {
|
|
350
|
+
content: [
|
|
351
|
+
{
|
|
352
|
+
type: 'text',
|
|
353
|
+
text: JSON.stringify({
|
|
354
|
+
error: 'Failed to update member role',
|
|
355
|
+
message: getErrorMessage(error),
|
|
356
|
+
}),
|
|
357
|
+
},
|
|
358
|
+
],
|
|
359
|
+
isError: true,
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Register Remove Workspace Member tool for removing a member from workspace
|
|
366
|
+
*/
|
|
367
|
+
export function registerRemoveWorkspaceMemberTool(server, apiClient) {
|
|
368
|
+
server.registerTool('brxce_remove_workspace_member', {
|
|
369
|
+
description: `Remove a member from workspace. Verify workspaceId via user://me.
|
|
370
|
+
|
|
371
|
+
Params: workspaceId (uuid), userId (uuid)
|
|
372
|
+
Returns: Success confirmation
|
|
373
|
+
|
|
374
|
+
Note: Only workspace owner or admin can remove members. Cannot remove workspace owner.`,
|
|
375
|
+
inputSchema: {
|
|
376
|
+
workspaceId: z
|
|
377
|
+
.string()
|
|
378
|
+
.uuid()
|
|
379
|
+
.describe('Workspace ID (get from user://me resource)'),
|
|
380
|
+
userId: z
|
|
381
|
+
.string()
|
|
382
|
+
.uuid()
|
|
383
|
+
.describe('User ID of the member to remove'),
|
|
384
|
+
},
|
|
385
|
+
}, async (args) => {
|
|
386
|
+
const { workspaceId, userId } = args;
|
|
387
|
+
// Validate required fields
|
|
388
|
+
if (!workspaceId || typeof workspaceId !== 'string') {
|
|
389
|
+
return {
|
|
390
|
+
content: [
|
|
391
|
+
{
|
|
392
|
+
type: 'text',
|
|
393
|
+
text: JSON.stringify({
|
|
394
|
+
error: 'Invalid workspace ID',
|
|
395
|
+
message: 'workspaceId is required and must be a UUID string',
|
|
396
|
+
hint: 'Use user://me resource to get valid workspace IDs',
|
|
397
|
+
}),
|
|
398
|
+
},
|
|
399
|
+
],
|
|
400
|
+
isError: true,
|
|
401
|
+
};
|
|
402
|
+
}
|
|
403
|
+
if (!userId || typeof userId !== 'string') {
|
|
404
|
+
return {
|
|
405
|
+
content: [
|
|
406
|
+
{
|
|
407
|
+
type: 'text',
|
|
408
|
+
text: JSON.stringify({
|
|
409
|
+
error: 'Invalid user ID',
|
|
410
|
+
message: 'userId is required and must be a UUID string',
|
|
411
|
+
hint: 'Use brxce_list_workspace_members to get valid user IDs',
|
|
412
|
+
}),
|
|
413
|
+
},
|
|
414
|
+
],
|
|
415
|
+
isError: true,
|
|
416
|
+
};
|
|
417
|
+
}
|
|
418
|
+
try {
|
|
419
|
+
const response = await apiClient.delete(`/mcp/workspaces/${workspaceId}/members/${userId}`);
|
|
420
|
+
if (!response.success) {
|
|
421
|
+
return {
|
|
422
|
+
content: [
|
|
423
|
+
{
|
|
424
|
+
type: 'text',
|
|
425
|
+
text: JSON.stringify({
|
|
426
|
+
error: 'Failed to remove workspace member',
|
|
427
|
+
message: response.message || 'API returned unsuccessful response',
|
|
428
|
+
}),
|
|
429
|
+
},
|
|
430
|
+
],
|
|
431
|
+
isError: true,
|
|
432
|
+
};
|
|
433
|
+
}
|
|
434
|
+
return {
|
|
435
|
+
content: [
|
|
436
|
+
{
|
|
437
|
+
type: 'text',
|
|
438
|
+
text: JSON.stringify({
|
|
439
|
+
success: true,
|
|
440
|
+
workspaceId,
|
|
441
|
+
userId,
|
|
442
|
+
message: `Member has been removed from the workspace`,
|
|
443
|
+
}, null, 2),
|
|
444
|
+
},
|
|
445
|
+
],
|
|
446
|
+
};
|
|
447
|
+
}
|
|
448
|
+
catch (error) {
|
|
449
|
+
const status = getErrorResponseStatus(error);
|
|
450
|
+
const responseData = getErrorResponseData(error);
|
|
451
|
+
if (status === 403) {
|
|
452
|
+
return {
|
|
453
|
+
content: [
|
|
454
|
+
{
|
|
455
|
+
type: 'text',
|
|
456
|
+
text: JSON.stringify({
|
|
457
|
+
error: 'Access denied',
|
|
458
|
+
message: 'Only workspace owner or admin can remove members',
|
|
459
|
+
}),
|
|
460
|
+
},
|
|
461
|
+
],
|
|
462
|
+
isError: true,
|
|
463
|
+
};
|
|
464
|
+
}
|
|
465
|
+
if (status === 404) {
|
|
466
|
+
return {
|
|
467
|
+
content: [
|
|
468
|
+
{
|
|
469
|
+
type: 'text',
|
|
470
|
+
text: JSON.stringify({
|
|
471
|
+
error: 'Not found',
|
|
472
|
+
message: responseData?.error || 'Member or workspace not found',
|
|
473
|
+
hint: 'Verify workspace and user IDs from brxce_list_workspace_members',
|
|
474
|
+
}),
|
|
475
|
+
},
|
|
476
|
+
],
|
|
477
|
+
isError: true,
|
|
478
|
+
};
|
|
479
|
+
}
|
|
480
|
+
if (status === 400) {
|
|
481
|
+
const errMsg = responseData?.error || 'Invalid request';
|
|
482
|
+
let hint = 'Check the request parameters';
|
|
483
|
+
if (errMsg.includes('owner')) {
|
|
484
|
+
hint = 'Workspace owner cannot be removed. Transfer ownership first.';
|
|
485
|
+
}
|
|
486
|
+
else if (errMsg.includes('yourself')) {
|
|
487
|
+
hint = 'Use leave workspace option instead of removal';
|
|
488
|
+
}
|
|
489
|
+
return {
|
|
490
|
+
content: [
|
|
491
|
+
{
|
|
492
|
+
type: 'text',
|
|
493
|
+
text: JSON.stringify({
|
|
494
|
+
error: 'Validation error',
|
|
495
|
+
message: errMsg,
|
|
496
|
+
hint,
|
|
497
|
+
}),
|
|
498
|
+
},
|
|
499
|
+
],
|
|
500
|
+
isError: true,
|
|
501
|
+
};
|
|
502
|
+
}
|
|
503
|
+
return {
|
|
504
|
+
content: [
|
|
505
|
+
{
|
|
506
|
+
type: 'text',
|
|
507
|
+
text: JSON.stringify({
|
|
508
|
+
error: 'Failed to remove workspace member',
|
|
509
|
+
message: getErrorMessage(error),
|
|
510
|
+
}),
|
|
511
|
+
},
|
|
512
|
+
],
|
|
513
|
+
isError: true,
|
|
514
|
+
};
|
|
515
|
+
}
|
|
516
|
+
});
|
|
517
|
+
}
|
|
518
|
+
//# 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;AAwB3D;;;GAGG;AACH,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QA2IvF"}
|