关于 Filesystem SSE Server in Go
Filesystem MCP 是一个 Go 服务,供需要检查和修改指定基础目录内文件的 MCP 客户端使用。它支持 stdio 和 HTTP/SSE 传输,并提供常见文件及目录操作工具。
主要功能
- 01按深度列出目录条目
- 02读取和写入文件
- 03获取文件元数据
- 04重命名文件和目录
- 05复制文件和目录
适用场景
- 01检查指定目录中的文件
- 02通过 MCP 客户端读取或创建文件
- 03重命名或复制目录内容
MCP 相关
该服务向 MCP 客户端提供文件系统工具,可通过 stdio 或 HTTP/SSE 运行,并将操作限制在指定的基础目录内。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Filesystem MCP
此仓库提供了 MCP 的一种实现,包含一系列用于与文件系统交互的工具,例如列出目录条目、读取和写入文件、获取文件信息,以及重命名和复制文件或目录。
用户可以在本地计算机上通过 stdio 或 SSE 服务运行它。
目录
安装
- 确保系统已安装 Go。使用 Go 1.24 版本。
- 运行以下命令,使用
go install安装软件包:
go install github.com/lealre/fs-mcp@latest
- 运行帮助命令:
fs-mcp -h
-dir标志用于指定服务要提供服务的基础目录。此项为必填。-port标志用于指定服务监听的端口。此项为可选,默认为8080。-t标志用于指定传输类型。可以是stdio或http(默认为stdio)。
通过克隆仓库在本地安装
- 将仓库克隆到本地计算机:
git clone https://github.com/lealre/fs-mcp.git
- 进入克隆后的目录:
cd fs-mcp
- 构建项目:
go build
- 运行可执行文件:
./fs-mcp -t http -dir /your/directory/path
- 这将在
http://localhost:8080启动服务。
使用 Docker
此 MCP 只能通过 SSE 选项在 Docker 中运行。为此,请创建一个卷,指向要开放用于文件系统操作的目录。
你可以从 Docker Hub 拉取镜像并按如下方式运行:
docker pull lealre/fs-mcp:latest
或者从克隆的仓库构建镜像:
docker build -t fs-mcp .
运行容器,并映射所需的目录和端口:
docker run -p 8080:8080 -v /your/directory/path:/baseDir lealre/fs-mcp -volume "/your/directory/path:/baseDir"
- 将
/your/directory/path替换为实际要提供服务的路径。 -p标志用于将本地计算机的端口映射到 Docker 容器的端口。-v标志用于指定基础目录的路径,与--volume标志类似,以确保 Docker 可以访问你的文件。
此设置将在 http://localhost:8080 启动服务,并提供指定目录。
重要
为确保正常运行,请确保
-v和-volume中的路径完全一致。
容器的基础文件夹卷名称(/baseDir)可以自定义,也可以使用 -port 标志更改端口(同时调整 Docker 中的 -p)。示例:
docker run -p 8081:8081 -v /your/directory/path:/baseDir lealre/fs-mcp -volume "/your/directory/path:/baseDir" -port 8081
使用方法
安装完成后,可以通过运行以下命令使用服务:
fs-mcp -t http -dir /your/directory/path
这将在 http://localhost:8080 启动 MCP 服务,并将文件系统操作限制在此特定路径下。
目前,它只接受一个服务路径。
要更改服务端口,可以将端口作为标志传入:
fs-mcp -dir /your/directory/path -port 3000
要使用 stdio 运行,只需省略 -t 标志。
在 Python 中与 PydanticAI 配合使用示例
使用 SSE 服务
- 运行 MCP 服务:
fs-mcp -dir /your/directory/path
- 创建 Python 客户端(此处使用 OpenAI):
# script.py
import asyncio
import sys
from pydantic_ai import Agent
from pydantic_ai.mcp import MCPServerSSE
server = MCPServerSSE('http://localhost:8080/sse')
agent = Agent('openai:gpt-4o', mcp_servers=[server])
async def main():
if len(sys.argv) < 2:
print("Usage: python script.py 'your prompt/query here'")
sys.exit(1)
query = sys.argv[1]
async with agent.run_mcp_servers():
result = await agent.run(query)
print(result.output)
if __name__ == '__main__':
asyncio.run(main())
- 然后运行:
python script.py "List all the entries for the path in /your/directory/path/somesubpath"
使用 stdio
- 创建 Python 客户端(此处使用 OpenAI):
# script.py
import asyncio
import sys
from pydantic_ai import Agent
from pydantic_ai.mcp import MCPServerStdio
base_path = "/your/directory/path"
server = MCPServerStdio(
'fs-mcp',
args=['-dir', base_path]
)
agent = Agent('openai:gpt-4o', mcp_servers=[server])
async def main():
if len(sys.argv) < 2:
print("Usage: python script.py 'your prompt/query here'")
sys.exit(1)
query = sys.argv[1]
async with agent.run_mcp_servers():
result = await agent.run(query)
print(result.output)
if __name__ == '__main__':
asyncio.run(main())
- 然后运行:
python script.py "List all the entries for the path in /your/directory/path/somesubpath"
工具说明
本项目提供多种与文件系统交互的工具。以下是各个工具的说明:
-
listEntries:列出指定路径下的条目。参数:
path(string,必填):要列出所有条目的路径。depth(number,可选):目录树深度(默认为 3)。
-
readFromFile:读取指定路径下文件的内容。参数:
path(string,必填):要读取的文件路径。
-
writeToFile:使用给定内容创建或覆盖文件。参数:
path(string,必填):要写入的文件路径。content(string,必填):要写入的内容。
-
getFileInfo:获取文件信息,包括大小、上次修改时间、检测到的 MIME 类型和文件权限。参数:
path(string,必填):要获取信息的文件路径。
-
renamePath:将文件或目录重命名。参数:
path(string,必填):要重命名的文件或目录路径。newPathFinalName(string,必填):文件或目录的新名称(仅名称,不含完整路径)。
-
copyFileOrDir:将文件或目录复制到新位置。参数:
path(string,必填):要复制的文件或目录路径。destination(string,必填):文件或目录的目标复制路径。
本项目使用 mcp-go library 实现核心功能。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。