UNPKG

mcp-nodejs-filesystem

Version:

MCP Nodejs filesystem - 支持文件处理

74 lines (73 loc) 2.37 kB
#!/usr/bin/env node import { Server } from "@modelcontextprotocol/sdk/server/index.js"; import { z } from "zod"; import { zodToJsonSchema } from "zod-to-json-schema"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js"; import { copyFile } from "./tools/copy_file.js"; /** * MCP 服务器设置 */ const server = new Server({ name: "universal-file-converter", version: "1.0.0" }, { capabilities: { tools: {}, }, }); server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: [ { name: "copy_file", description: "copy file from source path to target path", inputSchema: zodToJsonSchema(z.object({ filePath: z.string().describe("要检查的根目录路径"), targetPath: z.string().describe("目标路径"), })) } ], }; }); server.setRequestHandler(CallToolRequestSchema, async (request) => { const { params } = request; const { name, arguments: args } = params; if (name === "copy_file") { const { filePath, targetPath } = args; const res = await copyFile(filePath, targetPath); return { content: [ { type: "text", text: res } ] }; } throw new Error(`未知的工具: ${name}`); }); // 处理初始化后的设置 server.oninitialized = async () => { console.log("MCP服务器初始化完成"); try { // 获取初始根目录 const response = await server.listRoots(); if (response && 'roots' in response) { console.log("初始根目录:", response.roots.map(r => r.uri)); } } catch (error) { console.log("获取初始根目录失败:", error instanceof Error ? error.message : String(error)); } }; // Start server async function runServer() { const transport = new StdioServerTransport(); await server.connect(transport); console.info("MCP服务器运行在 stdio: mcp-nodejs-filesystem"); } runServer().catch((error) => { console.error("Fatal error running server:", error); process.exit(1); });