@doxhub/mcp-server 0.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.
Files changed (106) hide show
  1. package/README.md +231 -0
  2. package/dist/api-client.d.ts +27 -0
  3. package/dist/api-client.d.ts.map +1 -0
  4. package/dist/api-client.js +75 -0
  5. package/dist/api-client.js.map +1 -0
  6. package/dist/auth/check-permissions.d.ts +16 -0
  7. package/dist/auth/check-permissions.d.ts.map +1 -0
  8. package/dist/auth/check-permissions.js +43 -0
  9. package/dist/auth/check-permissions.js.map +1 -0
  10. package/dist/auth/get-user-workspaces.d.ts +3 -0
  11. package/dist/auth/get-user-workspaces.d.ts.map +1 -0
  12. package/dist/auth/get-user-workspaces.js +16 -0
  13. package/dist/auth/get-user-workspaces.js.map +1 -0
  14. package/dist/auth/mcp-token-verify.d.ts +10 -0
  15. package/dist/auth/mcp-token-verify.d.ts.map +1 -0
  16. package/dist/auth/mcp-token-verify.js +43 -0
  17. package/dist/auth/mcp-token-verify.js.map +1 -0
  18. package/dist/auth/verify-token.d.ts +4 -0
  19. package/dist/auth/verify-token.d.ts.map +1 -0
  20. package/dist/auth/verify-token.js +61 -0
  21. package/dist/auth/verify-token.js.map +1 -0
  22. package/dist/cli/config-manager.d.ts +29 -0
  23. package/dist/cli/config-manager.d.ts.map +1 -0
  24. package/dist/cli/config-manager.js +111 -0
  25. package/dist/cli/config-manager.js.map +1 -0
  26. package/dist/cli/credentials.d.ts +64 -0
  27. package/dist/cli/credentials.d.ts.map +1 -0
  28. package/dist/cli/credentials.js +117 -0
  29. package/dist/cli/credentials.js.map +1 -0
  30. package/dist/cli/profiles.d.ts +3 -0
  31. package/dist/cli/profiles.d.ts.map +1 -0
  32. package/dist/cli/profiles.js +35 -0
  33. package/dist/cli/profiles.js.map +1 -0
  34. package/dist/cli/revoke.d.ts +3 -0
  35. package/dist/cli/revoke.d.ts.map +1 -0
  36. package/dist/cli/revoke.js +60 -0
  37. package/dist/cli/revoke.js.map +1 -0
  38. package/dist/cli/setup.d.ts +11 -0
  39. package/dist/cli/setup.d.ts.map +1 -0
  40. package/dist/cli/setup.js +296 -0
  41. package/dist/cli/setup.js.map +1 -0
  42. package/dist/cli/status.d.ts +2 -0
  43. package/dist/cli/status.d.ts.map +1 -0
  44. package/dist/cli/status.js +45 -0
  45. package/dist/cli/status.js.map +1 -0
  46. package/dist/index.d.ts +3 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +124 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/queries/file-queries.d.ts +15 -0
  51. package/dist/queries/file-queries.d.ts.map +1 -0
  52. package/dist/queries/file-queries.js +75 -0
  53. package/dist/queries/file-queries.js.map +1 -0
  54. package/dist/queries/search-queries.d.ts +7 -0
  55. package/dist/queries/search-queries.d.ts.map +1 -0
  56. package/dist/queries/search-queries.js +93 -0
  57. package/dist/queries/search-queries.js.map +1 -0
  58. package/dist/queries/version-queries.d.ts +26 -0
  59. package/dist/queries/version-queries.d.ts.map +1 -0
  60. package/dist/queries/version-queries.js +46 -0
  61. package/dist/queries/version-queries.js.map +1 -0
  62. package/dist/queries/workspace-queries.d.ts +10 -0
  63. package/dist/queries/workspace-queries.d.ts.map +1 -0
  64. package/dist/queries/workspace-queries.js +108 -0
  65. package/dist/queries/workspace-queries.js.map +1 -0
  66. package/dist/server.d.ts +21 -0
  67. package/dist/server.d.ts.map +1 -0
  68. package/dist/server.js +81 -0
  69. package/dist/server.js.map +1 -0
  70. package/dist/tools/get-file-versions.d.ts +30 -0
  71. package/dist/tools/get-file-versions.d.ts.map +1 -0
  72. package/dist/tools/get-file-versions.js +42 -0
  73. package/dist/tools/get-file-versions.js.map +1 -0
  74. package/dist/tools/get-file.d.ts +26 -0
  75. package/dist/tools/get-file.d.ts.map +1 -0
  76. package/dist/tools/get-file.js +51 -0
  77. package/dist/tools/get-file.js.map +1 -0
  78. package/dist/tools/get-project-structure.d.ts +26 -0
  79. package/dist/tools/get-project-structure.d.ts.map +1 -0
  80. package/dist/tools/get-project-structure.js +37 -0
  81. package/dist/tools/get-project-structure.js.map +1 -0
  82. package/dist/tools/index.d.ts +8 -0
  83. package/dist/tools/index.d.ts.map +1 -0
  84. package/dist/tools/index.js +8 -0
  85. package/dist/tools/index.js.map +1 -0
  86. package/dist/tools/list-files.d.ts +35 -0
  87. package/dist/tools/list-files.d.ts.map +1 -0
  88. package/dist/tools/list-files.js +74 -0
  89. package/dist/tools/list-files.js.map +1 -0
  90. package/dist/tools/list-projects.d.ts +19 -0
  91. package/dist/tools/list-projects.d.ts.map +1 -0
  92. package/dist/tools/list-projects.js +74 -0
  93. package/dist/tools/list-projects.js.map +1 -0
  94. package/dist/tools/list-workspaces.d.ts +17 -0
  95. package/dist/tools/list-workspaces.d.ts.map +1 -0
  96. package/dist/tools/list-workspaces.js +45 -0
  97. package/dist/tools/list-workspaces.js.map +1 -0
  98. package/dist/tools/search-documentation.d.ts +38 -0
  99. package/dist/tools/search-documentation.d.ts.map +1 -0
  100. package/dist/tools/search-documentation.js +53 -0
  101. package/dist/tools/search-documentation.js.map +1 -0
  102. package/dist/types.d.ts +126 -0
  103. package/dist/types.d.ts.map +1 -0
  104. package/dist/types.js +2 -0
  105. package/dist/types.js.map +1 -0
  106. package/package.json +57 -0
@@ -0,0 +1,37 @@
1
+ import { getProjectStructure as getProjectStructureQuery } from '../queries/workspace-queries.js';
2
+ export const getProjectStructureTool = {
3
+ name: 'get_project_structure',
4
+ description: 'Get the complete hierarchical structure of a project\'s documentation. Shows all folders and files organized by their relationship. Use this to understand how documentation is organized.',
5
+ inputSchema: {
6
+ type: 'object',
7
+ properties: {
8
+ projectId: {
9
+ type: 'string',
10
+ description: 'The UUID of the project',
11
+ },
12
+ includeArchived: {
13
+ type: 'boolean',
14
+ description: 'Include archived files in the structure (default: false)',
15
+ },
16
+ },
17
+ required: ['projectId'],
18
+ },
19
+ };
20
+ export async function getProjectStructure(auth, args) {
21
+ const { projectId, includeArchived = false } = args;
22
+ if (!projectId || typeof projectId !== 'string') {
23
+ throw new Error('projectId parameter is required and must be a string');
24
+ }
25
+ const results = await getProjectStructureQuery(auth, projectId, {
26
+ includeArchived,
27
+ });
28
+ return {
29
+ content: [
30
+ {
31
+ type: 'text',
32
+ text: JSON.stringify(results, null, 2),
33
+ },
34
+ ],
35
+ };
36
+ }
37
+ //# sourceMappingURL=get-project-structure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-project-structure.js","sourceRoot":"","sources":["../../src/tools/get-project-structure.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,IAAI,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAElG,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EACT,4LAA4L;IAC9L,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yBAAyB;aACvC;YACD,eAAe,EAAE;gBACf,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,0DAA0D;aACxE;SACF;QACD,QAAQ,EAAE,CAAC,WAAW,CAAC;KACxB;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAiB,EAAE,IAAS;IACpE,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;IAEpD,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,wBAAwB,CAAC,IAAI,EAAE,SAAS,EAAE;QAC9D,eAAe;KAChB,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;aACvC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ export * from './search-documentation.js';
2
+ export * from './get-file.js';
3
+ export * from './list-files.js';
4
+ export * from './list-projects.js';
5
+ export * from './get-file-versions.js';
6
+ export * from './get-project-structure.js';
7
+ export * from './list-workspaces.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export * from './search-documentation.js';
2
+ export * from './get-file.js';
3
+ export * from './list-files.js';
4
+ export * from './list-projects.js';
5
+ export * from './get-file-versions.js';
6
+ export * from './get-project-structure.js';
7
+ export * from './list-workspaces.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,35 @@
1
+ import type { AuthContext } from '../types.js';
2
+ export declare const listFilesTool: {
3
+ name: string;
4
+ description: string;
5
+ inputSchema: {
6
+ type: string;
7
+ properties: {
8
+ projectId: {
9
+ type: string;
10
+ description: string;
11
+ };
12
+ folderId: {
13
+ type: string[];
14
+ description: string;
15
+ };
16
+ status: {
17
+ type: string;
18
+ enum: string[];
19
+ description: string;
20
+ };
21
+ limit: {
22
+ type: string;
23
+ description: string;
24
+ };
25
+ };
26
+ required: string[];
27
+ };
28
+ };
29
+ export declare function listFiles(auth: AuthContext, args: any): Promise<{
30
+ content: {
31
+ type: string;
32
+ text: string;
33
+ }[];
34
+ }>;
35
+ //# sourceMappingURL=list-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-files.d.ts","sourceRoot":"","sources":["../../src/tools/list-files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BzB,CAAC;AAEF,wBAAsB,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG;;;;;GAoD3D"}
@@ -0,0 +1,74 @@
1
+ import { listFiles as listFilesQuery } from '../queries/file-queries.js';
2
+ export const listFilesTool = {
3
+ name: 'list_files',
4
+ description: 'Lists files in a project or folder (names and metadata only, no content). Use get_file to retrieve specific file content.',
5
+ inputSchema: {
6
+ type: 'object',
7
+ properties: {
8
+ projectId: {
9
+ type: 'string',
10
+ description: 'Required: Project ID to list files from',
11
+ },
12
+ folderId: {
13
+ type: ['string', 'null'],
14
+ description: 'Optional: filter by folder ID (null for root files, omit for all files)',
15
+ },
16
+ status: {
17
+ type: 'string',
18
+ enum: ['active', 'archived'],
19
+ description: 'Filter by file status (default: active)',
20
+ },
21
+ limit: {
22
+ type: 'number',
23
+ description: 'Maximum number of results to return (default: 50, max: 100)',
24
+ },
25
+ },
26
+ required: ['projectId'],
27
+ },
28
+ };
29
+ export async function listFiles(auth, args) {
30
+ const { projectId, folderId, status, limit = 50 } = args;
31
+ const results = await listFilesQuery(auth, {
32
+ projectId,
33
+ folderId,
34
+ status,
35
+ limit,
36
+ offset: 0,
37
+ });
38
+ const files = results.files || [];
39
+ if (files.length === 0) {
40
+ return {
41
+ content: [
42
+ {
43
+ type: 'text',
44
+ text: 'No files found in this project.',
45
+ },
46
+ ],
47
+ };
48
+ }
49
+ // Format as clean summary without content
50
+ let output = `📄 Files in Project (${files.length} total)\n\n`;
51
+ files.forEach((file, index) => {
52
+ const contentSize = file.content ? file.content.length : 0;
53
+ const sizeKB = (contentSize / 1024).toFixed(1);
54
+ output += `${index + 1}. **${file.title}**\n`;
55
+ output += ` ID: ${file.id}\n`;
56
+ output += ` Path: ${file.path}\n`;
57
+ output += ` Size: ${sizeKB} KB\n`;
58
+ output += ` Updated: ${file.updatedAt?.substring(0, 10) || 'Unknown'}\n`;
59
+ if (file.status === 'archived') {
60
+ output += ` Status: 🗄️ Archived\n`;
61
+ }
62
+ output += '\n';
63
+ });
64
+ output += `💡 Use get_file with a file ID to retrieve the full content of a specific file.`;
65
+ return {
66
+ content: [
67
+ {
68
+ type: 'text',
69
+ text: output,
70
+ },
71
+ ],
72
+ };
73
+ }
74
+ //# sourceMappingURL=list-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-files.js","sourceRoot":"","sources":["../../src/tools/list-files.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEzE,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,YAAY;IAClB,WAAW,EACT,2HAA2H;IAC7H,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yCAAyC;aACvD;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;gBACxB,WAAW,EACT,yEAAyE;aAC5E;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;gBAC5B,WAAW,EAAE,yCAAyC;aACvD;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,6DAA6D;aAC3E;SACF;QACD,QAAQ,EAAE,CAAC,WAAW,CAAC;KACxB;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAiB,EAAE,IAAS;IAC1D,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;IAEzD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE;QACzC,SAAS;QACT,QAAQ;QACR,MAAM;QACN,KAAK;QACL,MAAM,EAAE,CAAC;KACV,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IAElC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,iCAAiC;iBACxC;aACF;SACF,CAAC;IACJ,CAAC;IAED,0CAA0C;IAC1C,IAAI,MAAM,GAAG,wBAAwB,KAAK,CAAC,MAAM,aAAa,CAAC;IAE/D,KAAK,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,KAAa,EAAE,EAAE;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAE/C,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,MAAM,CAAC;QAC9C,MAAM,IAAI,UAAU,IAAI,CAAC,EAAE,IAAI,CAAC;QAChC,MAAM,IAAI,YAAY,IAAI,CAAC,IAAI,IAAI,CAAC;QACpC,MAAM,IAAI,YAAY,MAAM,OAAO,CAAC;QACpC,MAAM,IAAI,eAAe,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,IAAI,CAAC;QAC3E,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,IAAI,2BAA2B,CAAC;QACxC,CAAC;QACD,MAAM,IAAI,IAAI,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,iFAAiF,CAAC;IAE5F,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;aACb;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import type { AuthContext } from '../types.js';
3
+ export declare const listProjectsTool: Tool;
4
+ export declare function listProjects(auth: AuthContext, args: {
5
+ workspaceId?: string;
6
+ }): Promise<{
7
+ content: {
8
+ type: string;
9
+ text: string;
10
+ }[];
11
+ isError?: never;
12
+ } | {
13
+ content: {
14
+ type: string;
15
+ text: string;
16
+ }[];
17
+ isError: boolean;
18
+ }>;
19
+ //# sourceMappingURL=list-projects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-projects.d.ts","sourceRoot":"","sources":["../../src/tools/list-projects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,eAAO,MAAM,gBAAgB,EAAE,IAY9B,CAAC;AAEF,wBAAsB,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;GAgEnF"}
@@ -0,0 +1,74 @@
1
+ import { getApiClient } from '../api-client.js';
2
+ export const listProjectsTool = {
3
+ name: 'list_projects',
4
+ description: 'Lists all projects in a workspace with file counts. Use this to see what projects you have before listing files.',
5
+ inputSchema: {
6
+ type: 'object',
7
+ properties: {
8
+ workspaceId: {
9
+ type: 'string',
10
+ description: 'Workspace ID. If not provided, uses your default workspace.',
11
+ },
12
+ },
13
+ },
14
+ };
15
+ export async function listProjects(auth, args) {
16
+ const apiClient = getApiClient();
17
+ const workspaceId = args.workspaceId || auth.workspaceId;
18
+ if (!workspaceId) {
19
+ return {
20
+ content: [
21
+ {
22
+ type: 'text',
23
+ text: 'No workspace specified. Please provide a workspaceId or select a default workspace.',
24
+ },
25
+ ],
26
+ };
27
+ }
28
+ try {
29
+ const projects = await apiClient.getProjects(workspaceId);
30
+ if (!projects || projects.length === 0) {
31
+ return {
32
+ content: [
33
+ {
34
+ type: 'text',
35
+ text: 'No projects found in this workspace.',
36
+ },
37
+ ],
38
+ };
39
+ }
40
+ // Format as a clean summary
41
+ let output = `📂 Projects in Workspace (${projects.length} total)\n\n`;
42
+ projects.forEach((project, index) => {
43
+ output += `${index + 1}. **${project.name}**\n`;
44
+ output += ` ID: ${project.id}\n`;
45
+ output += ` Files: ${project.fileCount || 0}\n`;
46
+ output += ` Folders: ${project.folderCount || 0}\n`;
47
+ if (project.description) {
48
+ output += ` Description: ${project.description}\n`;
49
+ }
50
+ output += '\n';
51
+ });
52
+ output += `💡 Use list_files with a project ID to see files in a project.`;
53
+ return {
54
+ content: [
55
+ {
56
+ type: 'text',
57
+ text: output,
58
+ },
59
+ ],
60
+ };
61
+ }
62
+ catch (error) {
63
+ return {
64
+ content: [
65
+ {
66
+ type: 'text',
67
+ text: `Error listing projects: ${error instanceof Error ? error.message : 'Unknown error'}`,
68
+ },
69
+ ],
70
+ isError: true,
71
+ };
72
+ }
73
+ }
74
+ //# sourceMappingURL=list-projects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-projects.js","sourceRoot":"","sources":["../../src/tools/list-projects.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,CAAC,MAAM,gBAAgB,GAAS;IACpC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,kHAAkH;IAC/H,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,6DAA6D;aAC3E;SACF;KACF;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAiB,EAAE,IAA8B;IAClF,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC;IAEzD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,qFAAqF;iBAC5F;aACF;SACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAE1D,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,sCAAsC;qBAC7C;iBACF;aACF,CAAC;QACJ,CAAC;QAED,4BAA4B;QAC5B,IAAI,MAAM,GAAG,6BAA6B,QAAQ,CAAC,MAAM,aAAa,CAAC;QAEvE,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAY,EAAE,KAAa,EAAE,EAAE;YAC/C,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,OAAO,OAAO,CAAC,IAAI,MAAM,CAAC;YAChD,MAAM,IAAI,UAAU,OAAO,CAAC,EAAE,IAAI,CAAC;YACnC,MAAM,IAAI,aAAa,OAAO,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC;YAClD,MAAM,IAAI,eAAe,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC;YACtD,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBACxB,MAAM,IAAI,mBAAmB,OAAO,CAAC,WAAW,IAAI,CAAC;YACvD,CAAC;YACD,MAAM,IAAI,IAAI,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,gEAAgE,CAAC;QAE3E,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM;iBACb;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;iBAC5F;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { AuthContext } from '../types.js';
2
+ export declare const listWorkspacesTool: {
3
+ name: string;
4
+ description: string;
5
+ inputSchema: {
6
+ type: string;
7
+ properties: {};
8
+ required: never[];
9
+ };
10
+ };
11
+ export declare function listWorkspaces(auth: AuthContext, _args: any): Promise<{
12
+ content: {
13
+ type: string;
14
+ text: string;
15
+ }[];
16
+ }>;
17
+ //# sourceMappingURL=list-workspaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-workspaces.d.ts","sourceRoot":"","sources":["../../src/tools/list-workspaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,eAAO,MAAM,kBAAkB;;;;;;;;CAS9B,CAAC;AAEF,wBAAsB,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG;;;;;GAuCjE"}
@@ -0,0 +1,45 @@
1
+ import { listWorkspaces as listWorkspacesQuery } from '../queries/workspace-queries.js';
2
+ export const listWorkspacesTool = {
3
+ name: 'list_workspaces',
4
+ description: 'Lists all workspaces you have access to with your role. Use list_projects to see projects in a workspace.',
5
+ inputSchema: {
6
+ type: 'object',
7
+ properties: {},
8
+ required: [],
9
+ },
10
+ };
11
+ export async function listWorkspaces(auth, _args) {
12
+ const results = await listWorkspacesQuery(auth, {
13
+ includeProjects: false,
14
+ });
15
+ const workspaces = results.workspaces || [];
16
+ if (workspaces.length === 0) {
17
+ return {
18
+ content: [
19
+ {
20
+ type: 'text',
21
+ text: 'No workspaces found.',
22
+ },
23
+ ],
24
+ };
25
+ }
26
+ // Format as clean summary
27
+ let output = `🏢 Your Workspaces (${workspaces.length} total)\n\n`;
28
+ workspaces.forEach((workspace, index) => {
29
+ output += `${index + 1}. **${workspace.name}**\n`;
30
+ output += ` ID: ${workspace.id}\n`;
31
+ output += ` Role: ${workspace.role}\n`;
32
+ output += ` Created: ${workspace.createdAt?.substring(0, 10) || 'Unknown'}\n`;
33
+ output += '\n';
34
+ });
35
+ output += `💡 Use list_projects with a workspace ID to see projects in a workspace.`;
36
+ return {
37
+ content: [
38
+ {
39
+ type: 'text',
40
+ text: output,
41
+ },
42
+ ],
43
+ };
44
+ }
45
+ //# sourceMappingURL=list-workspaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-workspaces.js","sourceRoot":"","sources":["../../src/tools/list-workspaces.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,IAAI,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAExF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EACT,2GAA2G;IAC7G,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,EAAE;KACb;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAiB,EAAE,KAAU;IAChE,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE;QAC9C,eAAe,EAAE,KAAK;KACvB,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;IAE5C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,sBAAsB;iBAC7B;aACF;SACF,CAAC;IACJ,CAAC;IAED,0BAA0B;IAC1B,IAAI,MAAM,GAAG,uBAAuB,UAAU,CAAC,MAAM,aAAa,CAAC;IAEnE,UAAU,CAAC,OAAO,CAAC,CAAC,SAAc,EAAE,KAAa,EAAE,EAAE;QACnD,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,OAAO,SAAS,CAAC,IAAI,MAAM,CAAC;QAClD,MAAM,IAAI,UAAU,SAAS,CAAC,EAAE,IAAI,CAAC;QACrC,MAAM,IAAI,YAAY,SAAS,CAAC,IAAI,IAAI,CAAC;QACzC,MAAM,IAAI,eAAe,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,IAAI,CAAC;QAChF,MAAM,IAAI,IAAI,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,0EAA0E,CAAC;IAErF,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;aACb;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { AuthContext } from '../types.js';
2
+ export declare const searchDocumentationTool: {
3
+ name: string;
4
+ description: string;
5
+ inputSchema: {
6
+ type: string;
7
+ properties: {
8
+ query: {
9
+ type: string;
10
+ description: string;
11
+ };
12
+ workspaceId: {
13
+ type: string;
14
+ description: string;
15
+ };
16
+ projectId: {
17
+ type: string;
18
+ description: string;
19
+ };
20
+ limit: {
21
+ type: string;
22
+ description: string;
23
+ };
24
+ offset: {
25
+ type: string;
26
+ description: string;
27
+ };
28
+ };
29
+ required: string[];
30
+ };
31
+ };
32
+ export declare function searchDocumentation(auth: AuthContext, args: any): Promise<{
33
+ content: {
34
+ type: string;
35
+ text: string;
36
+ }[];
37
+ }>;
38
+ //# sourceMappingURL=search-documentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-documentation.d.ts","sourceRoot":"","sources":["../../src/tools/search-documentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BnC,CAAC;AAEF,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG;;;;;GAuBrE"}
@@ -0,0 +1,53 @@
1
+ import { searchDocumentation as searchQuery } from '../queries/search-queries.js';
2
+ export const searchDocumentationTool = {
3
+ name: 'search_documentation',
4
+ description: 'Search through all documentation files you have access to. Returns matching files with highlighted excerpts. Use this to find relevant documentation across all your workspaces.',
5
+ inputSchema: {
6
+ type: 'object',
7
+ properties: {
8
+ query: {
9
+ type: 'string',
10
+ description: 'The search query to find in file titles and content',
11
+ },
12
+ workspaceId: {
13
+ type: 'string',
14
+ description: 'Optional: filter results to a specific workspace',
15
+ },
16
+ projectId: {
17
+ type: 'string',
18
+ description: 'Optional: filter results to a specific project',
19
+ },
20
+ limit: {
21
+ type: 'number',
22
+ description: 'Maximum number of results to return (default: 10, max: 50)',
23
+ },
24
+ offset: {
25
+ type: 'number',
26
+ description: 'Number of results to skip for pagination (default: 0)',
27
+ },
28
+ },
29
+ required: ['query'],
30
+ },
31
+ };
32
+ export async function searchDocumentation(auth, args) {
33
+ const { query, workspaceId, projectId, limit, offset } = args;
34
+ if (!query || typeof query !== 'string') {
35
+ throw new Error('query parameter is required and must be a string');
36
+ }
37
+ const results = await searchQuery(auth, {
38
+ query,
39
+ workspaceId,
40
+ projectId,
41
+ limit,
42
+ offset,
43
+ });
44
+ return {
45
+ content: [
46
+ {
47
+ type: 'text',
48
+ text: JSON.stringify(results, null, 2),
49
+ },
50
+ ],
51
+ };
52
+ }
53
+ //# sourceMappingURL=search-documentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-documentation.js","sourceRoot":"","sources":["../../src/tools/search-documentation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,IAAI,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAElF,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EACT,kLAAkL;IACpL,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,qDAAqD;aACnE;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,kDAAkD;aAChE;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,gDAAgD;aAC9D;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,4DAA4D;aAC1E;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uDAAuD;aACrE;SACF;QACD,QAAQ,EAAE,CAAC,OAAO,CAAC;KACpB;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAiB,EAAE,IAAS;IACpE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAE9D,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE;QACtC,KAAK;QACL,WAAW;QACX,SAAS;QACT,KAAK;QACL,MAAM;KACP,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;aACvC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,126 @@
1
+ export interface JWTPayload {
2
+ userId: string;
3
+ email: string;
4
+ workspaceId?: string;
5
+ }
6
+ export interface AuthContext {
7
+ userId: string;
8
+ email: string;
9
+ workspaceId?: string | null;
10
+ sessionId?: string;
11
+ }
12
+ export interface UserWorkspace {
13
+ workspaceId: string;
14
+ role: 'owner' | 'admin' | 'editor' | 'viewer';
15
+ }
16
+ export interface SearchOptions {
17
+ query: string;
18
+ workspaceId?: string;
19
+ projectId?: string;
20
+ limit?: number;
21
+ offset?: number;
22
+ }
23
+ export interface SearchResult {
24
+ fileId: string;
25
+ title: string;
26
+ path: string;
27
+ content: string;
28
+ projectId: string;
29
+ projectName: string;
30
+ workspaceId: string;
31
+ workspaceName: string;
32
+ matchScore: number;
33
+ updatedAt: Date;
34
+ }
35
+ export interface FileWithMetadata {
36
+ id: string;
37
+ title: string;
38
+ path: string;
39
+ content: string;
40
+ currentVersion: number;
41
+ status: string;
42
+ projectId: string;
43
+ projectName: string;
44
+ workspaceId: string;
45
+ workspaceName: string;
46
+ createdAt: Date;
47
+ updatedAt: Date;
48
+ createdBy: {
49
+ id: string;
50
+ name: string;
51
+ email: string;
52
+ };
53
+ updatedBy: {
54
+ id: string;
55
+ name: string;
56
+ email: string;
57
+ };
58
+ }
59
+ export interface FileListItem {
60
+ id: string;
61
+ title: string;
62
+ path: string;
63
+ currentVersion: number;
64
+ status: string;
65
+ projectId: string;
66
+ projectName: string;
67
+ updatedAt: Date;
68
+ preview: string;
69
+ }
70
+ export interface FileVersion {
71
+ versionNumber: number;
72
+ changeSummary: string | null;
73
+ createdAt: Date;
74
+ createdBy: {
75
+ id: string;
76
+ name: string;
77
+ email: string;
78
+ };
79
+ contentPreview: string;
80
+ }
81
+ export interface WorkspaceWithRole {
82
+ id: string;
83
+ name: string;
84
+ slug: string;
85
+ role: 'owner' | 'admin' | 'editor' | 'viewer';
86
+ projects?: ProjectInfo[];
87
+ }
88
+ export interface ProjectInfo {
89
+ id: string;
90
+ name: string;
91
+ slug: string;
92
+ description: string | null;
93
+ fileCount: number;
94
+ }
95
+ export interface ProjectStructure {
96
+ project: {
97
+ id: string;
98
+ name: string;
99
+ slug: string;
100
+ description: string | null;
101
+ workspaceId: string;
102
+ workspaceName: string;
103
+ };
104
+ structure: {
105
+ rootFiles: Array<{
106
+ id: string;
107
+ title: string;
108
+ path: string;
109
+ }>;
110
+ folders: Array<{
111
+ id: string;
112
+ name: string;
113
+ path: string;
114
+ files: Array<{
115
+ id: string;
116
+ title: string;
117
+ path: string;
118
+ }>;
119
+ }>;
120
+ };
121
+ stats: {
122
+ totalFiles: number;
123
+ totalFolders: number;
124
+ };
125
+ }
126
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@doxhub/mcp-server",
3
+ "version": "0.1.0",
4
+ "description": "Model Context Protocol (MCP) server for DoxHub - Connect Claude to your documentation",
5
+ "keywords": [
6
+ "mcp",
7
+ "model-context-protocol",
8
+ "claude",
9
+ "ai",
10
+ "documentation",
11
+ "doxhub"
12
+ ],
13
+ "author": "DoxHub",
14
+ "license": "MIT",
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "https://github.com/tomjutla/doxhub.git",
18
+ "directory": "packages/mcp-server"
19
+ },
20
+ "homepage": "https://doxhub.io/docs/mcp-integration",
21
+ "bugs": {
22
+ "url": "https://github.com/tomjutla/doxhub/issues"
23
+ },
24
+ "type": "module",
25
+ "main": "./dist/index.js",
26
+ "types": "./dist/index.d.ts",
27
+ "bin": {
28
+ "doxhub-mcp-server": "./dist/index.js"
29
+ },
30
+ "files": [
31
+ "dist",
32
+ "README.md"
33
+ ],
34
+ "scripts": {
35
+ "dev": "tsx watch src/index.ts",
36
+ "build": "tsc",
37
+ "start": "node dist/index.js",
38
+ "type-check": "tsc --noEmit",
39
+ "prepublishOnly": "npm run build"
40
+ },
41
+ "dependencies": {
42
+ "@modelcontextprotocol/sdk": "^0.5.0",
43
+ "jsonwebtoken": "^9.0.2",
44
+ "dotenv": "^16.3.1",
45
+ "open": "^9.1.0",
46
+ "chalk": "^5.3.0"
47
+ },
48
+ "devDependencies": {
49
+ "@types/jsonwebtoken": "^9.0.5",
50
+ "@types/node": "^20.11.0",
51
+ "tsx": "^4.7.0",
52
+ "typescript": "^5.3.3"
53
+ },
54
+ "engines": {
55
+ "node": ">=18.0.0"
56
+ }
57
+ }