claude-code-skill-power/filesystem-mcp-server
dzq f25d790d6f 📦 build: 初始化 Claude Code Skills 项目结构
添加 FileSystem MCP 服务器的完整实现,包括:
- 基于 MCP SDK 的 TypeScript 服务器
- 三个核心工具:read_file, list_directory, search_files
- 双传输模式支持(stdio 和 HTTP)
- 完整的类型安全和输入验证
- 项目文档和构建配置

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-08 09:49:06 +08:00
..
src 📦 build: 初始化 Claude Code Skills 项目结构 2026-01-08 09:49:06 +08:00
.gitignore 📦 build: 初始化 Claude Code Skills 项目结构 2026-01-08 09:49:06 +08:00
README.md 📦 build: 初始化 Claude Code Skills 项目结构 2026-01-08 09:49:06 +08:00
package-lock.json 📦 build: 初始化 Claude Code Skills 项目结构 2026-01-08 09:49:06 +08:00
package.json 📦 build: 初始化 Claude Code Skills 项目结构 2026-01-08 09:49:06 +08:00
tsconfig.json 📦 build: 初始化 Claude Code Skills 项目结构 2026-01-08 09:49:06 +08:00

README.md

FileSystem MCP Server

一个基于 Model Context Protocol (MCP) 的文件系统服务器,提供与本地文件系统交互的工具。

概述

FileSystem MCP Server 是一个 Node.js/TypeScript 实现的服务端应用,通过 MCP 协议使 AI 模型能够安全地读取、浏览和搜索本地文件系统。该服务器提供三个核心工具:read_filelist_directorysearch_files,支持多种输出格式和输入验证。

功能特性

  • 安全文件读取 - 支持指定编码、行范围和字符限制的文本读取
  • 目录内容浏览 - 列出目录中的文件和子目录,包含元数据
  • 模式匹配搜索 - 使用 glob 模式递归搜索文件
  • 双传输模式 - 支持 stdio本地和 HTTP远程两种传输方式
  • 类型安全 - 完整的 TypeScript 类型定义和 Zod 输入验证

系统要求

  • Node.js >= 18
  • npm 或 yarn

快速开始

安装

cd filesystem-mcp-server
npm install

构建

npm run build

运行

stdio 模式(默认,本地集成)

npm start

HTTP 模式(远程访问)

TRANSPORT=http npm start

开发模式(热重载)

npm run dev

HTTP 模式默认监听 3000 端口,可通过 PORT 环境变量指定其他端口:

PORT=8080 TRANSPORT=http npm start

工具说明

read_file

读取指定路径的文件内容。

参数

参数 类型 必需 默认值 说明
path string - 文件的绝对路径
encoding string utf-8 文件编码
max_chars number - 返回的最大字符数
line_start number - 起始行号1-based
line_end number - 结束行号1-based
response_format string markdown 输出格式:markdownjson

示例

{
  "path": "/path/to/config.json",
  "encoding": "utf-8",
  "line_start": 1,
  "line_end": 100,
  "response_format": "markdown"
}

输出格式

  • Markdown人类可读的格式化输出包含文件信息和代码块
  • JSON包含完整元数据的结构化数据

list_directory

列出指定目录的内容。

参数

参数 类型 必需 默认值 说明
path string - 目录的绝对路径
response_format string markdown 输出格式:markdownjson

示例

{
  "path": "/path/to/project",
  "response_format": "markdown"
}

输出格式

  • Markdown人类可读的目录结构使用图标标识文件和目录
  • JSON包含文件和目录详细信息的结构化数据

search_files

使用 glob 模式在目录中搜索文件。

参数

参数 类型 必需 默认值 说明
path string - 搜索起始目录的绝对路径
pattern string - glob 模式(如 *.ts**/*.json
max_results number 50 返回的最大结果数(最大 100
include_content boolean false 是否在结果中包含文件内容
response_format string markdown 输出格式:markdownjson

模式示例

模式 匹配
*.ts 当前目录下的所有 TypeScript 文件
**/*.json 任意目录下的所有 JSON 文件
src/**/*.ts src 目录下的所有 TypeScript 文件
*.{js,ts} 当前目录下的所有 JS 和 TS 文件

示例

{
  "path": "/path/to/project",
  "pattern": "**/*.ts",
  "max_results": 50,
  "include_content": false,
  "response_format": "json"
}

输出格式

  • Markdown人类可读的搜索结果列表
  • JSON包含所有匹配文件详细信息的结构化数据

环境变量

变量 说明
TRANSPORT stdiohttp 传输协议,默认 stdio
PORT 端口号 HTTP 模式监听的端口,默认 3000

在 MCP 客户端中使用

Claude Desktop 配置

在 Claude Desktop 的配置文件中添加:

{
  "mcpServers": {
    "filesystem": {
      "command": "node",
      "args": ["/path/to/filesystem-mcp-server/dist/index.js"],
      "disabled": false,
      "env": {}
    }
  }
}

环境变量配置

如需使用 HTTP 模式:

{
  "mcpServers": {
    "filesystem": {
      "command": "node",
      "args": ["/path/to/filesystem-mcp-server/dist/index.js"],
      "disabled": false,
      "env": {
        "TRANSPORT": "http",
        "PORT": "3000"
      }
    }
  }
}

项目结构

filesystem-mcp-server/
├── package.json          # 项目配置和依赖
├── tsconfig.json         # TypeScript 编译配置
├── README.md             # 项目文档
├── src/
│   ├── index.ts          # 服务器入口点
│   ├── types.ts          # TypeScript 类型定义
│   ├── constants.ts      # 常量配置
│   └── tools/
│       ├── index.ts      # 工具注册
│       ├── read-file.ts      # 读取文件工具实现
│       ├── list-directory.ts # 目录列表工具实现
│       └── search-files.ts   # 文件搜索工具实现
└── dist/                 # 编译输出

开发

可用脚本

# 构建项目
npm run build

# 开发模式(热重载)
npm run dev

# 清理构建产物
npm run clean

添加新工具

  1. src/tools/ 目录中创建新的工具文件
  2. 使用 server.registerTool() 注册工具
  3. src/tools/index.ts 中导出工具注册函数

错误处理

所有工具都提供清晰的错误信息:

错误类型 错误信息
文件不存在 Error: File not found: <path>
目录不存在 Error: Directory not found: <path>
权限被拒 Error: Permission denied to <operation>: <path>
路径是文件 Error: Path is a file, not a directory: <path>
路径是目录 Error: Path is a directory, not a file: <path>

许可证

MIT License