@musashishao/agent-kit 1.2.2

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 (236) hide show
  1. package/.agent/agents/backend-specialist.md +263 -0
  2. package/.agent/agents/database-architect.md +226 -0
  3. package/.agent/agents/debugger.md +225 -0
  4. package/.agent/agents/devops-engineer.md +242 -0
  5. package/.agent/agents/documentation-writer.md +104 -0
  6. package/.agent/agents/explorer-agent.md +73 -0
  7. package/.agent/agents/frontend-specialist.md +556 -0
  8. package/.agent/agents/game-developer.md +162 -0
  9. package/.agent/agents/mobile-developer.md +377 -0
  10. package/.agent/agents/orchestrator.md +416 -0
  11. package/.agent/agents/penetration-tester.md +188 -0
  12. package/.agent/agents/performance-optimizer.md +187 -0
  13. package/.agent/agents/project-planner.md +403 -0
  14. package/.agent/agents/security-auditor.md +170 -0
  15. package/.agent/agents/seo-specialist.md +111 -0
  16. package/.agent/agents/test-engineer.md +158 -0
  17. package/.agent/mcp/README.md +69 -0
  18. package/.agent/mcp/config/mcp-config.json +62 -0
  19. package/.agent/mcp/config/registry.json +54 -0
  20. package/.agent/mcp/servers/agent-kit-core/package.json +28 -0
  21. package/.agent/mcp/servers/agent-kit-core/src/index.ts +455 -0
  22. package/.agent/mcp/servers/agent-kit-core/tsconfig.json +16 -0
  23. package/.agent/mcp/servers/agent-kit-fs/package.json +25 -0
  24. package/.agent/mcp/servers/agent-kit-fs/src/index.ts +399 -0
  25. package/.agent/mcp/servers/agent-kit-fs/tsconfig.json +16 -0
  26. package/.agent/mcp/servers/agent-kit-git/package.json +24 -0
  27. package/.agent/mcp/servers/agent-kit-git/src/index.ts +283 -0
  28. package/.agent/mcp/servers/agent-kit-git/tsconfig.json +16 -0
  29. package/.agent/mcp/templates/README.md +49 -0
  30. package/.agent/mcp/templates/api/README.md.template +45 -0
  31. package/.agent/mcp/templates/api/src/index.ts.template +185 -0
  32. package/.agent/mcp/templates/base-package.json.template +27 -0
  33. package/.agent/mcp/templates/base-tsconfig.json +21 -0
  34. package/.agent/mcp/templates/custom/src/index.ts.template +133 -0
  35. package/.agent/mcp/templates/database/src/index.ts.template +273 -0
  36. package/.agent/mcp/templates/web-scraper/src/index.ts.template +239 -0
  37. package/.agent/rules/CODEX.md +250 -0
  38. package/.agent/rules/GEMINI.md +251 -0
  39. package/.agent/skills/api-patterns/SKILL.md +81 -0
  40. package/.agent/skills/api-patterns/api-style.md +42 -0
  41. package/.agent/skills/api-patterns/auth.md +24 -0
  42. package/.agent/skills/api-patterns/documentation.md +26 -0
  43. package/.agent/skills/api-patterns/graphql.md +41 -0
  44. package/.agent/skills/api-patterns/rate-limiting.md +31 -0
  45. package/.agent/skills/api-patterns/response.md +37 -0
  46. package/.agent/skills/api-patterns/rest.md +40 -0
  47. package/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
  48. package/.agent/skills/api-patterns/security-testing.md +122 -0
  49. package/.agent/skills/api-patterns/trpc.md +41 -0
  50. package/.agent/skills/api-patterns/versioning.md +22 -0
  51. package/.agent/skills/app-builder/SKILL.md +75 -0
  52. package/.agent/skills/app-builder/agent-coordination.md +71 -0
  53. package/.agent/skills/app-builder/feature-building.md +53 -0
  54. package/.agent/skills/app-builder/project-detection.md +34 -0
  55. package/.agent/skills/app-builder/scaffolding.md +118 -0
  56. package/.agent/skills/app-builder/tech-stack.md +40 -0
  57. package/.agent/skills/app-builder/templates/SKILL.md +39 -0
  58. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  59. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  60. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  61. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  62. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
  63. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  64. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  65. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +82 -0
  66. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +100 -0
  67. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +106 -0
  68. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +101 -0
  69. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  70. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +93 -0
  71. package/.agent/skills/architecture/SKILL.md +55 -0
  72. package/.agent/skills/architecture/context-discovery.md +43 -0
  73. package/.agent/skills/architecture/examples.md +94 -0
  74. package/.agent/skills/architecture/pattern-selection.md +68 -0
  75. package/.agent/skills/architecture/patterns-reference.md +50 -0
  76. package/.agent/skills/architecture/trade-off-analysis.md +77 -0
  77. package/.agent/skills/bash-linux/SKILL.md +199 -0
  78. package/.agent/skills/behavioral-modes/SKILL.md +242 -0
  79. package/.agent/skills/brainstorming/SKILL.md +163 -0
  80. package/.agent/skills/brainstorming/dynamic-questioning.md +350 -0
  81. package/.agent/skills/clean-code/SKILL.md +201 -0
  82. package/.agent/skills/code-review-checklist/SKILL.md +109 -0
  83. package/.agent/skills/context-engineering/SKILL.md +74 -0
  84. package/.agent/skills/context-engineering/examples/advanced_code_request.md +73 -0
  85. package/.agent/skills/context-engineering/scripts/quality_validator.py +294 -0
  86. package/.agent/skills/context-engineering/scripts/repo_mapper.py +27 -0
  87. package/.agent/skills/context-engineering/scripts/skill_checker.py +194 -0
  88. package/.agent/skills/context-engineering/scripts/token_counter.py +65 -0
  89. package/.agent/skills/context-engineering/strategies/context-caching.md +50 -0
  90. package/.agent/skills/context-engineering/strategies/few-shot-examples.md +56 -0
  91. package/.agent/skills/context-engineering/strategies/skeleton-code.md +59 -0
  92. package/.agent/skills/context-engineering/strategies/xml-framing.md +57 -0
  93. package/.agent/skills/database-design/SKILL.md +52 -0
  94. package/.agent/skills/database-design/database-selection.md +43 -0
  95. package/.agent/skills/database-design/indexing.md +39 -0
  96. package/.agent/skills/database-design/migrations.md +48 -0
  97. package/.agent/skills/database-design/optimization.md +36 -0
  98. package/.agent/skills/database-design/orm-selection.md +30 -0
  99. package/.agent/skills/database-design/schema-design.md +56 -0
  100. package/.agent/skills/database-design/scripts/schema_validator.py +172 -0
  101. package/.agent/skills/deployment-procedures/SKILL.md +241 -0
  102. package/.agent/skills/doc.md +177 -0
  103. package/.agent/skills/docker-expert/SKILL.md +409 -0
  104. package/.agent/skills/documentation-templates/SKILL.md +194 -0
  105. package/.agent/skills/frontend-design/SKILL.md +396 -0
  106. package/.agent/skills/frontend-design/animation-guide.md +331 -0
  107. package/.agent/skills/frontend-design/color-system.md +311 -0
  108. package/.agent/skills/frontend-design/decision-trees.md +418 -0
  109. package/.agent/skills/frontend-design/motion-graphics.md +306 -0
  110. package/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
  111. package/.agent/skills/frontend-design/scripts/ux_audit.py +722 -0
  112. package/.agent/skills/frontend-design/typography-system.md +345 -0
  113. package/.agent/skills/frontend-design/ux-psychology.md +541 -0
  114. package/.agent/skills/frontend-design/visual-effects.md +383 -0
  115. package/.agent/skills/game-development/2d-games/SKILL.md +119 -0
  116. package/.agent/skills/game-development/3d-games/SKILL.md +135 -0
  117. package/.agent/skills/game-development/SKILL.md +167 -0
  118. package/.agent/skills/game-development/game-art/SKILL.md +185 -0
  119. package/.agent/skills/game-development/game-audio/SKILL.md +190 -0
  120. package/.agent/skills/game-development/game-design/SKILL.md +129 -0
  121. package/.agent/skills/game-development/mobile-games/SKILL.md +108 -0
  122. package/.agent/skills/game-development/multiplayer/SKILL.md +132 -0
  123. package/.agent/skills/game-development/pc-games/SKILL.md +144 -0
  124. package/.agent/skills/game-development/vr-ar/SKILL.md +123 -0
  125. package/.agent/skills/game-development/web-games/SKILL.md +150 -0
  126. package/.agent/skills/geo-fundamentals/SKILL.md +156 -0
  127. package/.agent/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
  128. package/.agent/skills/i18n-localization/SKILL.md +154 -0
  129. package/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
  130. package/.agent/skills/lint-and-validate/SKILL.md +45 -0
  131. package/.agent/skills/lint-and-validate/scripts/lint_runner.py +172 -0
  132. package/.agent/skills/lint-and-validate/scripts/type_coverage.py +173 -0
  133. package/.agent/skills/mcp-builder/SKILL.md +662 -0
  134. package/.agent/skills/mcp-builder/python-template.md +522 -0
  135. package/.agent/skills/mcp-builder/tool-patterns.md +642 -0
  136. package/.agent/skills/mcp-builder/typescript-template.md +361 -0
  137. package/.agent/skills/mobile-design/SKILL.md +394 -0
  138. package/.agent/skills/mobile-design/decision-trees.md +516 -0
  139. package/.agent/skills/mobile-design/mobile-backend.md +491 -0
  140. package/.agent/skills/mobile-design/mobile-color-system.md +420 -0
  141. package/.agent/skills/mobile-design/mobile-debugging.md +122 -0
  142. package/.agent/skills/mobile-design/mobile-design-thinking.md +357 -0
  143. package/.agent/skills/mobile-design/mobile-navigation.md +458 -0
  144. package/.agent/skills/mobile-design/mobile-performance.md +767 -0
  145. package/.agent/skills/mobile-design/mobile-testing.md +356 -0
  146. package/.agent/skills/mobile-design/mobile-typography.md +433 -0
  147. package/.agent/skills/mobile-design/platform-android.md +666 -0
  148. package/.agent/skills/mobile-design/platform-ios.md +561 -0
  149. package/.agent/skills/mobile-design/scripts/mobile_audit.py +670 -0
  150. package/.agent/skills/mobile-design/touch-psychology.md +537 -0
  151. package/.agent/skills/nestjs-expert/SKILL.md +552 -0
  152. package/.agent/skills/nextjs-best-practices/SKILL.md +203 -0
  153. package/.agent/skills/nodejs-best-practices/SKILL.md +333 -0
  154. package/.agent/skills/parallel-agents/SKILL.md +175 -0
  155. package/.agent/skills/performance-profiling/SKILL.md +143 -0
  156. package/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
  157. package/.agent/skills/plan-writing/SKILL.md +152 -0
  158. package/.agent/skills/powershell-windows/SKILL.md +167 -0
  159. package/.agent/skills/prisma-expert/SKILL.md +355 -0
  160. package/.agent/skills/problem-solving/SKILL.md +556 -0
  161. package/.agent/skills/problem-solving/collision-zone-thinking.md +285 -0
  162. package/.agent/skills/problem-solving/inversion-exercise.md +205 -0
  163. package/.agent/skills/problem-solving/meta-pattern-recognition.md +313 -0
  164. package/.agent/skills/problem-solving/scale-game.md +300 -0
  165. package/.agent/skills/problem-solving/simplification-cascades.md +321 -0
  166. package/.agent/skills/problem-solving/when-stuck.md +146 -0
  167. package/.agent/skills/python-patterns/SKILL.md +441 -0
  168. package/.agent/skills/react-patterns/SKILL.md +198 -0
  169. package/.agent/skills/red-team-tactics/SKILL.md +199 -0
  170. package/.agent/skills/seo-fundamentals/SKILL.md +129 -0
  171. package/.agent/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
  172. package/.agent/skills/server-management/SKILL.md +161 -0
  173. package/.agent/skills/systematic-debugging/SKILL.md +109 -0
  174. package/.agent/skills/tailwind-patterns/SKILL.md +269 -0
  175. package/.agent/skills/tdd-workflow/SKILL.md +149 -0
  176. package/.agent/skills/testing-patterns/SKILL.md +178 -0
  177. package/.agent/skills/testing-patterns/scripts/test_runner.py +219 -0
  178. package/.agent/skills/typescript-expert/SKILL.md +429 -0
  179. package/.agent/skills/typescript-expert/references/tsconfig-strict.json +92 -0
  180. package/.agent/skills/typescript-expert/references/typescript-cheatsheet.md +383 -0
  181. package/.agent/skills/typescript-expert/references/utility-types.ts +335 -0
  182. package/.agent/skills/typescript-expert/scripts/ts_diagnostic.py +203 -0
  183. package/.agent/skills/ui-ux-pro-max/SKILL.md +351 -0
  184. package/.agent/skills/ui-ux-pro-max/data/charts.csv +26 -0
  185. package/.agent/skills/ui-ux-pro-max/data/colors.csv +97 -0
  186. package/.agent/skills/ui-ux-pro-max/data/icons.csv +101 -0
  187. package/.agent/skills/ui-ux-pro-max/data/landing.csv +31 -0
  188. package/.agent/skills/ui-ux-pro-max/data/products.csv +97 -0
  189. package/.agent/skills/ui-ux-pro-max/data/prompts.csv +24 -0
  190. package/.agent/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  191. package/.agent/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  192. package/.agent/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  193. package/.agent/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  194. package/.agent/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  195. package/.agent/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  196. package/.agent/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  197. package/.agent/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  198. package/.agent/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  199. package/.agent/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  200. package/.agent/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  201. package/.agent/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  202. package/.agent/skills/ui-ux-pro-max/data/styles.csv +59 -0
  203. package/.agent/skills/ui-ux-pro-max/data/typography.csv +58 -0
  204. package/.agent/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  205. package/.agent/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  206. package/.agent/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
  207. package/.agent/skills/ui-ux-pro-max/scripts/core.py +257 -0
  208. package/.agent/skills/ui-ux-pro-max/scripts/design_system.py +487 -0
  209. package/.agent/skills/ui-ux-pro-max/scripts/search.py +76 -0
  210. package/.agent/skills/vulnerability-scanner/SKILL.md +276 -0
  211. package/.agent/skills/vulnerability-scanner/checklists.md +121 -0
  212. package/.agent/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
  213. package/.agent/skills/webapp-testing/SKILL.md +187 -0
  214. package/.agent/skills/webapp-testing/scripts/playwright_runner.py +173 -0
  215. package/.agent/templates/AGENTS.backend.md +230 -0
  216. package/.agent/templates/AGENTS.md +121 -0
  217. package/.agent/templates/AGENTS.mobile.md +183 -0
  218. package/.agent/templates/AGENTS.web.md +192 -0
  219. package/.agent/workflows/brainstorm.md +113 -0
  220. package/.agent/workflows/context.md +47 -0
  221. package/.agent/workflows/create.md +59 -0
  222. package/.agent/workflows/debug.md +103 -0
  223. package/.agent/workflows/deploy.md +176 -0
  224. package/.agent/workflows/enhance.md +63 -0
  225. package/.agent/workflows/orchestrate.md +237 -0
  226. package/.agent/workflows/plan.md +89 -0
  227. package/.agent/workflows/preview.md +80 -0
  228. package/.agent/workflows/quality.md +89 -0
  229. package/.agent/workflows/status.md +86 -0
  230. package/.agent/workflows/test.md +144 -0
  231. package/.agent/workflows/ui-ux-pro-max.md +250 -0
  232. package/LICENSE +21 -0
  233. package/README.md +317 -0
  234. package/bin/cli.js +1267 -0
  235. package/index.js +1 -0
  236. package/package.json +50 -0
@@ -0,0 +1,283 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Agent Kit Git MCP Server
4
+ *
5
+ * Provides Git operations tools for AI assistants.
6
+ *
7
+ * Tools:
8
+ * - git_status: Get current git status
9
+ * - git_diff: Show changes
10
+ * - git_log: Show recent commits
11
+ * - git_branch: List branches
12
+ */
13
+
14
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
15
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
16
+ import { z } from "zod";
17
+ import { execSync } from "child_process";
18
+
19
+ const PROJECT_ROOT = process.cwd();
20
+
21
+ const server = new McpServer({
22
+ name: "agent-kit-git",
23
+ version: "1.0.0",
24
+ });
25
+
26
+ // ============================================================================
27
+ // Helper Functions
28
+ // ============================================================================
29
+
30
+ function runGitCommand(command: string): { success: boolean; output: string; error?: string } {
31
+ try {
32
+ const output = execSync(command, {
33
+ cwd: PROJECT_ROOT,
34
+ encoding: "utf-8",
35
+ timeout: 30000,
36
+ maxBuffer: 10 * 1024 * 1024,
37
+ });
38
+ return { success: true, output: output.trim() };
39
+ } catch (error: unknown) {
40
+ const err = error as { stderr?: string; message?: string };
41
+ return {
42
+ success: false,
43
+ output: "",
44
+ error: err.stderr || err.message || "Git command failed",
45
+ };
46
+ }
47
+ }
48
+
49
+ function isGitRepo(): boolean {
50
+ const result = runGitCommand("git rev-parse --is-inside-work-tree");
51
+ return result.success && result.output === "true";
52
+ }
53
+
54
+ // ============================================================================
55
+ // Tool: git_status
56
+ // ============================================================================
57
+
58
+ server.tool(
59
+ "git_status",
60
+ "Get the current git status including staged, modified, and untracked files",
61
+ {},
62
+ async () => {
63
+ if (!isGitRepo()) {
64
+ return {
65
+ content: [{
66
+ type: "text",
67
+ text: JSON.stringify({ error: "Not a git repository" }),
68
+ }],
69
+ };
70
+ }
71
+
72
+ const status = runGitCommand("git status --porcelain");
73
+ const branch = runGitCommand("git branch --show-current");
74
+
75
+ const files = {
76
+ staged: [] as string[],
77
+ modified: [] as string[],
78
+ untracked: [] as string[],
79
+ };
80
+
81
+ if (status.success) {
82
+ const lines = status.output.split("\n").filter(Boolean);
83
+ for (const line of lines) {
84
+ const code = line.slice(0, 2);
85
+ const file = line.slice(3);
86
+
87
+ if (code.startsWith("A") || code.startsWith("M ") || code.startsWith("D ")) {
88
+ files.staged.push(file);
89
+ } else if (code.includes("M") || code.includes("D")) {
90
+ files.modified.push(file);
91
+ } else if (code === "??") {
92
+ files.untracked.push(file);
93
+ }
94
+ }
95
+ }
96
+
97
+ return {
98
+ content: [{
99
+ type: "text",
100
+ text: JSON.stringify({
101
+ branch: branch.output,
102
+ files,
103
+ totalChanges: files.staged.length + files.modified.length + files.untracked.length,
104
+ }, null, 2),
105
+ }],
106
+ };
107
+ }
108
+ );
109
+
110
+ // ============================================================================
111
+ // Tool: git_diff
112
+ // ============================================================================
113
+
114
+ server.tool(
115
+ "git_diff",
116
+ "Show git diff for specified files or all changes",
117
+ {
118
+ files: z.string().optional().describe("Specific file path, or omit for all changes"),
119
+ staged: z.boolean().optional().describe("Show staged changes (default: false)"),
120
+ },
121
+ async ({ files, staged }) => {
122
+ if (!isGitRepo()) {
123
+ return {
124
+ content: [{
125
+ type: "text",
126
+ text: JSON.stringify({ error: "Not a git repository" }),
127
+ }],
128
+ };
129
+ }
130
+
131
+ let command = "git diff";
132
+ if (staged) command += " --staged";
133
+ if (files) command += ` -- "${files}"`;
134
+
135
+ // Limit output to prevent context overflow
136
+ command += " | head -500";
137
+
138
+ const result = runGitCommand(command);
139
+
140
+ return {
141
+ content: [{
142
+ type: "text",
143
+ text: result.success
144
+ ? (result.output || "No changes")
145
+ : JSON.stringify({ error: result.error }),
146
+ }],
147
+ };
148
+ }
149
+ );
150
+
151
+ // ============================================================================
152
+ // Tool: git_log
153
+ // ============================================================================
154
+
155
+ server.tool(
156
+ "git_log",
157
+ "Show recent git commits",
158
+ {
159
+ limit: z.number().optional().describe("Number of commits to show (default: 10, max: 50)"),
160
+ oneline: z.boolean().optional().describe("Show compact one-line format (default: true)"),
161
+ },
162
+ async ({ limit = 10, oneline = true }) => {
163
+ if (!isGitRepo()) {
164
+ return {
165
+ content: [{
166
+ type: "text",
167
+ text: JSON.stringify({ error: "Not a git repository" }),
168
+ }],
169
+ };
170
+ }
171
+
172
+ const effectiveLimit = Math.min(limit, 50);
173
+ const format = oneline
174
+ ? "--oneline"
175
+ : "--format=%h %s (%an, %ar)";
176
+
177
+ const result = runGitCommand(`git log ${format} -n ${effectiveLimit}`);
178
+
179
+ return {
180
+ content: [{
181
+ type: "text",
182
+ text: result.success
183
+ ? result.output
184
+ : JSON.stringify({ error: result.error }),
185
+ }],
186
+ };
187
+ }
188
+ );
189
+
190
+ // ============================================================================
191
+ // Tool: git_branch
192
+ // ============================================================================
193
+
194
+ server.tool(
195
+ "git_branch",
196
+ "List git branches",
197
+ {
198
+ all: z.boolean().optional().describe("Include remote branches (default: false)"),
199
+ },
200
+ async ({ all = false }) => {
201
+ if (!isGitRepo()) {
202
+ return {
203
+ content: [{
204
+ type: "text",
205
+ text: JSON.stringify({ error: "Not a git repository" }),
206
+ }],
207
+ };
208
+ }
209
+
210
+ const command = all ? "git branch -a" : "git branch";
211
+ const result = runGitCommand(command);
212
+
213
+ if (!result.success) {
214
+ return {
215
+ content: [{
216
+ type: "text",
217
+ text: JSON.stringify({ error: result.error }),
218
+ }],
219
+ };
220
+ }
221
+
222
+ const branches = result.output.split("\n").map(b => ({
223
+ name: b.replace(/^\*?\s*/, "").trim(),
224
+ current: b.startsWith("*"),
225
+ })).filter(b => b.name);
226
+
227
+ return {
228
+ content: [{
229
+ type: "text",
230
+ text: JSON.stringify({ branches }, null, 2),
231
+ }],
232
+ };
233
+ }
234
+ );
235
+
236
+ // ============================================================================
237
+ // Tool: git_show_file
238
+ // ============================================================================
239
+
240
+ server.tool(
241
+ "git_show_file",
242
+ "Show a file content from a specific commit",
243
+ {
244
+ file: z.string().describe("Path to the file"),
245
+ commit: z.string().optional().describe("Commit hash or ref (default: HEAD)"),
246
+ },
247
+ async ({ file, commit = "HEAD" }) => {
248
+ if (!isGitRepo()) {
249
+ return {
250
+ content: [{
251
+ type: "text",
252
+ text: JSON.stringify({ error: "Not a git repository" }),
253
+ }],
254
+ };
255
+ }
256
+
257
+ const result = runGitCommand(`git show ${commit}:"${file}" | head -200`);
258
+
259
+ return {
260
+ content: [{
261
+ type: "text",
262
+ text: result.success
263
+ ? result.output
264
+ : JSON.stringify({ error: result.error }),
265
+ }],
266
+ };
267
+ }
268
+ );
269
+
270
+ // ============================================================================
271
+ // Start Server
272
+ // ============================================================================
273
+
274
+ async function main() {
275
+ const transport = new StdioServerTransport();
276
+ await server.connect(transport);
277
+ console.error("Agent Kit Git MCP Server running on stdio");
278
+ }
279
+
280
+ main().catch((error) => {
281
+ console.error("Failed to start MCP server:", error);
282
+ process.exit(1);
283
+ });
@@ -0,0 +1,16 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "NodeNext",
5
+ "moduleResolution": "NodeNext",
6
+ "outDir": "./dist",
7
+ "rootDir": "./src",
8
+ "strict": true,
9
+ "esModuleInterop": true,
10
+ "skipLibCheck": true,
11
+ "forceConsistentCasingInFileNames": true,
12
+ "declaration": true
13
+ },
14
+ "include": ["src/**/*"],
15
+ "exclude": ["node_modules", "dist"]
16
+ }
@@ -0,0 +1,49 @@
1
+ # MCP Server Templates
2
+
3
+ > Pre-built templates for creating custom MCP servers.
4
+
5
+ ## Available Templates
6
+
7
+ | Template | Description | Use Case |
8
+ |----------|-------------|----------|
9
+ | **api** | REST API integration | Connect to external APIs |
10
+ | **database** | Database connector | Query PostgreSQL, SQLite, MongoDB |
11
+ | **web-scraper** | Web scraping | Extract data from websites |
12
+ | **custom** | Empty template | Build from scratch |
13
+
14
+ ## Usage
15
+
16
+ ```bash
17
+ # Create a new MCP server from template
18
+ npx @musashishao/agent-kit mcp create my-api-server --type api
19
+
20
+ # List available templates
21
+ npx @musashishao/agent-kit mcp templates
22
+ ```
23
+
24
+ ## Template Structure
25
+
26
+ Each template contains:
27
+
28
+ ```
29
+ template/
30
+ ├── package.json.template # Package configuration
31
+ ├── tsconfig.json # TypeScript config
32
+ ├── README.md.template # Documentation
33
+ └── src/
34
+ └── index.ts.template # Main server file
35
+ ```
36
+
37
+ ## After Creating
38
+
39
+ ```bash
40
+ cd .agent/mcp/servers/my-api-server
41
+ npm install
42
+ npm run build
43
+ ```
44
+
45
+ Then configure your AI client:
46
+
47
+ ```bash
48
+ npx @musashishao/agent-kit mcp setup --client claude
49
+ ```
@@ -0,0 +1,45 @@
1
+ # {{SERVER_NAME}}
2
+
3
+ > MCP server for API integration
4
+
5
+ ## Setup
6
+
7
+ 1. Install dependencies:
8
+ ```bash
9
+ npm install
10
+ ```
11
+
12
+ 2. Configure environment variables:
13
+ ```bash
14
+ export API_BASE_URL="https://your-api.com"
15
+ export API_KEY="your-api-key"
16
+ ```
17
+
18
+ 3. Build:
19
+ ```bash
20
+ npm run build
21
+ ```
22
+
23
+ 4. Add to your AI client config.
24
+
25
+ ## Available Tools
26
+
27
+ | Tool | Description |
28
+ |------|-------------|
29
+ | `api_get` | Make GET request to API |
30
+ | `api_post` | Make POST request to API |
31
+ | `api_list_endpoints` | List available endpoints |
32
+
33
+ ## Customization
34
+
35
+ Edit `src/index.ts` to:
36
+ - Add more API endpoints
37
+ - Customize authentication
38
+ - Add validation logic
39
+
40
+ ## Environment Variables
41
+
42
+ | Variable | Description | Required |
43
+ |----------|-------------|----------|
44
+ | `API_BASE_URL` | Base URL of the API | Yes |
45
+ | `API_KEY` | API authentication key | No |
@@ -0,0 +1,185 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * {{SERVER_NAME}} - API Integration MCP Server
4
+ *
5
+ * Connect your AI assistant to external APIs.
6
+ *
7
+ * Generated by Agent Kit MCP Generator
8
+ */
9
+
10
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
11
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
12
+ import { z } from "zod";
13
+
14
+ // Configuration - Update these values
15
+ const API_BASE_URL = process.env.API_BASE_URL || "https://api.example.com";
16
+ const API_KEY = process.env.API_KEY || "";
17
+
18
+ const server = new McpServer({
19
+ name: "{{SERVER_NAME}}",
20
+ version: "1.0.0",
21
+ });
22
+
23
+ // ============================================================================
24
+ // Helper Functions
25
+ // ============================================================================
26
+
27
+ async function apiRequest(
28
+ endpoint: string,
29
+ method: "GET" | "POST" | "PUT" | "DELETE" = "GET",
30
+ body?: Record<string, unknown>
31
+ ): Promise<{ success: boolean; data?: unknown; error?: string }> {
32
+ try {
33
+ const headers: Record<string, string> = {
34
+ "Content-Type": "application/json",
35
+ };
36
+
37
+ if (API_KEY) {
38
+ headers["Authorization"] = `Bearer ${API_KEY}`;
39
+ }
40
+
41
+ const response = await fetch(`${API_BASE_URL}${endpoint}`, {
42
+ method,
43
+ headers,
44
+ body: body ? JSON.stringify(body) : undefined,
45
+ });
46
+
47
+ if (!response.ok) {
48
+ return {
49
+ success: false,
50
+ error: `API error: ${response.status} ${response.statusText}`
51
+ };
52
+ }
53
+
54
+ const data = await response.json();
55
+ return { success: true, data };
56
+ } catch (error) {
57
+ return {
58
+ success: false,
59
+ error: `Request failed: ${error instanceof Error ? error.message : "Unknown error"}`
60
+ };
61
+ }
62
+ }
63
+
64
+ // ============================================================================
65
+ // Tool: api_get
66
+ // ============================================================================
67
+
68
+ server.tool(
69
+ "api_get",
70
+ "Make a GET request to the API",
71
+ {
72
+ endpoint: z.string().describe("API endpoint path (e.g., '/users', '/posts/1')"),
73
+ },
74
+ async ({ endpoint }) => {
75
+ const result = await apiRequest(endpoint, "GET");
76
+
77
+ return {
78
+ content: [{
79
+ type: "text",
80
+ text: JSON.stringify(result, null, 2),
81
+ }],
82
+ };
83
+ }
84
+ );
85
+
86
+ // ============================================================================
87
+ // Tool: api_post
88
+ // ============================================================================
89
+
90
+ server.tool(
91
+ "api_post",
92
+ "Make a POST request to the API",
93
+ {
94
+ endpoint: z.string().describe("API endpoint path"),
95
+ data: z.string().describe("JSON data to send"),
96
+ },
97
+ async ({ endpoint, data }) => {
98
+ let parsedData: Record<string, unknown>;
99
+ try {
100
+ parsedData = JSON.parse(data);
101
+ } catch {
102
+ return {
103
+ content: [{
104
+ type: "text",
105
+ text: JSON.stringify({ error: "Invalid JSON data" }),
106
+ }],
107
+ };
108
+ }
109
+
110
+ const result = await apiRequest(endpoint, "POST", parsedData);
111
+
112
+ return {
113
+ content: [{
114
+ type: "text",
115
+ text: JSON.stringify(result, null, 2),
116
+ }],
117
+ };
118
+ }
119
+ );
120
+
121
+ // ============================================================================
122
+ // Tool: api_list_endpoints
123
+ // ============================================================================
124
+
125
+ server.tool(
126
+ "api_list_endpoints",
127
+ "List available API endpoints (customize this for your API)",
128
+ {},
129
+ async () => {
130
+ // TODO: Customize this list for your API
131
+ const endpoints = [
132
+ { method: "GET", path: "/users", description: "List all users" },
133
+ { method: "GET", path: "/users/:id", description: "Get user by ID" },
134
+ { method: "POST", path: "/users", description: "Create a new user" },
135
+ { method: "PUT", path: "/users/:id", description: "Update user" },
136
+ { method: "DELETE", path: "/users/:id", description: "Delete user" },
137
+ ];
138
+
139
+ return {
140
+ content: [{
141
+ type: "text",
142
+ text: JSON.stringify({
143
+ baseUrl: API_BASE_URL,
144
+ endpoints,
145
+ note: "Customize this list in src/index.ts"
146
+ }, null, 2),
147
+ }],
148
+ };
149
+ }
150
+ );
151
+
152
+ // ============================================================================
153
+ // Resource: API Status
154
+ // ============================================================================
155
+
156
+ server.resource(
157
+ "api-status",
158
+ "status://api",
159
+ async (uri) => ({
160
+ contents: [{
161
+ uri: uri.href,
162
+ mimeType: "application/json",
163
+ text: JSON.stringify({
164
+ connected: !!API_KEY,
165
+ baseUrl: API_BASE_URL,
166
+ timestamp: new Date().toISOString(),
167
+ }),
168
+ }],
169
+ })
170
+ );
171
+
172
+ // ============================================================================
173
+ // Start Server
174
+ // ============================================================================
175
+
176
+ async function main() {
177
+ const transport = new StdioServerTransport();
178
+ await server.connect(transport);
179
+ console.error("{{SERVER_NAME}} MCP Server running on stdio");
180
+ }
181
+
182
+ main().catch((error) => {
183
+ console.error("Failed to start MCP server:", error);
184
+ process.exit(1);
185
+ });
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "{{SERVER_NAME}}",
3
+ "version": "1.0.0",
4
+ "description": "MCP server for {{DESCRIPTION}}",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "bin": {
8
+ "{{SERVER_NAME}}": "./dist/index.js"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "dev": "tsx src/index.ts",
13
+ "start": "node dist/index.js"
14
+ },
15
+ "dependencies": {
16
+ "@modelcontextprotocol/sdk": "^1.0.0",
17
+ "zod": "^3.23.0"
18
+ },
19
+ "devDependencies": {
20
+ "@types/node": "^20.0.0",
21
+ "tsx": "^4.0.0",
22
+ "typescript": "^5.0.0"
23
+ },
24
+ "engines": {
25
+ "node": ">=18.0.0"
26
+ }
27
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "NodeNext",
5
+ "moduleResolution": "NodeNext",
6
+ "outDir": "./dist",
7
+ "rootDir": "./src",
8
+ "strict": true,
9
+ "esModuleInterop": true,
10
+ "skipLibCheck": true,
11
+ "forceConsistentCasingInFileNames": true,
12
+ "declaration": true
13
+ },
14
+ "include": [
15
+ "src/**/*"
16
+ ],
17
+ "exclude": [
18
+ "node_modules",
19
+ "dist"
20
+ ]
21
+ }