文件操作服务器

一个基于TypeScript和Zod构建的轻量级文件系统操作服务器,提供基本的文件读写、删除和列表功能,适用于开发环境中的文件管理需求。

  • by ylcnfrht
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 ylcnfrht/file-mcp-server

使用说明

文件MCP服务器

一个小型的模型上下文协议(MCP)服务器,提供基本的文件系统操作。使用TypeScript和Zod构建。易于扩展。

快速入门

npm install
npm run build && npm start

服务器通过标准输入输出运行,并在当前工作目录中操作文件(或 FILE_BASE_DIR 环境变量)。

发展

npm run dev

检查员

使用MCP Inspector进行交互式测试:

npm run build
npm run inspector

这会在检查器下启动服务器,以便您可以列出工具并调用它们。

工具

  • listFiles:列出目录中的所有文件
  • readFile:读取文件内容
  • writeFile:将内容写入文件(创建或覆盖)
  • deleteFile:从文件系统中删除一个文件

工具清单请求(MCP):

{
  "method": "tools/list",
  "params": {}
}

呼叫示例:

{
  "method": "tools/call",
  "params": {
    "name": "writeFile",
    "arguments": { "filePath": "example.txt", "content": "Hello, World!" }
  }
}

响应示例:

{
  "content": [{ "type": "text", "text": "File \"example.txt\" written successfully." }]
}

验证与模式(或架构)

  • 使用Zod直接进行输入验证 src/index.ts。
  • inputSchema 由……返回 tools/list 是一个MCP客户端可以使用的JSON Schema对象。

文件路径输入模式(Zod):

const readInput = z.object({ filePath: z.string().describe('Path to the file to read') });

文件路径和内容输入模式(Zod):

const writeInput = z.object({
  filePath: z.string().describe('Path to the file to write'),
  content: z.string().describe('Content to write'),
});

JSON Schema(针对MCP):

const inputFilePathAndContentJsonSchema = {
  type: 'object',
  properties: {
    filePath: { type: 'string', description: 'filePath' },
    content: { type: 'string', description: 'content' },
  },
  required: ['filePath', 'content'],
} as const;

项目结构

src/
  index.ts   # server setup, tool definitions, validation, and handlers
dist/
  index.js   # build output

扩展(添加新工具)

所有工具均在(某处/某文件中)定义 src/index.ts 在……之下 tools 地图。要添加一个:

  1. 添加或重用一个 Zod 模式及其对应的 JSON 模式。
  2. 实施一个 execute 功能。
  3. 在(系统/平台)中注册该工具 tools 带有地图的 description, inputSchema, validate, execute,以及 format。

脚本

来自 package.json:

  • build将 TypeScript 编译为 dist/
  • start跑 node dist/index.js
  • dev: tsc && node dist/index.js
  • inspector: npx @modelcontextprotocol/inspector node dist/index.js

故障排除

  • “无法找到模块 …/x.js”:请确保 ESM 路径包含 .js 扩展(tsconfig 使用 NodeNext)。
  • “文件未找到”: readFile 当文件不存在时抛出异常。
  • “无效的参数…”:Zod 验证失败;请确保参数有效 filePath 并且 content 字符串。
  • “权限被拒绝”:请确保服务器对目标目录具有读/写权限。

许可证

麻省理工学院(MIT)