项目简介
MCP文件系统服务器是一个实现了 Model Context Protocol (MCP) 的后端应用,它将您本地文件系统中的指定目录(工作区)的文件以资源的形式暴露给支持 MCP 协议的 LLM 客户端(如 Claude)。这意味着 LLM 可以通过该服务器访问您工作区中的文件内容,从而更好地理解上下文信息。
主要功能点
- 文件资源暴露: 将工作区目录中的每个文件注册为一个 MCP 资源,LLM 客户端可以像访问网络资源一样访问这些文件。
- '.gitignore' 支持: 服务器会遵循 '.gitignore' 文件中的规则,自动忽略 '.gitignore' 中指定的文件和目录,避免不必要的文件暴露。
- 文件变更通知: 当工作区中的文件发生新增、修改或删除时,服务器会实时通知 LLM 客户端,保持客户端对文件系统状态的感知。
- MIME 类型检测: 自动检测文件的 MIME 类型,并进行相应的编码处理,确保 LLM 客户端能够正确解析文件内容。
安装步骤
- 安装 Go: 如果您的机器上没有安装 Go 语言环境,请根据 Go 官方文档 安装 Go。
- 获取 MCP 文件系统服务器: 打开终端,运行以下命令安装 'mcp-filesystem' 服务器:
安装成功后,'mcp-filesystem' 可执行文件通常会位于 '$GOPATH/bin' 目录下,请确保该目录已添加到您的系统环境变量 'PATH' 中。go install github.com/isaacphi/mcp-filesystem@latest
服务器配置
要让 MCP 客户端(例如 Claude)连接到 'mcp-filesystem' 服务器,您需要在客户端的配置文件中添加服务器配置信息。以 Claude Desktop 为例,配置文件通常位于 '~/Library/Application Support/Claude/claude_desktop_config.json'。
在 'mcpServers' 字段下添加一个新的服务器配置,配置信息如下:
{ "mcpServers": { "filesystem": { // 服务器名称,可以自定义,例如 "my-filesystem" "command": "mcp-filesystem", // 启动服务器的命令,这里假设 mcp-filesystem 已添加到 PATH 环境变量 "args": ["--workspace", "/path/to/your/repository"] // 传递给服务器的参数,--workspace 指定您要暴露的工作区目录的绝对路径,请替换为您的实际路径 } } }
配置参数说明:
- '"filesystem"': 服务器的名称,您可以在客户端配置中自定义,用于标识该服务器连接。
- '"command": "mcp-filesystem"': 指定启动 MCP 服务器的可执行文件命令。假设 'mcp-filesystem' 命令已添加到系统的 'PATH' 环境变量中,客户端可以直接通过该命令启动服务器。
- '"args": ["--workspace", "/path/to/your/repository"]': 传递给 'mcp-filesystem' 命令的参数。
- '--workspace': 必须参数,指定您希望暴露给 LLM 客户端访问的本地文件系统目录的绝对路径。请将 '/path/to/your/repository' 替换为您实际的项目或代码仓库的根目录。
更详细的配置 (开发模式):
如果您克隆了仓库并本地构建了 'mcp-filesystem',可以使用本地构建的可执行文件,并开启 debug 日志:
{ "mcpServers": { "filesystem": { "command": "/full/path/to/your/mcp-filesystem/mcp-filesystem", // 本地构建的 mcp-filesystem 可执行文件的完整路径 "args": ["--workspace", "/path/to/repository"], // 工作区目录的绝对路径 "env": { "DEBUG": "1" // 开启 debug 日志,方便开发调试 } } } }
基本使用方法
配置完成后,启动您的 MCP 客户端 (如 Claude)。客户端将根据配置信息连接到 'mcp-filesystem' 服务器。
LLM 客户端即可通过 MCP 协议访问您指定工作区目录下的文件资源。每个文件都将作为一个独立的资源注册到 MCP 服务器,客户端可以列出资源、获取资源内容,并接收文件变更通知。
具体如何使用这些资源取决于您的 MCP 客户端的功能。通常,您可以在与 LLM 的对话中引用这些资源,例如,在 Claude 中,您可以使用 '@resource:<resource_id>' 的形式引用文件资源,其中 '<resource_id>' 是文件相对于工作区根目录的路径(例如 'src/main.py')。
例如,在 Claude 中,您可以这样提问:
请分析一下 @resource:src/main.py 这个文件的代码,并解释它的主要功能。
客户端会将 'src/main.py' 文件内容发送给 Claude,Claude 即可根据文件内容进行分析和回答。
信息
分类
数据库与文件