This commit is contained in:
bipproduction
2025-11-09 16:40:09 +08:00
parent c2bd7cd2d7
commit 65da8c3963
8 changed files with 7892 additions and 34 deletions

View File

@@ -44,6 +44,7 @@
"react-router-dom": "^7.9.4",
"sharp": "^0.34.4",
"swr": "^2.3.6",
"ts-morph": "^27.0.2",
"uuid": "^13.0.0",
"whatsapp-api-js": "^6.1.1",
"whatsapp-client-sdk": "^1.6.0",
@@ -58,6 +59,7 @@
"postcss-preset-mantine": "^1.18.0",
"postcss-simple-vars": "^7.0.1",
"prisma": "^6.17.1",
"typescript": "^5.9.3",
},
},
},
@@ -132,6 +134,10 @@
"@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.4", "", { "os": "win32", "cpu": "x64" }, "sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig=="],
"@isaacs/balanced-match": ["@isaacs/balanced-match@4.0.1", "", {}, "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ=="],
"@isaacs/brace-expansion": ["@isaacs/brace-expansion@5.0.0", "", { "dependencies": { "@isaacs/balanced-match": "^4.0.1" } }, "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA=="],
"@lglab/react-qr-code": ["@lglab/react-qr-code@1.4.5", "", { "peerDependencies": { "react": "^18 || ^19" } }, "sha512-kfaWOsbqqN+iskfRJLSHaPCHX0FAnRtZefj86rPq8WAZUVe9fnRzpr/xlOlXSsC+g1KWdm6LgXeoKgkvOa2F7g=="],
"@mantine/core": ["@mantine/core@8.3.4", "", { "dependencies": { "@floating-ui/react": "^0.27.16", "clsx": "^2.1.1", "react-number-format": "^5.4.4", "react-remove-scroll": "^2.7.1", "react-textarea-autosize": "8.5.9", "type-fest": "^4.41.0" }, "peerDependencies": { "@mantine/hooks": "8.3.4", "react": "^18.x || ^19.x", "react-dom": "^18.x || ^19.x" } }, "sha512-RJ5QUe2FLLJ1uF8xWUpNhDqRFbaOn4S5yTjqLuaurqtZvzee85O/T90dRcR8UNDuE8e/Qqie/jsF/G9RiSxC6g=="],
@@ -184,6 +190,8 @@
"@tokenizer/token": ["@tokenizer/token@0.3.0", "", {}, "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A=="],
"@ts-morph/common": ["@ts-morph/common@0.28.1", "", { "dependencies": { "minimatch": "^10.0.1", "path-browserify": "^1.0.1", "tinyglobby": "^0.2.14" } }, "sha512-W74iWf7ILp1ZKNYXY5qbddNaml7e9Sedv5lvU1V8lftlitkc9Pq1A+jlH23ltDgWYeZFFEqGCD1Ies9hqu3O+g=="],
"@types/body-parser": ["@types/body-parser@1.19.6", "", { "dependencies": { "@types/connect": "*", "@types/node": "*" } }, "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g=="],
"@types/bun": ["@types/bun@1.3.0", "", { "dependencies": { "bun-types": "1.3.0" } }, "sha512-+lAGCYjXjip2qY375xX/scJeVRmZ5cY0wyHYyCYxNcdEXrQ4AOe3gACgd4iQ8ksOslJtW4VNxBJ8llUwc3a6AA=="],
@@ -286,6 +294,8 @@
"clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="],
"code-block-writer": ["code-block-writer@13.0.3", "", {}, "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg=="],
"colorette": ["colorette@2.0.20", "", {}, "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="],
"colors": ["colors@1.4.0", "", {}, "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA=="],
@@ -488,7 +498,7 @@
"mime-types": ["mime-types@3.0.1", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA=="],
"minimatch": ["minimatch@5.1.6", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="],
"minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="],
"minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="],
@@ -524,6 +534,8 @@
"openapi-types": ["openapi-types@12.1.3", "", {}, "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw=="],
"path-browserify": ["path-browserify@1.0.1", "", {}, "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="],
"path-is-absolute": ["path-is-absolute@1.0.1", "", {}, "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="],
"pathe": ["pathe@1.1.2", "", {}, "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="],
@@ -676,10 +688,14 @@
"traverse": ["traverse@0.3.9", "", {}, "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ=="],
"ts-morph": ["ts-morph@27.0.2", "", { "dependencies": { "@ts-morph/common": "~0.28.1", "code-block-writer": "^13.0.3" } }, "sha512-fhUhgeljcrdZ+9DZND1De1029PrE+cMkIP7ooqkLRTrRLTqcki2AstsyJm0vRNbTbVCNJ0idGlbBrfqc7/nA8w=="],
"tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
"type-fest": ["type-fest@4.41.0", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="],
"typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
"uint8array-extras": ["uint8array-extras@1.5.0", "", {}, "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A=="],
"unbzip2-stream": ["unbzip2-stream@1.4.3", "", { "dependencies": { "buffer": "^5.2.1", "through": "^2.3.8" } }, "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg=="],
@@ -762,6 +778,8 @@
"puppeteer-core/rimraf": ["rimraf@3.0.2", "", { "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "bin.js" } }, "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA=="],
"readdir-glob/minimatch": ["minimatch@5.1.6", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="],
"string_decoder/safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="],
"unzipper/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="],

656
colors-mcp.json Normal file
View File

@@ -0,0 +1,656 @@
[
{
"name": "enable",
"type": "function",
"args": [],
"returns": "void",
"description": "colors function enable",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "enable"
}
},
{
"name": "disable",
"type": "function",
"args": [],
"returns": "void",
"description": "colors function disable",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "disable"
}
},
{
"name": "setTheme",
"type": "function",
"args": [
{
"name": "theme",
"type": "any",
"optional": false
}
],
"returns": "void",
"description": "colors function setTheme",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "setTheme"
}
},
{
"name": "strip",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function strip",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "strip"
}
},
{
"name": "stripColors",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function stripColors",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "stripColors"
}
},
{
"name": "black",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function black",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "black"
}
},
{
"name": "red",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function red",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "red"
}
},
{
"name": "green",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function green",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "green"
}
},
{
"name": "yellow",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function yellow",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "yellow"
}
},
{
"name": "blue",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function blue",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "blue"
}
},
{
"name": "magenta",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function magenta",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "magenta"
}
},
{
"name": "cyan",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function cyan",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "cyan"
}
},
{
"name": "white",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function white",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "white"
}
},
{
"name": "gray",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function gray",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "gray"
}
},
{
"name": "grey",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function grey",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "grey"
}
},
{
"name": "bgBlack",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function bgBlack",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "bgBlack"
}
},
{
"name": "bgRed",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function bgRed",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "bgRed"
}
},
{
"name": "bgGreen",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function bgGreen",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "bgGreen"
}
},
{
"name": "bgYellow",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function bgYellow",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "bgYellow"
}
},
{
"name": "bgBlue",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function bgBlue",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "bgBlue"
}
},
{
"name": "bgMagenta",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function bgMagenta",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "bgMagenta"
}
},
{
"name": "bgCyan",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function bgCyan",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "bgCyan"
}
},
{
"name": "bgWhite",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function bgWhite",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "bgWhite"
}
},
{
"name": "reset",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function reset",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "reset"
}
},
{
"name": "bold",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function bold",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "bold"
}
},
{
"name": "dim",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function dim",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "dim"
}
},
{
"name": "italic",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function italic",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "italic"
}
},
{
"name": "underline",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function underline",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "underline"
}
},
{
"name": "inverse",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function inverse",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "inverse"
}
},
{
"name": "hidden",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function hidden",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "hidden"
}
},
{
"name": "strikethrough",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function strikethrough",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "strikethrough"
}
},
{
"name": "rainbow",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function rainbow",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "rainbow"
}
},
{
"name": "zebra",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function zebra",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "zebra"
}
},
{
"name": "america",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function america",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "america"
}
},
{
"name": "trap",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function trap",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "trap"
}
},
{
"name": "random",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function random",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "random"
}
},
{
"name": "zalgo",
"type": "function",
"args": [
{
"name": "text",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "colors function zalgo",
"x-props": {
"module": "colors",
"kind": "function",
"operationId": "zalgo"
}
}
]

6673
lodash-mcp.json Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -50,6 +50,7 @@
"react-router-dom": "^7.9.4",
"sharp": "^0.34.4",
"swr": "^2.3.6",
"ts-morph": "^27.0.2",
"uuid": "^13.0.0",
"whatsapp-api-js": "^6.1.1",
"whatsapp-client-sdk": "^1.6.0",
@@ -63,6 +64,7 @@
"postcss": "^8.5.6",
"postcss-preset-mantine": "^1.18.0",
"postcss-simple-vars": "^7.0.1",
"prisma": "^6.17.1"
"prisma": "^6.17.1",
"typescript": "^5.9.3"
}
}

293
uuid-mcp.json Normal file
View File

@@ -0,0 +1,293 @@
[
{
"name": "parse",
"type": "function",
"args": [
{
"name": "uuid",
"type": "string",
"optional": false
}
],
"returns": "Uint8Array<ArrayBufferLike>",
"description": "uuid function parse",
"x-props": {
"module": "uuid",
"kind": "function",
"operationId": "parse"
}
},
{
"name": "stringify",
"type": "function",
"args": [
{
"name": "arr",
"type": "Uint8Array<ArrayBufferLike>",
"optional": false
},
{
"name": "offset",
"type": "number | undefined",
"optional": true
}
],
"returns": "string",
"description": "uuid function stringify",
"x-props": {
"module": "uuid",
"kind": "function",
"operationId": "stringify"
}
},
{
"name": "v1",
"type": "function",
"args": [
{
"name": "options",
"type": "Version1Options | undefined",
"optional": true
},
{
"name": "buf",
"type": "undefined",
"optional": true
},
{
"name": "offset",
"type": "number | undefined",
"optional": true
}
],
"returns": "string",
"description": "uuid function v1",
"x-props": {
"module": "uuid",
"kind": "function",
"operationId": "v1"
}
},
{
"name": "v1ToV6",
"type": "function",
"args": [
{
"name": "uuid",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "uuid function v1ToV6",
"x-props": {
"module": "uuid",
"kind": "function",
"operationId": "v1ToV6"
}
},
{
"name": "v3",
"type": "function",
"args": [
{
"name": "value",
"type": "string | Uint8Array<ArrayBufferLike>",
"optional": false
},
{
"name": "namespace",
"type": "UUIDTypes",
"optional": false
},
{
"name": "buf",
"type": "undefined",
"optional": true
},
{
"name": "offset",
"type": "number | undefined",
"optional": true
}
],
"returns": "string",
"description": "uuid function v3",
"x-props": {
"module": "uuid",
"kind": "function",
"operationId": "v3"
}
},
{
"name": "v4",
"type": "function",
"args": [
{
"name": "options",
"type": "Version4Options | undefined",
"optional": true
},
{
"name": "buf",
"type": "undefined",
"optional": true
},
{
"name": "offset",
"type": "number | undefined",
"optional": true
}
],
"returns": "string",
"description": "uuid function v4",
"x-props": {
"module": "uuid",
"kind": "function",
"operationId": "v4"
}
},
{
"name": "v5",
"type": "function",
"args": [
{
"name": "value",
"type": "string | Uint8Array<ArrayBufferLike>",
"optional": false
},
{
"name": "namespace",
"type": "UUIDTypes",
"optional": false
},
{
"name": "buf",
"type": "undefined",
"optional": true
},
{
"name": "offset",
"type": "number | undefined",
"optional": true
}
],
"returns": "string",
"description": "uuid function v5",
"x-props": {
"module": "uuid",
"kind": "function",
"operationId": "v5"
}
},
{
"name": "v6",
"type": "function",
"args": [
{
"name": "options",
"type": "Version1Options | undefined",
"optional": true
},
{
"name": "buf",
"type": "undefined",
"optional": true
},
{
"name": "offset",
"type": "number | undefined",
"optional": true
}
],
"returns": "string",
"description": "uuid function v6",
"x-props": {
"module": "uuid",
"kind": "function",
"operationId": "v6"
}
},
{
"name": "v6ToV1",
"type": "function",
"args": [
{
"name": "uuid",
"type": "string",
"optional": false
}
],
"returns": "string",
"description": "uuid function v6ToV1",
"x-props": {
"module": "uuid",
"kind": "function",
"operationId": "v6ToV1"
}
},
{
"name": "v7",
"type": "function",
"args": [
{
"name": "options",
"type": "Version7Options | undefined",
"optional": true
},
{
"name": "buf",
"type": "undefined",
"optional": true
},
{
"name": "offset",
"type": "number | undefined",
"optional": true
}
],
"returns": "string",
"description": "uuid function v7",
"x-props": {
"module": "uuid",
"kind": "function",
"operationId": "v7"
}
},
{
"name": "validate",
"type": "function",
"args": [
{
"name": "uuid",
"type": "unknown",
"optional": false
}
],
"returns": "boolean",
"description": "uuid function validate",
"x-props": {
"module": "uuid",
"kind": "function",
"operationId": "validate"
}
},
{
"name": "version",
"type": "function",
"args": [
{
"name": "uuid",
"type": "string",
"optional": false
}
],
"returns": "number",
"description": "uuid function version",
"x-props": {
"module": "uuid",
"kind": "function",
"operationId": "version"
}
}
]

46
x.yml
View File

@@ -1,39 +1,24 @@
services:
n8n:
image: docker.n8n.io/n8nio/n8n
container_name: n8n
pgadmin:
image: dpage/pgadmin4:latest
container_name: pgadmin
restart: unless-stopped
environment:
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- N8N_RUNNERS_ENABLED=true
- N8N_HOST=n8n.wibudev.com
- N8N_PORT=5678
- WEBHOOK_URL=https://n8n.wibudev.com/
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=wibu@bip.com
- N8N_BASIC_AUTH_PASSWORD=Production_123
- N8N_PROTOCOL=https
- NODE_ENV=production
PGADMIN_DEFAULT_EMAIL: wibu@bip.com
PGADMIN_DEFAULT_PASSWORD: Production_123
volumes:
- ./data/n8n:/home/node/.n8n
- ./data/n8n/local-files:/files
restart: always
- ./data/pgadmin:/var/lib/pgadmin
networks:
- pgadmin-network
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:5678"]
interval: 30s
timeout: 5s
retries: 5
start_period: 20s
networks:
- n8n-network
n8n-frpc:
pgadmin-frpc:
image: snowdreamtech/frpc:latest
container_name: n8n-frpc
container_name: pgadmin-frpc
restart: always
volumes:
- ./data/frpc/frpc.toml:/etc/frp/frpc.toml:ro
@@ -42,12 +27,11 @@ services:
options:
max-size: "10m"
max-file: "3"
depends_on:
n8n:
condition: service_healthy
networks:
- n8n-network
- pgadmin-network
depends_on:
- pgadmin
networks:
n8n-network:
pgadmin-network:
driver: bridge

88
xx.ts
View File

@@ -1 +1,87 @@
console.log("nama".includes("namxa"))
// file: gen-lodash-mcp.ts
import ts from "typescript";
import fs from "fs";
const moduleName = "lodash";
const tmpFile = `./tmp-${moduleName}.ts`;
// generate file sementara untuk memastikan simbol dapat di-resolve
fs.writeFileSync(
tmpFile,
`
import * as _ from "${moduleName}";
type LodashType = typeof _;
export type { LodashType };
`
);
// buat program TS yang bisa resolve definisi lodash
const program = ts.createProgram([tmpFile], {
module: ts.ModuleKind.CommonJS,
target: ts.ScriptTarget.ES2020,
strict: true,
esModuleInterop: true,
skipLibCheck: true,
allowSyntheticDefaultImports: true,
moduleResolution: ts.ModuleResolutionKind.Node10,
types: ["lodash"],
});
const checker = program.getTypeChecker();
const source = program.getSourceFile(tmpFile)!;
// ambil type alias LodashType
let lodashType: ts.Type | null = null;
ts.forEachChild(source, (node) => {
if (ts.isTypeAliasDeclaration(node) && node.name.text === "LodashType") {
lodashType = checker.getTypeFromTypeNode(node.type);
}
});
if (!lodashType) {
console.error("❌ Tidak menemukan tipe lodash");
process.exit(1);
}
const props = checker.getPropertiesOfType(lodashType);
const results: any[] = [];
for (const prop of props) {
const name = prop.getName();
const propType = checker.getTypeOfSymbolAtLocation(prop, source);
const callSignatures = propType.getCallSignatures();
if (!callSignatures.length) continue; // skip non-function
const sig = callSignatures[0] as ts.Signature;
const params = sig.getParameters().map((p) => {
const decl = p.getDeclarations()?.[0];
return {
name: p.getName(),
type: checker.typeToString(
checker.getTypeOfSymbolAtLocation(p, decl || source)
),
};
});
const returnType = checker.typeToString(sig.getReturnType());
results.push({
name,
type: "function",
args: params,
returns: returnType,
description: `Lodash function ${name}`,
"x-props": {
module: moduleName,
kind: "function",
operationId: name,
},
});
}
fs.unlinkSync(tmpFile);
fs.writeFileSync(`lodash-mcp.json`, JSON.stringify(results, null, 2));
console.log(`✅ Generated ${results.length} lodash MCP tools`);

146
xxx.ts Normal file
View File

@@ -0,0 +1,146 @@
// file: gen-mcp.ts
import ts from "typescript";
import fs from "fs";
import path from "path";
const pkgs = process.argv.slice(2);
if (!pkgs.length) {
console.error("❌ Usage: bun run gen-mcp.ts <package-name> [more-packages...]");
process.exit(1);
}
for (const pkg of pkgs) {
console.log(`\n🔍 Generating MCP JSON for: ${pkg} ...`);
const tmpFile = path.resolve(`./tmp-${pkg}.ts`);
fs.writeFileSync(
tmpFile,
`
import * as Pkg from "${pkg}";
type TargetType = typeof Pkg;
export type { TargetType };
`
);
const program = ts.createProgram([tmpFile], {
module: ts.ModuleKind.CommonJS,
target: ts.ScriptTarget.ES2020,
strict: true,
esModuleInterop: true,
skipLibCheck: true,
allowSyntheticDefaultImports: true,
moduleResolution: ts.ModuleResolutionKind.Node10,
types: [pkg],
});
const checker = program.getTypeChecker();
const source = program.getSourceFile(tmpFile)!;
let targetType: ts.Type | null = null;
ts.forEachChild(source, (node) => {
if (ts.isTypeAliasDeclaration(node) && node.name.text === "TargetType") {
targetType = checker.getTypeFromTypeNode(node.type);
}
});
if (!targetType) {
console.error(`❌ Tidak menemukan tipe untuk ${pkg}`);
fs.unlinkSync(tmpFile);
continue;
}
const props = checker.getPropertiesOfType(targetType);
const results: any[] = [];
for (const prop of props) {
const name = prop.getName();
const propType = checker.getTypeOfSymbolAtLocation(prop, source);
// === Jika fungsi ===
const callSignatures = propType.getCallSignatures();
if (callSignatures.length) {
const sig = callSignatures[0] as ts.Signature;
const params = sig.getParameters().map((p, i) => {
const decl = p.getDeclarations()?.[0] as ts.ParameterDeclaration | undefined;
const paramType = checker.getTypeOfSymbolAtLocation(p, decl || source);
const isOptional =
!!(decl && (decl.questionToken || decl.initializer)) ||
(decl && ts.isParameter(decl) && !!decl.dotDotDotToken); // cek rest parameter
return {
name: p.getName(),
type: checker.typeToString(paramType),
optional: isOptional,
};
});
const returnType = checker.typeToString(sig.getReturnType());
results.push({
name,
type: "function",
args: params,
returns: returnType,
description: `${pkg} function ${name}`,
"x-props": {
module: pkg,
kind: "function",
operationId: name,
},
});
continue;
}
// === Jika class ===
const symbolDecls = prop.getDeclarations() ?? [];
for (const decl of symbolDecls) {
if (ts.isClassDeclaration(decl) || ts.isClassExpression(decl)) {
const classType = checker.getTypeAtLocation(decl);
const classMethods = classType
.getProperties()
.filter((p) =>
checker.getTypeOfSymbolAtLocation(p, decl).getCallSignatures().length
);
const methods = classMethods.map((m) => {
const sig = checker
.getTypeOfSymbolAtLocation(m, decl)
.getCallSignatures()[0] as ts.Signature;
const params = sig.getParameters().map((p) => {
const d = p.getDeclarations()?.[0] as ts.ParameterDeclaration | undefined;
const t = checker.getTypeOfSymbolAtLocation(p, d || decl);
return {
name: p.getName(),
type: checker.typeToString(t),
optional: !!(d && (d.questionToken || d.initializer || d.dotDotDotToken)),
};
});
const returnType = checker.typeToString(sig.getReturnType());
return { name: m.getName(), params, returns: returnType };
});
results.push({
name,
type: "class",
methods,
description: `${pkg} class ${name}`,
"x-props": {
module: pkg,
kind: "class",
operationId: name,
},
});
}
}
}
fs.unlinkSync(tmpFile);
const outFile = `${pkg}-mcp.json`;
fs.writeFileSync(outFile, JSON.stringify(results, null, 2));
console.log(`✅ Generated ${results.length} entries → ${outFile}`);
}
console.log("\n🎉 Done! Ready to use in MCP tools.");