aig-mcp-server 1.0.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.
- package/dist/index.js +74 -0
- package/dist/index.js.map +1 -0
- package/package.json +30 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/index.ts
|
|
4
|
+
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
5
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
6
|
+
import {
|
|
7
|
+
CallToolRequestSchema,
|
|
8
|
+
ListToolsRequestSchema
|
|
9
|
+
} from "@modelcontextprotocol/sdk/types.js";
|
|
10
|
+
import { execSync } from "child_process";
|
|
11
|
+
var server = new Server(
|
|
12
|
+
{ name: "aig-mcp-server", version: "1.0.2" },
|
|
13
|
+
{ capabilities: { tools: {} } }
|
|
14
|
+
);
|
|
15
|
+
var runSync = (cmd) => execSync(cmd, { stdio: "pipe", encoding: "utf-8" });
|
|
16
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
17
|
+
return {
|
|
18
|
+
tools: [
|
|
19
|
+
{
|
|
20
|
+
name: "aig_save",
|
|
21
|
+
description: "\u5728\u8FDB\u884C\u4EE3\u7801\u4FEE\u6539\u524D\uFF0C\u5F3A\u5236\u8C03\u7528\u6B64\u5DE5\u5177\u8FDB\u884C Git \u5B58\u6863\u3002",
|
|
22
|
+
inputSchema: {
|
|
23
|
+
type: "object",
|
|
24
|
+
properties: {
|
|
25
|
+
message: {
|
|
26
|
+
type: "string",
|
|
27
|
+
description: "\u5B58\u6863\u5907\u6CE8\uFF0C\u7B80\u8FF0\u63A5\u4E0B\u6765\u8981\u4FEE\u6539\u7684\u5185\u5BB9"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
required: ["message"]
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: "aig_undo",
|
|
35
|
+
description: "\u4EE3\u7801\u4FEE\u6539\u5931\u8D25\u3001\u62A5\u9519\uFF0C\u6216\u7528\u6237\u8981\u6C42\u64A4\u9500\u65F6\uFF0C\u8C03\u7528\u6B64\u5DE5\u5177\u5C06\u4EE3\u7801\u56DE\u6EDA\u3002",
|
|
36
|
+
inputSchema: {
|
|
37
|
+
type: "object",
|
|
38
|
+
properties: {}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
45
|
+
const { name, arguments: args } = request.params;
|
|
46
|
+
try {
|
|
47
|
+
if (name === "aig_save") {
|
|
48
|
+
const message = args.message;
|
|
49
|
+
runSync("git add .");
|
|
50
|
+
const timestamp = (/* @__PURE__ */ new Date()).toLocaleTimeString();
|
|
51
|
+
const msg = `\u{1F916} [AI Checkpoint] ${message} (${timestamp})`;
|
|
52
|
+
runSync(`git commit -m "${msg}"`);
|
|
53
|
+
return {
|
|
54
|
+
content: [{ type: "text", text: `\u2705 \u5B58\u6863\u6210\u529F\uFF01\u8BB0\u5F55: ${msg}` }]
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
if (name === "aig_undo") {
|
|
58
|
+
runSync("git reset --hard HEAD~1");
|
|
59
|
+
return {
|
|
60
|
+
content: [{ type: "text", text: "\u23EA \u5DF2\u5B8C\u7F8E\u56DE\u6EDA\uFF01\u521A\u624D\u7684\u4FEE\u6539\u5DF2\u64A4\u9500\u3002" }]
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
throw new Error("\u672A\u77E5\u7684\u5DE5\u5177\u8C03\u7528");
|
|
64
|
+
} catch (error) {
|
|
65
|
+
const errMsg = error instanceof Error ? error.message : String(error);
|
|
66
|
+
return {
|
|
67
|
+
content: [{ type: "text", text: `\u274C \u5931\u8D25: ${errMsg}` }],
|
|
68
|
+
isError: true
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
var transport = new StdioServerTransport();
|
|
73
|
+
await server.connect(transport);
|
|
74
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { Server } from \"@modelcontextprotocol/sdk/server/index.js\";\r\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\r\nimport {\r\n CallToolRequestSchema,\r\n ListToolsRequestSchema,\r\n} from \"@modelcontextprotocol/sdk/types.js\";\r\nimport { execSync } from \"child_process\";\r\n\r\n// 初始化 MCP Server\r\nconst server = new Server(\r\n { name: \"aig-mcp-server\", version: \"1.0.2\" },\r\n { capabilities: { tools: {} } },\r\n);\r\n\r\nconst runSync = (cmd: string): string =>\r\n execSync(cmd, { stdio: \"pipe\", encoding: \"utf-8\" });\r\n\r\n// 1. 注册工具\r\nserver.setRequestHandler(ListToolsRequestSchema, async () => {\r\n return {\r\n tools: [\r\n {\r\n name: \"aig_save\",\r\n description: \"在进行代码修改前,强制调用此工具进行 Git 存档。\",\r\n inputSchema: {\r\n type: \"object\" as const,\r\n properties: {\r\n message: {\r\n type: \"string\",\r\n description: \"存档备注,简述接下来要修改的内容\",\r\n },\r\n },\r\n required: [\"message\"],\r\n },\r\n },\r\n {\r\n name: \"aig_undo\",\r\n description:\r\n \"代码修改失败、报错,或用户要求撤销时,调用此工具将代码回滚。\",\r\n inputSchema: {\r\n type: \"object\" as const,\r\n properties: {},\r\n },\r\n },\r\n ],\r\n };\r\n});\r\n\r\n// 2. 执行工具\r\nserver.setRequestHandler(CallToolRequestSchema, async (request) => {\r\n const { name, arguments: args } = request.params;\r\n\r\n try {\r\n if (name === \"aig_save\") {\r\n const message = (args as { message: string }).message;\r\n runSync(\"git add .\");\r\n const timestamp = new Date().toLocaleTimeString();\r\n const msg = `🤖 [AI Checkpoint] ${message} (${timestamp})`;\r\n runSync(`git commit -m \"${msg}\"`);\r\n return {\r\n content: [{ type: \"text\", text: `✅ 存档成功!记录: ${msg}` }],\r\n };\r\n }\r\n\r\n if (name === \"aig_undo\") {\r\n runSync(\"git reset --hard HEAD~1\");\r\n return {\r\n content: [{ type: \"text\", text: \"⏪ 已完美回滚!刚才的修改已撤销。\" }],\r\n };\r\n }\r\n\r\n throw new Error(\"未知的工具调用\");\r\n } catch (error) {\r\n const errMsg = error instanceof Error ? error.message : String(error);\r\n return {\r\n content: [{ type: \"text\", text: `❌ 失败: ${errMsg}` }],\r\n isError: true,\r\n };\r\n }\r\n});\r\n\r\n// 3. 启动 Server\r\nconst transport = new StdioServerTransport();\r\nawait server.connect(transport);\r\n"],"mappings":";;;AAAA,SAAS,cAAc;AACvB,SAAS,4BAA4B;AACrC;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,gBAAgB;AAGzB,IAAM,SAAS,IAAI;AAAA,EACjB,EAAE,MAAM,kBAAkB,SAAS,QAAQ;AAAA,EAC3C,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,EAAE;AAChC;AAEA,IAAM,UAAU,CAAC,QACf,SAAS,KAAK,EAAE,OAAO,QAAQ,UAAU,QAAQ,CAAC;AAGpD,OAAO,kBAAkB,wBAAwB,YAAY;AAC3D,SAAO;AAAA,IACL,OAAO;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,aAAa;AAAA,UACX,MAAM;AAAA,UACN,YAAY;AAAA,YACV,SAAS;AAAA,cACP,MAAM;AAAA,cACN,aAAa;AAAA,YACf;AAAA,UACF;AAAA,UACA,UAAU,CAAC,SAAS;AAAA,QACtB;AAAA,MACF;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,aACE;AAAA,QACF,aAAa;AAAA,UACX,MAAM;AAAA,UACN,YAAY,CAAC;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF,CAAC;AAGD,OAAO,kBAAkB,uBAAuB,OAAO,YAAY;AACjE,QAAM,EAAE,MAAM,WAAW,KAAK,IAAI,QAAQ;AAE1C,MAAI;AACF,QAAI,SAAS,YAAY;AACvB,YAAM,UAAW,KAA6B;AAC9C,cAAQ,WAAW;AACnB,YAAM,aAAY,oBAAI,KAAK,GAAE,mBAAmB;AAChD,YAAM,MAAM,6BAAsB,OAAO,KAAK,SAAS;AACvD,cAAQ,kBAAkB,GAAG,GAAG;AAChC,aAAO;AAAA,QACL,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,sDAAc,GAAG,GAAG,CAAC;AAAA,MACvD;AAAA,IACF;AAEA,QAAI,SAAS,YAAY;AACvB,cAAQ,yBAAyB;AACjC,aAAO;AAAA,QACL,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,oGAAoB,CAAC;AAAA,MACvD;AAAA,IACF;AAEA,UAAM,IAAI,MAAM,4CAAS;AAAA,EAC3B,SAAS,OAAO;AACd,UAAM,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACpE,WAAO;AAAA,MACL,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,wBAAS,MAAM,GAAG,CAAC;AAAA,MACnD,SAAS;AAAA,IACX;AAAA,EACF;AACF,CAAC;AAGD,IAAM,YAAY,IAAI,qBAAqB;AAC3C,MAAM,OAAO,QAAQ,SAAS;","names":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "aig-mcp-server",
|
|
3
|
+
"version": "1.0.2",
|
|
4
|
+
"description": "AI Git checkpoint MCP server",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"aig-mcp-server": "dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"dev": "tsup --watch",
|
|
15
|
+
"build": "tsup",
|
|
16
|
+
"start": "node dist/index.js"
|
|
17
|
+
},
|
|
18
|
+
"keywords": [],
|
|
19
|
+
"author": "",
|
|
20
|
+
"license": "ISC",
|
|
21
|
+
"packageManager": "pnpm@10.28.2",
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@modelcontextprotocol/sdk": "^1.0.0"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"@types/node": "^22.0.0",
|
|
27
|
+
"tsup": "^8.0.0",
|
|
28
|
+
"typescript": "^5.0.0"
|
|
29
|
+
}
|
|
30
|
+
}
|