@xihe-lab/tapd-mcp-server 1.0.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 (75) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +145 -0
  3. package/dist/index.d.ts +10 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +26 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/server.d.ts +6 -0
  8. package/dist/server.d.ts.map +1 -0
  9. package/dist/server.js +58 -0
  10. package/dist/server.js.map +1 -0
  11. package/dist/tapd-client.d.ts +17 -0
  12. package/dist/tapd-client.d.ts.map +1 -0
  13. package/dist/tapd-client.js +67 -0
  14. package/dist/tapd-client.js.map +1 -0
  15. package/dist/tools/bug.d.ts +3 -0
  16. package/dist/tools/bug.d.ts.map +1 -0
  17. package/dist/tools/bug.js +233 -0
  18. package/dist/tools/bug.js.map +1 -0
  19. package/dist/tools/comment.d.ts +3 -0
  20. package/dist/tools/comment.d.ts.map +1 -0
  21. package/dist/tools/comment.js +35 -0
  22. package/dist/tools/comment.js.map +1 -0
  23. package/dist/tools/index.d.ts +3 -0
  24. package/dist/tools/index.d.ts.map +1 -0
  25. package/dist/tools/index.js +29 -0
  26. package/dist/tools/index.js.map +1 -0
  27. package/dist/tools/iteration.d.ts +3 -0
  28. package/dist/tools/iteration.d.ts.map +1 -0
  29. package/dist/tools/iteration.js +86 -0
  30. package/dist/tools/iteration.js.map +1 -0
  31. package/dist/tools/release.d.ts +3 -0
  32. package/dist/tools/release.d.ts.map +1 -0
  33. package/dist/tools/release.js +24 -0
  34. package/dist/tools/release.js.map +1 -0
  35. package/dist/tools/settings.d.ts +3 -0
  36. package/dist/tools/settings.d.ts.map +1 -0
  37. package/dist/tools/settings.js +43 -0
  38. package/dist/tools/settings.js.map +1 -0
  39. package/dist/tools/story.d.ts +3 -0
  40. package/dist/tools/story.d.ts.map +1 -0
  41. package/dist/tools/story.js +166 -0
  42. package/dist/tools/story.js.map +1 -0
  43. package/dist/tools/task.d.ts +3 -0
  44. package/dist/tools/task.d.ts.map +1 -0
  45. package/dist/tools/task.js +125 -0
  46. package/dist/tools/task.js.map +1 -0
  47. package/dist/tools/test.d.ts +3 -0
  48. package/dist/tools/test.d.ts.map +1 -0
  49. package/dist/tools/test.js +44 -0
  50. package/dist/tools/test.js.map +1 -0
  51. package/dist/tools/timesheet.d.ts +3 -0
  52. package/dist/tools/timesheet.d.ts.map +1 -0
  53. package/dist/tools/timesheet.js +51 -0
  54. package/dist/tools/timesheet.js.map +1 -0
  55. package/dist/tools/user.d.ts +3 -0
  56. package/dist/tools/user.d.ts.map +1 -0
  57. package/dist/tools/user.js +24 -0
  58. package/dist/tools/user.js.map +1 -0
  59. package/dist/tools/wiki.d.ts +3 -0
  60. package/dist/tools/wiki.d.ts.map +1 -0
  61. package/dist/tools/wiki.js +24 -0
  62. package/dist/tools/wiki.js.map +1 -0
  63. package/dist/tools/workflow.d.ts +3 -0
  64. package/dist/tools/workflow.d.ts.map +1 -0
  65. package/dist/tools/workflow.js +30 -0
  66. package/dist/tools/workflow.js.map +1 -0
  67. package/dist/tools/workspace.d.ts +3 -0
  68. package/dist/tools/workspace.d.ts.map +1 -0
  69. package/dist/tools/workspace.js +47 -0
  70. package/dist/tools/workspace.js.map +1 -0
  71. package/dist/types.d.ts +17 -0
  72. package/dist/types.d.ts.map +1 -0
  73. package/dist/types.js +2 -0
  74. package/dist/types.js.map +1 -0
  75. package/package.json +57 -0
@@ -0,0 +1,47 @@
1
+ import { z } from 'zod';
2
+ export const workspaceTools = [
3
+ {
4
+ name: "tapd_get_workspace_info",
5
+ description: "Get TAPD workspace/project info by ID",
6
+ inputSchema: z.object({
7
+ workspace_id: z.number().describe("Project ID"),
8
+ }),
9
+ handler: async (client, params) => {
10
+ return client.get("/workspaces/get_workspace_info", params);
11
+ },
12
+ },
13
+ {
14
+ name: "tapd_get_projects",
15
+ description: "Get all projects under a company",
16
+ inputSchema: z.object({
17
+ company_id: z.number().describe("Company ID"),
18
+ category: z.string().optional().describe("Project type: project/mini_project"),
19
+ with_extends: z.number().optional().describe("Set to 1 to return custom fields"),
20
+ }),
21
+ handler: async (client, params) => {
22
+ return client.get("/workspaces/projects", params);
23
+ },
24
+ },
25
+ {
26
+ name: "tapd_get_user_projects",
27
+ description: "Get projects a user participates in",
28
+ inputSchema: z.object({
29
+ nick: z.string().describe("Member nickname"),
30
+ company_id: z.number().describe("Company ID"),
31
+ }),
32
+ handler: async (client, params) => {
33
+ return client.get("/workspaces/user_participant_projects", params);
34
+ },
35
+ },
36
+ {
37
+ name: "tapd_get_workspace_users",
38
+ description: "Get all users in a workspace",
39
+ inputSchema: z.object({
40
+ workspace_id: z.number().describe("Project ID"),
41
+ }),
42
+ handler: async (client, params) => {
43
+ return client.get("/workspaces/get_workspace_users", params);
44
+ },
45
+ },
46
+ ];
47
+ //# sourceMappingURL=workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/tools/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,CAAC,MAAM,cAAc,GAAc;IACvC;QACE,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EAAE,uCAAuC;QACpD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;SAChD,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAAkB,EAAE,MAAM,EAAE,EAAE;YAC5C,OAAO,MAAM,CAAC,GAAG,CAAC,gCAAgC,EAAE,MAAM,CAAC,CAAC;QAC9D,CAAC;KACF;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,kCAAkC;QAC/C,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC7C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YAC9E,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;SACjF,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAAkB,EAAE,MAAM,EAAE,EAAE;YAC5C,OAAO,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC;KACF;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,qCAAqC;QAClD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YAC5C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;SAC9C,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAAkB,EAAE,MAAM,EAAE,EAAE;YAC5C,OAAO,MAAM,CAAC,GAAG,CAAC,uCAAuC,EAAE,MAAM,CAAC,CAAC;QACrE,CAAC;KACF;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,WAAW,EAAE,8BAA8B;QAC3C,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;SAChD,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAAkB,EAAE,MAAM,EAAE,EAAE;YAC5C,OAAO,MAAM,CAAC,GAAG,CAAC,iCAAiC,EAAE,MAAM,CAAC,CAAC;QAC/D,CAAC;KACF;CACF,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { z } from 'zod';
2
+ import type { TapdClient } from './tapd-client.js';
3
+ /**
4
+ * Tool definition interface for MCP tools
5
+ */
6
+ export interface ToolDef<TInputSchema extends z.ZodTypeAny = z.ZodTypeAny> {
7
+ name: string;
8
+ description: string;
9
+ inputSchema: TInputSchema;
10
+ handler: (client: TapdClient, params: z.infer<TInputSchema>) => Promise<unknown>;
11
+ }
12
+ /**
13
+ * Re-export TAPD types for convenience
14
+ */
15
+ export type { TapdClient } from './tapd-client.js';
16
+ export type { TapdResponse } from './tapd-client.js';
17
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,OAAO,CAAC,YAAY,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,YAAY,CAAC;IAC1B,OAAO,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAClF;AAED;;GAEG;AACH,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
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": "@xihe-lab/tapd-mcp-server",
3
+ "version": "1.0.0",
4
+ "description": "MCP server for TAPD project management API, enabling AI assistants to manage stories, bugs, tasks, iterations and more via natural language",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "bin": {
8
+ "tapd-mcp-server": "./dist/index.js"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "start": "node dist/index.js",
13
+ "dev": "tsx src/index.ts",
14
+ "type-check": "tsc --noEmit",
15
+ "lint": "eslint src/",
16
+ "prepublishOnly": "npm run build"
17
+ },
18
+ "keywords": [
19
+ "mcp",
20
+ "mcp-server",
21
+ "tapd",
22
+ "project-management",
23
+ "ai-tools",
24
+ "claude",
25
+ "cursor"
26
+ ],
27
+ "author": "xihe-lab",
28
+ "license": "Apache-2.0",
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "git+https://github.com/xihe-lab/tapd-mcp-server.git"
32
+ },
33
+ "bugs": {
34
+ "url": "https://github.com/xihe-lab/tapd-mcp-server/issues"
35
+ },
36
+ "homepage": "https://github.com/xihe-lab/tapd-mcp-server#readme",
37
+ "engines": {
38
+ "node": ">=18.0.0"
39
+ },
40
+ "files": [
41
+ "dist",
42
+ "README.md",
43
+ "LICENSE"
44
+ ],
45
+ "dependencies": {
46
+ "@modelcontextprotocol/sdk": "^1.0.4",
47
+ "zod": "^3.24.1"
48
+ },
49
+ "devDependencies": {
50
+ "@eslint/js": "^10.0.1",
51
+ "@types/node": "^22.13.10",
52
+ "eslint": "^10.2.1",
53
+ "tsx": "^4.19.2",
54
+ "typescript": "^5.8.3",
55
+ "typescript-eslint": "^8.59.0"
56
+ }
57
+ }