@ezmodo/mcp-server 0.13.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 (98) hide show
  1. package/README.md +305 -0
  2. package/config/development.js +20 -0
  3. package/config/endpoint-map.js +351 -0
  4. package/config/index.js +34 -0
  5. package/config/production.js +18 -0
  6. package/config/staging.js +18 -0
  7. package/handlers/access.js +141 -0
  8. package/handlers/activity.js +112 -0
  9. package/handlers/agents.js +95 -0
  10. package/handlers/ai-intelligence.js +55 -0
  11. package/handlers/attachments.js +30 -0
  12. package/handlers/catalogs.js +169 -0
  13. package/handlers/components.js +282 -0
  14. package/handlers/context-manifest.js +1150 -0
  15. package/handlers/decisions.js +114 -0
  16. package/handlers/designs.js +118 -0
  17. package/handlers/documents.js +227 -0
  18. package/handlers/entities.js +95 -0
  19. package/handlers/epics.js +190 -0
  20. package/handlers/facts.js +62 -0
  21. package/handlers/feature-flags.js +142 -0
  22. package/handlers/features.js +137 -0
  23. package/handlers/folders.js +127 -0
  24. package/handlers/git-context.js +917 -0
  25. package/handlers/github.js +72 -0
  26. package/handlers/graph.js +23 -0
  27. package/handlers/index.js +205 -0
  28. package/handlers/links.js +156 -0
  29. package/handlers/milestones.js +131 -0
  30. package/handlers/organizations.js +14 -0
  31. package/handlers/projects.js +122 -0
  32. package/handlers/recurring-tasks.js +33 -0
  33. package/handlers/tags.js +124 -0
  34. package/handlers/tasks.js +561 -0
  35. package/handlers/testing.js +116 -0
  36. package/handlers/todos.js +43 -0
  37. package/handlers/watchers.js +54 -0
  38. package/handlers/work-templates.js +32 -0
  39. package/index.js +175 -0
  40. package/lib/active-session.js +86 -0
  41. package/lib/auto-assign.js +93 -0
  42. package/lib/autolink.js +176 -0
  43. package/lib/changed-files.js +22 -0
  44. package/lib/env.js +45 -0
  45. package/lib/git-helpers.js +553 -0
  46. package/lib/git-utils.js +73 -0
  47. package/lib/http-client.js +164 -0
  48. package/lib/links-at-create.js +94 -0
  49. package/lib/local-cache.js +140 -0
  50. package/lib/logger.js +109 -0
  51. package/lib/manifest-loader.js +182 -0
  52. package/lib/manifest-query.js +686 -0
  53. package/lib/repo-config-dir.js +118 -0
  54. package/lib/version.js +10 -0
  55. package/lib/web-url.js +69 -0
  56. package/lib/worktree-tools.js +950 -0
  57. package/package.json +62 -0
  58. package/prompts/ai-workflow-automation.js +96 -0
  59. package/prompts/index.js +39 -0
  60. package/prompts/zephly-usage-guide-content.txt +631 -0
  61. package/prompts/zephly-usage-guide.js +119 -0
  62. package/tools/access-entity-types.js +28 -0
  63. package/tools/access.js +152 -0
  64. package/tools/activity.js +38 -0
  65. package/tools/agents.js +208 -0
  66. package/tools/ai-intelligence.js +111 -0
  67. package/tools/attachments.js +92 -0
  68. package/tools/catalogs.js +341 -0
  69. package/tools/components.js +249 -0
  70. package/tools/context-manifest.js +236 -0
  71. package/tools/decisions.js +168 -0
  72. package/tools/designs.js +222 -0
  73. package/tools/documents.js +287 -0
  74. package/tools/entities.js +223 -0
  75. package/tools/epics.js +267 -0
  76. package/tools/facts.js +70 -0
  77. package/tools/feature-flags.js +300 -0
  78. package/tools/features.js +246 -0
  79. package/tools/folders.js +122 -0
  80. package/tools/git-context.js +109 -0
  81. package/tools/github.js +172 -0
  82. package/tools/graph.js +70 -0
  83. package/tools/index.js +77 -0
  84. package/tools/link-params.js +93 -0
  85. package/tools/linkable-types.js +36 -0
  86. package/tools/links.js +199 -0
  87. package/tools/milestones.js +176 -0
  88. package/tools/organizations.js +23 -0
  89. package/tools/projects.js +172 -0
  90. package/tools/recurring-tasks.js +115 -0
  91. package/tools/tags.js +219 -0
  92. package/tools/task-item-schema.js +57 -0
  93. package/tools/task-type.js +33 -0
  94. package/tools/tasks.js +680 -0
  95. package/tools/testing.js +344 -0
  96. package/tools/todos.js +69 -0
  97. package/tools/watchers.js +81 -0
  98. package/tools/work-templates.js +96 -0
package/package.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "@ezmodo/mcp-server",
3
+ "version": "0.13.0",
4
+ "description": "MCP server for ezmodo - AI-first project management",
5
+ "main": "index.js",
6
+ "type": "module",
7
+ "bin": {
8
+ "ezmodo-mcp-server": "./index.js",
9
+ "zephly-mcp-server": "./index.js"
10
+ },
11
+ "scripts": {
12
+ "dev": "BUILD_ENV=development node index.js",
13
+ "start": "node index.js",
14
+ "build:production": "BUILD_ENV=production node --input-type=module -e 'console.log(\"Production build configured\")'",
15
+ "build:staging": "BUILD_ENV=staging node --input-type=module -e 'console.log(\"Staging build configured\")'",
16
+ "build:development": "BUILD_ENV=development node --input-type=module -e 'console.log(\"Development build configured\")'",
17
+ "test": "BUILD_ENV=development NODE_OPTIONS=--experimental-vm-modules jest",
18
+ "test:watch": "BUILD_ENV=development NODE_OPTIONS=--experimental-vm-modules jest --watch",
19
+ "test:coverage": "BUILD_ENV=development NODE_OPTIONS=--experimental-vm-modules jest --coverage",
20
+ "test:smoke": "BUILD_ENV=development node test.js",
21
+ "lint": "eslint . --fix"
22
+ },
23
+ "keywords": [
24
+ "mcp",
25
+ "model-context-protocol",
26
+ "ezmodo",
27
+ "ai",
28
+ "project-management"
29
+ ],
30
+ "author": "ezmodo Team",
31
+ "license": "MIT",
32
+ "publishConfig": {
33
+ "access": "public"
34
+ },
35
+ "files": [
36
+ "index.js",
37
+ "config/",
38
+ "handlers/",
39
+ "lib/",
40
+ "prompts/",
41
+ "tools/",
42
+ "README.md"
43
+ ],
44
+ "repository": {
45
+ "type": "git",
46
+ "url": "https://github.com/EasyModeOnly/ezmodo.git",
47
+ "directory": "mcp-server"
48
+ },
49
+ "dependencies": {
50
+ "@modelcontextprotocol/sdk": "^1.30.0",
51
+ "node-fetch": "^3.3.2"
52
+ },
53
+ "devDependencies": {
54
+ "@eslint/js": "^10.0.1",
55
+ "@jest/globals": "^30.3.0",
56
+ "eslint": "^10.8.0",
57
+ "jest": "^30.5.1"
58
+ },
59
+ "engines": {
60
+ "node": ">=18.0.0"
61
+ }
62
+ }
@@ -0,0 +1,96 @@
1
+ /**
2
+ * AI Workflow Automation Prompt
3
+ * Guidelines for AI agents to automatically track their work in Zephly
4
+ */
5
+
6
+ export const AI_WORKFLOW_AUTOMATION = `# AI Workflow Automation Guide
7
+
8
+ ## Overview
9
+
10
+ When you (as an AI agent) are implementing features or working on
11
+ complex tasks, **automatically track your work in Zephly in real-time**.
12
+ Don't wait for users to ask you to update documentation or check off tasks.
13
+
14
+ ## When to Use Workflow Automation
15
+
16
+ - User asks you to implement a feature (not just explain or plan)
17
+ - Task involves multiple implementation steps (>3 steps)
18
+ - Work needs team visibility or historical tracking
19
+
20
+ ## Session Setup
21
+
22
+ First, discover the user's context:
23
+
24
+ \`\`\`javascript
25
+ // 1. Get organization
26
+ const orgs = await list_organizations();
27
+ const orgId = orgs.organizations[0].id;
28
+
29
+ // 2. Get projects
30
+ const projects = await list_projects({ organizationId: orgId });
31
+ const projectId = projects.projects[0].id;
32
+ \`\`\`
33
+
34
+ ## Workflow Steps
35
+
36
+ 1. **Create or Select Project** - Use existing project or create new one with \`create_project\`
37
+ 2. **Create Epic** (optional) - Use \`create_epic\` to group related tasks under a milestone
38
+ 3. **Break Down Tasks** - Create 3-7 tasks with \`create_task\`, each with implementation steps
39
+ 4. **Track Progress** - Update steps with \`update_task\` (toggle, add, modify) as you work
40
+ 5. **Update Status** - Move tasks through workflow: backlog → todo → in_progress → in_review → completed
41
+ 6. **Document** - Use \`create_document\` to create setup guides, API docs, or troubleshooting guides
42
+ 7. **Complete** - Use \`complete_task\` when done, update epic status if applicable
43
+
44
+ ## Example Workflow
45
+
46
+ \`\`\`javascript
47
+ // 1. Get context
48
+ const orgs = await list_organizations();
49
+ const orgId = orgs.organizations[0].id;
50
+ const projects = await list_projects({ organizationId: orgId });
51
+ const projectId = projects.projects[0].id;
52
+
53
+ // 2. Create epic (milestone)
54
+ const epic = await create_epic({
55
+ projectId,
56
+ title: "User Authentication System",
57
+ description: "Complete auth implementation with OAuth2"
58
+ });
59
+
60
+ // 3. Create tasks with steps
61
+ await create_task({
62
+ projectId,
63
+ epicId: epic.id,
64
+ title: "Implement OAuth2 backend",
65
+ description: "Set up OAuth2 authentication flow",
66
+ steps: ["Set up OAuth2 config", "JWT generation", "Validation middleware", "Tests"],
67
+ assigneeType: "ai",
68
+ assigneeId: "claude",
69
+ assigneeName: "Claude"
70
+ });
71
+
72
+ // 4. Track progress as you work
73
+ await update_task({ taskId: "task1", status: "in_progress" });
74
+ await update_task({ taskId: "task1", toggleStep: { stepId: "step_0", completed: true } });
75
+
76
+ // 5. Document what you built
77
+ await create_document({
78
+ projectId,
79
+ title: "Authentication Setup Guide",
80
+ content: "# How to configure OAuth2...",
81
+ type: "setup"
82
+ });
83
+
84
+ // 6. Complete task
85
+ await complete_task({ taskId: "task1", completionNotes: "OAuth2 implementation complete" });
86
+
87
+ // 7. Update epic when all tasks done
88
+ await update_epic({ epicId: epic.id, status: "completed" });
89
+ \`\`\`
90
+
91
+ ## Benefits
92
+
93
+ - Real-time visibility for users (no "black box" AI work)
94
+ - Historical record of decisions and implementation details
95
+ - Documentation created alongside code
96
+ - The only PM tool where AI agents manage their own project tracking`;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * MCP Prompts
3
+ * Prompt definitions and content for the Zephly MCP server
4
+ */
5
+
6
+ // Import prompt content from separate files (to be created)
7
+ import { ZEPHLY_USAGE_GUIDE } from './zephly-usage-guide.js';
8
+ import { AI_WORKFLOW_AUTOMATION } from './ai-workflow-automation.js';
9
+
10
+ /**
11
+ * List of available prompts
12
+ */
13
+ export const PROMPTS = [
14
+ {
15
+ name: 'zephly-usage-guide',
16
+ description: 'Guidelines for using Zephly MCP tools effectively in project management workflows',
17
+ },
18
+ {
19
+ name: 'ai-workflow-automation',
20
+ description: 'Guidelines for AI agents to automatically track '
21
+ + 'their work in Zephly (create epics, tasks, steps, and documentation)',
22
+ },
23
+ ];
24
+
25
+ /**
26
+ * Get prompt content by name
27
+ * @param {string} name - Prompt name
28
+ * @returns {string|null} - Prompt content or null if not found
29
+ */
30
+ export function getPromptContent(name) {
31
+ switch (name) {
32
+ case 'zephly-usage-guide':
33
+ return ZEPHLY_USAGE_GUIDE;
34
+ case 'ai-workflow-automation':
35
+ return AI_WORKFLOW_AUTOMATION;
36
+ default:
37
+ return null;
38
+ }
39
+ }