-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.ts
More file actions
42 lines (36 loc) · 1.9 KB
/
index.ts
File metadata and controls
42 lines (36 loc) · 1.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/usr/bin/env node
import { readFileSync } from "node:fs";
import { createRequire } from "node:module";
import { dirname, join } from "node:path";
import { fileURLToPath } from "node:url";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { register as registerCheckFileOrDir } from "./tools/checkFileOrDir.js";
import { register as registerCloneFileOrDir } from "./tools/cloneFileOrDir.js";
import { register as registerDeleteFileOrDir } from "./tools/deleteFileOrDir.js";
import { register as registerMoveFileOrDir } from "./tools/moveFileOrDir.js";
import { register as registerReadLogFile } from "./tools/readLogFile.js";
import { register as registerRenameFileOrDir } from "./tools/renameFileOrDir.js";
import { register as registerRipgrepSearch } from "./tools/ripgrepSearch.js";
import { register as registerWait } from "./tools/wait.js";
const __dirname = dirname(fileURLToPath(import.meta.url));
const require = createRequire(import.meta.url);
const { version } = require("../package.json") as { version: string };
const isEnabled = (name: string): boolean => process.env[name] !== "false";
const instructions = readFileSync(
join(__dirname, "..", "system.instructions.md"),
"utf-8",
);
const server = new McpServer(
{ name: "mcp-multitool", version },
{ instructions },
);
if (isEnabled("checkFileOrDir")) registerCheckFileOrDir(server);
if (isEnabled("cloneFileOrDir")) registerCloneFileOrDir(server);
if (isEnabled("deleteFileOrDir")) registerDeleteFileOrDir(server);
if (isEnabled("moveFileOrDir")) registerMoveFileOrDir(server);
if (isEnabled("readLogFile")) registerReadLogFile(server);
if (isEnabled("renameFileOrDir")) registerRenameFileOrDir(server);
if (isEnabled("ripgrepSearch")) registerRipgrepSearch(server);
if (isEnabled("wait")) registerWait(server);
await server.connect(new StdioServerTransport());