@theyahia/megaplan-mcp 1.1.1 → 4.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 (51) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +134 -10
  3. package/dist/client.d.ts +3 -1
  4. package/dist/client.js +210 -26
  5. package/dist/client.js.map +1 -1
  6. package/dist/format.d.ts +12 -0
  7. package/dist/format.js +148 -0
  8. package/dist/format.js.map +1 -0
  9. package/dist/http.d.ts +3 -0
  10. package/dist/http.js +152 -0
  11. package/dist/http.js.map +1 -0
  12. package/dist/index.d.ts +2 -1
  13. package/dist/index.js +94 -16
  14. package/dist/index.js.map +1 -1
  15. package/dist/meta.d.ts +2 -0
  16. package/dist/meta.js +5 -0
  17. package/dist/meta.js.map +1 -0
  18. package/dist/prompts.d.ts +7 -0
  19. package/dist/prompts.js +22 -0
  20. package/dist/prompts.js.map +1 -0
  21. package/dist/query.d.ts +32 -0
  22. package/dist/query.js +61 -0
  23. package/dist/query.js.map +1 -0
  24. package/dist/tools/comments.d.ts +35 -0
  25. package/dist/tools/comments.js +31 -0
  26. package/dist/tools/comments.js.map +1 -0
  27. package/dist/tools/contractors.d.ts +35 -0
  28. package/dist/tools/contractors.js +39 -0
  29. package/dist/tools/contractors.js.map +1 -0
  30. package/dist/tools/deals.d.ts +76 -7
  31. package/dist/tools/deals.js +89 -16
  32. package/dist/tools/deals.js.map +1 -1
  33. package/dist/tools/employees.d.ts +21 -0
  34. package/dist/tools/employees.js +25 -0
  35. package/dist/tools/employees.js.map +1 -0
  36. package/dist/tools/me.d.ts +9 -0
  37. package/dist/tools/me.js +26 -0
  38. package/dist/tools/me.js.map +1 -0
  39. package/dist/tools/programs.d.ts +26 -0
  40. package/dist/tools/programs.js +25 -0
  41. package/dist/tools/programs.js.map +1 -0
  42. package/dist/tools/projects.d.ts +32 -0
  43. package/dist/tools/projects.js +34 -0
  44. package/dist/tools/projects.js.map +1 -0
  45. package/dist/tools/tasks.d.ts +49 -9
  46. package/dist/tools/tasks.js +62 -20
  47. package/dist/tools/tasks.js.map +1 -1
  48. package/dist/types.d.ts +54 -32
  49. package/dist/types.js +4 -0
  50. package/dist/types.js.map +1 -1
  51. package/package.json +69 -57
@@ -1,41 +1,81 @@
1
1
  import { z } from "zod";
2
2
  export declare const getTasksSchema: z.ZodObject<{
3
- filter_status: z.ZodOptional<z.ZodString>;
3
+ filter_status: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
4
4
  filter_responsible_id: z.ZodOptional<z.ZodString>;
5
5
  search: z.ZodOptional<z.ZodString>;
6
6
  limit: z.ZodDefault<z.ZodNumber>;
7
- offset: z.ZodDefault<z.ZodNumber>;
7
+ page_after: z.ZodOptional<z.ZodString>;
8
+ raw: z.ZodOptional<z.ZodBoolean>;
8
9
  }, "strip", z.ZodTypeAny, {
9
10
  limit: number;
10
- offset: number;
11
- filter_status?: string | undefined;
11
+ filter_status?: string | string[] | undefined;
12
12
  filter_responsible_id?: string | undefined;
13
13
  search?: string | undefined;
14
+ page_after?: string | undefined;
15
+ raw?: boolean | undefined;
14
16
  }, {
15
- filter_status?: string | undefined;
17
+ limit?: number | undefined;
18
+ filter_status?: string | string[] | undefined;
16
19
  filter_responsible_id?: string | undefined;
17
20
  search?: string | undefined;
18
- limit?: number | undefined;
19
- offset?: number | undefined;
21
+ page_after?: string | undefined;
22
+ raw?: boolean | undefined;
20
23
  }>;
21
24
  export declare function handleGetTasks(params: z.infer<typeof getTasksSchema>): Promise<string>;
25
+ export declare const getTaskSchema: z.ZodObject<{
26
+ id: z.ZodString;
27
+ raw: z.ZodOptional<z.ZodBoolean>;
28
+ }, "strip", z.ZodTypeAny, {
29
+ id: string;
30
+ raw?: boolean | undefined;
31
+ }, {
32
+ id: string;
33
+ raw?: boolean | undefined;
34
+ }>;
35
+ export declare function handleGetTask(params: z.infer<typeof getTaskSchema>): Promise<string>;
22
36
  export declare const createTaskSchema: z.ZodObject<{
23
37
  name: z.ZodString;
24
38
  description: z.ZodOptional<z.ZodString>;
25
39
  responsible_id: z.ZodString;
26
40
  deadline: z.ZodOptional<z.ZodString>;
27
41
  parent_id: z.ZodOptional<z.ZodString>;
42
+ parent_type: z.ZodDefault<z.ZodEnum<["Task", "Project"]>>;
28
43
  }, "strip", z.ZodTypeAny, {
29
44
  name: string;
30
45
  responsible_id: string;
31
- description?: string | undefined;
46
+ parent_type: "Task" | "Project";
32
47
  deadline?: string | undefined;
48
+ description?: string | undefined;
33
49
  parent_id?: string | undefined;
34
50
  }, {
35
51
  name: string;
36
52
  responsible_id: string;
37
- description?: string | undefined;
38
53
  deadline?: string | undefined;
54
+ description?: string | undefined;
39
55
  parent_id?: string | undefined;
56
+ parent_type?: "Task" | "Project" | undefined;
40
57
  }>;
41
58
  export declare function handleCreateTask(params: z.infer<typeof createTaskSchema>): Promise<string>;
59
+ export declare const updateTaskSchema: z.ZodObject<{
60
+ id: z.ZodString;
61
+ name: z.ZodOptional<z.ZodString>;
62
+ description: z.ZodOptional<z.ZodString>;
63
+ responsible_id: z.ZodOptional<z.ZodString>;
64
+ deadline: z.ZodOptional<z.ZodString>;
65
+ status: z.ZodOptional<z.ZodString>;
66
+ }, "strip", z.ZodTypeAny, {
67
+ id: string;
68
+ name?: string | undefined;
69
+ status?: string | undefined;
70
+ deadline?: string | undefined;
71
+ description?: string | undefined;
72
+ responsible_id?: string | undefined;
73
+ }, {
74
+ id: string;
75
+ name?: string | undefined;
76
+ status?: string | undefined;
77
+ deadline?: string | undefined;
78
+ description?: string | undefined;
79
+ responsible_id?: string | undefined;
80
+ }>;
81
+ export declare function handleUpdateTask(params: z.infer<typeof updateTaskSchema>): Promise<string>;
@@ -1,32 +1,48 @@
1
1
  import { z } from "zod";
2
2
  import { megaplanGet, megaplanPost } from "../client.js";
3
+ import { buildListQuery, toDateTime, idSchema } from "../query.js";
4
+ import { formatList, formatEntity, formatTask } from "../format.js";
5
+ const statusFilter = z
6
+ .union([z.string(), z.array(z.string())])
7
+ .optional()
8
+ .describe('Filter by status code(s), e.g. ["filter_any"]. Codes are account-specific.');
3
9
  export const getTasksSchema = z.object({
4
- filter_status: z.string().optional().describe("Filter by status (e.g. active, completed, delayed)"),
10
+ filter_status: statusFilter,
5
11
  filter_responsible_id: z.string().optional().describe("Filter by responsible employee ID"),
6
- search: z.string().optional().describe("Search by task name"),
7
- limit: z.number().int().min(1).max(100).default(25).describe("Results per page"),
8
- offset: z.number().int().default(0).describe("Offset for pagination"),
12
+ search: z.string().optional().describe("Free-text search by task name"),
13
+ limit: z.number().int().min(1).max(100).default(25).describe("Results per page (max 100)"),
14
+ page_after: z.string().optional().describe("Cursor: id of the last task from the previous page"),
15
+ raw: z.boolean().optional().describe("Return raw API JSON instead of a compact summary"),
9
16
  });
10
17
  export async function handleGetTasks(params) {
11
- const query = {
12
- limit: String(params.limit),
13
- offset: String(params.offset),
14
- };
15
- if (params.filter_status)
16
- query["filter[status]"] = params.filter_status;
17
- if (params.filter_responsible_id)
18
- query["filter[responsible]"] = params.filter_responsible_id;
19
- if (params.search)
20
- query["search"] = params.search;
18
+ const query = buildListQuery({
19
+ entity: "Task",
20
+ limit: params.limit,
21
+ pageAfter: params.page_after,
22
+ status: params.filter_status,
23
+ refs: params.filter_responsible_id
24
+ ? [{ field: "responsible", contentType: "Employee", id: params.filter_responsible_id }]
25
+ : [],
26
+ search: params.search,
27
+ });
21
28
  const result = await megaplanGet("/task", query);
22
- return JSON.stringify(result, null, 2);
29
+ return formatList(result, formatTask, params.raw);
30
+ }
31
+ export const getTaskSchema = z.object({
32
+ id: idSchema.describe("Task ID"),
33
+ raw: z.boolean().optional().describe("Return raw API JSON instead of a compact summary"),
34
+ });
35
+ export async function handleGetTask(params) {
36
+ const result = await megaplanGet(`/task/${params.id}`);
37
+ return formatEntity(result, formatTask, params.raw);
23
38
  }
24
39
  export const createTaskSchema = z.object({
25
40
  name: z.string().describe("Task name/title"),
26
41
  description: z.string().optional().describe("Task description"),
27
42
  responsible_id: z.string().describe("Responsible employee ID"),
28
- deadline: z.string().optional().describe("Deadline in ISO format (e.g. 2025-12-31T23:59:59+03:00)"),
29
- parent_id: z.string().optional().describe("Parent task ID (for subtasks)"),
43
+ deadline: z.string().optional().describe("Deadline as ISO 8601, e.g. 2025-12-31T23:59:59+03:00"),
44
+ parent_id: z.string().optional().describe("Parent ID (for a subtask or a project task)"),
45
+ parent_type: z.enum(["Task", "Project"]).default("Task").describe("Parent entity type"),
30
46
  });
31
47
  export async function handleCreateTask(params) {
32
48
  const body = {
@@ -34,13 +50,39 @@ export async function handleCreateTask(params) {
34
50
  name: params.name,
35
51
  responsible: { id: params.responsible_id, contentType: "Employee" },
36
52
  };
53
+ // TODO(live-verify): the task body field may be "statement"/"subject" rather than "description".
37
54
  if (params.description)
38
55
  body.description = params.description;
39
56
  if (params.deadline)
40
- body.deadline = params.deadline;
57
+ body.deadline = toDateTime(params.deadline);
41
58
  if (params.parent_id)
42
- body.parent = { id: params.parent_id, contentType: "Task" };
59
+ body.parent = { id: params.parent_id, contentType: params.parent_type };
43
60
  const result = await megaplanPost("/task", body);
44
- return JSON.stringify(result, null, 2);
61
+ return formatEntity(result, formatTask);
62
+ }
63
+ export const updateTaskSchema = z.object({
64
+ id: idSchema.describe("Task ID to update"),
65
+ name: z.string().optional().describe("New name/title"),
66
+ description: z.string().optional().describe("New description"),
67
+ responsible_id: z.string().optional().describe("New responsible employee ID"),
68
+ deadline: z.string().optional().describe("New deadline as ISO 8601"),
69
+ status: z.string().optional().describe("New status code (experimental — field shape unverified)"),
70
+ });
71
+ export async function handleUpdateTask(params) {
72
+ const body = { contentType: "Task" };
73
+ if (params.name !== undefined)
74
+ body.name = params.name;
75
+ if (params.description !== undefined)
76
+ body.description = params.description;
77
+ if (params.responsible_id)
78
+ body.responsible = { id: params.responsible_id, contentType: "Employee" };
79
+ if (params.deadline)
80
+ body.deadline = toDateTime(params.deadline);
81
+ // TODO(live-verify): status may need a link-entity rather than a bare code.
82
+ if (params.status !== undefined)
83
+ body.status = params.status;
84
+ // v3 updates are POST to /{entity}/{id} (not PATCH).
85
+ const result = await megaplanPost(`/task/${params.id}`, body);
86
+ return formatEntity(result, formatTask);
45
87
  }
46
88
  //# sourceMappingURL=tasks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/tools/tasks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/tools/tasks.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,38 +1,60 @@
1
1
  export interface MegaplanTask {
2
2
  id: string;
3
- name: string;
4
- description?: string;
5
- status: string;
6
- responsible?: {
7
- id: string;
8
- name: string;
9
- };
10
- deadline?: string;
11
- priority?: string;
12
- created: string;
13
- modified: string;
3
+ name?: string;
4
+ status?: string | null;
5
+ responsible?: string | null;
6
+ deadline?: string | null;
7
+ priority?: string | null;
8
+ created?: string | null;
9
+ modified?: string | null;
14
10
  }
15
11
  export interface MegaplanDeal {
16
12
  id: string;
17
- name: string;
18
- status: string;
19
- amount?: number;
20
- responsible?: {
21
- id: string;
22
- name: string;
23
- };
24
- contact?: {
25
- id: string;
26
- name: string;
27
- };
28
- created: string;
29
- modified: string;
30
- }
31
- export interface MegaplanListResult<T> {
32
- meta: {
33
- totalCount: number;
34
- limit: number;
35
- offset: number;
36
- };
37
- data: T[];
13
+ name?: string;
14
+ status?: string | null;
15
+ price?: string | null;
16
+ cost?: string | null;
17
+ responsible?: string | null;
18
+ contact?: string | null;
19
+ contractor?: string | null;
20
+ created?: string | null;
21
+ modified?: string | null;
22
+ }
23
+ export interface MegaplanProject {
24
+ id: string;
25
+ name?: string;
26
+ status?: string | null;
27
+ responsible?: string | null;
28
+ created?: string | null;
29
+ modified?: string | null;
30
+ }
31
+ export interface MegaplanEmployee {
32
+ id: string;
33
+ name?: string;
34
+ email?: string | null;
35
+ department?: string | null;
36
+ position?: string | null;
37
+ }
38
+ export interface MegaplanComment {
39
+ id: string;
40
+ content?: string | null;
41
+ author?: string | null;
42
+ created?: string | null;
43
+ }
44
+ export interface MegaplanProgram {
45
+ id: string;
46
+ name?: string;
47
+ }
48
+ export interface MegaplanClient {
49
+ id: string;
50
+ name?: string;
51
+ email?: string | null;
52
+ phone?: string | null;
53
+ type?: string | null;
54
+ }
55
+ export interface MegaplanListSummary<T> {
56
+ total: number;
57
+ count: number;
58
+ items: T[];
59
+ nextPageAfter: string | null;
38
60
  }
package/dist/types.js CHANGED
@@ -1,2 +1,6 @@
1
+ // Compact, LLM-friendly shapes produced by src/format.ts.
2
+ // These intentionally describe our *formatted* output (not the raw, verbose
3
+ // Megaplan v3 entities), so most fields are optional/nullable: the v3 API
4
+ // returns nested ref objects and the exact field set varies by account.
1
5
  export {};
2
6
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,4EAA4E;AAC5E,0EAA0E;AAC1E,wEAAwE"}
package/package.json CHANGED
@@ -1,57 +1,69 @@
1
- {
2
- "name": "@theyahia/megaplan-mcp",
3
- "version": "1.1.1",
4
- "description": "MCP server for Megaplan — tasks, deals, project management (Russia)",
5
- "type": "module",
6
- "main": "dist/index.js",
7
- "bin": {
8
- "megaplan-mcp": "dist/index.js"
9
- },
10
- "files": [
11
- "dist"
12
- ],
13
- "engines": {
14
- "node": ">=18.0.0"
15
- },
16
- "scripts": {
17
- "build": "tsc",
18
- "dev": "tsx src/index.ts",
19
- "start": "node dist/index.js",
20
- "prepublishOnly": "npm run build"
21
- },
22
- "dependencies": {
23
- "@modelcontextprotocol/sdk": "^1.12.0",
24
- "zod": "^3.24.0"
25
- },
26
- "devDependencies": {
27
- "@types/node": "^22.0.0",
28
- "tsx": "^4.19.0",
29
- "typescript": "^5.7.0"
30
- },
31
- "publishConfig": {
32
- "access": "public"
33
- },
34
- "mcpName": "io.github.theYahia/megaplan-mcp",
35
- "keywords": [
36
- "mcp",
37
- "mcp-server",
38
- "model-context-protocol",
39
- "claude",
40
- "ai",
41
- "russian-api",
42
- "megaplan",
43
- "tasks",
44
- "deals",
45
- "project-management",
46
- "api",
47
- "typescript",
48
- "crm"
49
- ],
50
- "license": "MIT",
51
- "repository": {
52
- "type": "git",
53
- "url": "https://github.com/theYahia/megaplan-mcp.git"
54
- },
55
- "homepage": "https://github.com/theYahia/megaplan-mcp#readme",
56
- "author": "Yahia"
57
- }
1
+ {
2
+ "name": "@theyahia/megaplan-mcp",
3
+ "version": "4.0.0",
4
+ "description": "MCP server for Megaplan — tasks, deals, project management (Russia)",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "bin": {
8
+ "megaplan-mcp": "dist/index.js"
9
+ },
10
+ "files": [
11
+ "dist"
12
+ ],
13
+ "engines": {
14
+ "node": ">=18.0.0"
15
+ },
16
+ "scripts": {
17
+ "build": "tsc",
18
+ "dev": "tsx src/index.ts",
19
+ "start": "node dist/index.js",
20
+ "prepublishOnly": "npm run build",
21
+ "typecheck": "tsc --noEmit -p tsconfig.typecheck.json",
22
+ "lint": "eslint .",
23
+ "test": "vitest run",
24
+ "test:watch": "vitest",
25
+ "start:http": "node dist/index.js --http"
26
+ },
27
+ "dependencies": {
28
+ "@modelcontextprotocol/sdk": "^1.12.0",
29
+ "express": "^5.2.1",
30
+ "zod": "^3.24.0"
31
+ },
32
+ "devDependencies": {
33
+ "@types/express": "^5.0.6",
34
+ "@types/node": "^22.0.0",
35
+ "@types/supertest": "^6.0.2",
36
+ "eslint": "^9.17.0",
37
+ "supertest": "^7.0.0",
38
+ "tsx": "^4.19.0",
39
+ "typescript": "^5.7.0",
40
+ "typescript-eslint": "^8.18.0",
41
+ "vitest": "^4.1.2"
42
+ },
43
+ "publishConfig": {
44
+ "access": "public"
45
+ },
46
+ "mcpName": "io.github.theYahia/megaplan-mcp",
47
+ "keywords": [
48
+ "mcp",
49
+ "mcp-server",
50
+ "model-context-protocol",
51
+ "claude",
52
+ "ai",
53
+ "russian-api",
54
+ "megaplan",
55
+ "tasks",
56
+ "deals",
57
+ "project-management",
58
+ "api",
59
+ "typescript",
60
+ "crm"
61
+ ],
62
+ "license": "MIT",
63
+ "repository": {
64
+ "type": "git",
65
+ "url": "https://github.com/theYahia/megaplan-mcp.git"
66
+ },
67
+ "homepage": "https://github.com/theYahia/megaplan-mcp#readme",
68
+ "author": "Yahia"
69
+ }