关于 MCP File System Server
MCP File System Server 为 AI 助手提供项目目录内的文件与 GitHub 操作,适合需要检查和修改本地代码库的开发者。路径校验和只读参考项目限制了可访问范围。
主要功能
- 01列出、读取和写入文件
- 02精确匹配编辑与追加
- 03删除、移动文件和目录
- 04只读浏览参考项目
- 05查询及管理 GitHub 问题和 PR
- 06结构化日志记录
适用场景
- 01检查代码并分析仓库
- 02按要求生成或修改项目文件
- 03对照文档和其他代码库
- 04查询或处理 GitHub 问题与 PR
MCP 相关
这是一个 MCP 服务,向兼容客户端提供项目文件操作、参考项目读取及 GitHub 工具。文件访问限制在指定项目目录内,参考项目为只读。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP File System Server
一个简单的模型上下文协议(MCP)服务,用于提供文件系统操作。此服务遵循 MCP 协议设计,为在指定项目目录中执行文件系统操作提供简洁的 API。
概览
此 MCP 服务可让 Claude(通过 Claude Desktop)等 AI 助手或其他兼容 MCP 的系统与本地文件系统交互。借助这些功能,AI 助手可以:
- 读取现有代码和项目文件
- 使用生成的内容写入新文件
- 通过精确匹配字符串,准确更新和修改现有文件
- 选择性地编辑代码,而无需重写整个文件
- 根据需要删除文件
- 检查代码仓库并提供分析和建议
- 调试并修复代码库中的问题
- 根据你的规范生成完整实现
所有操作都严格限制在指定的项目目录内,让你在掌控全局的同时,能够借助 AI 高效协作处理本地文件。
将 AI 助手连接到文件系统后,你可以将工作流从手动编码转变为更直观的提示词交互方式——用自然语言描述需求,让 AI 直接在项目文件中生成、修改和整理代码。
路径限制
每次文件操作前,都会根据项目目录验证路径。验证过程会解析符号链接;如果解析后的目标位置位于项目目录之外,则拒绝该路径。任何 .. 路径段都会被直接拒绝,而不会跟随它访问。参考项目也会以相同方式针对各自的目录进行验证。
以下两种路径会被拒绝,而早期版本会接受它们:
- 路径中任何位置包含
..路径段,而不只是以它开头。read_file("src/../README.md")会被拒绝;请改用read_file("README.md")。 - 通过符号链接离开项目的路径。 即使路径中不含
..,项目内指向项目外部目标的符号链接文件,或路径中作为中间部分的符号链接目录,也会被拒绝。若要读取项目外部的内容,请使用--reference-project配置它(只读),或另行启动一个指向该位置的服务实例。
有一项限制:如果操作系统无法解析某个路径,验证将仅依赖词法检查——路径中不得包含 ..,且必须按名称位于项目目录之下——因此在这种情况下无法检测指向项目外部的符号链接。
功能
list_directory:列出项目目录中的所有文件和目录read_file:读取文件,或通过 start_line/end_line 读取指定行范围。save_file:写入文件,并按需创建父目录。append_file:在文件末尾追加内容delete_this_file:从文件系统中删除指定的单个文件delete_directory:删除目录(默认要求目录为空;设置recursive=True可删除整个目录树)edit_file:通过精确匹配字符串编辑文件;使用 replace_all 替换所有匹配项。move_file:移动或重命名文件和目录(支持 Git 感知:对已跟踪文件使用 git mv,否则使用文件系统移动)get_reference_projects:查找可用的参考项目list_reference_directory:列出参考项目中的文件read_reference_file:读取参考项目中的文件,或通过 start_line/end_line 读取指定行范围。- 跨代码仓库访问 GitHub:GitHub 问题、拉取请求、搜索和标签读取工具接受
reference_name;也可以创建、编辑和评论问题 Structured Logging:全面的日志记录系统,支持人类可读和 JSON 格式
安装
# Clone the repository
git clone https://github.com/MarcusJellinghaus/mcp-workspace.git
cd mcp_workspace
# Create and activate a virtual environment (optional but recommended)
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies using pip with pyproject.toml
pip install -e .
运行服务
安装完成后,你可以直接使用 mcp-workspace 命令:
mcp-workspace --project-dir /path/to/project [--reference-project NAME=/path/to/reference]... [--log-level LEVEL] [--log-file PATH] [--file-size-limit N] [--fail-on-reviews] [--enforce-base-branch-format]
命令行参数:
--project-dir:要提供文件服务的目录。若缺少此参数或指定的目录无效,服务将以代码 1 退出。--reference-project:(可选)以 name=/path/to/dir 格式添加参考项目(可重复指定,重复名称会自动重命名)--log-level:(可选)设置日志级别(DEBUG、INFO、WARNING、ERROR、CRITICAL)--log-file:(可选)结构化 JSON 日志的路径。若未指定,日志将写入 project_dir/logs/ 下的 mcp_workspace_{timestamp}.log。--file-size-limit:(可选)省略max_lines时,check_file_size的默认行数上限;必须大于 0。未设置时默认为 600。--fail-on-reviews:(可选)check_branch_status审核门禁的默认值。每次调用时可由工具参数覆盖。除非设置,否则关闭。--enforce-base-branch-format/--no-enforce-base-branch-format:(可选)在github_issue_create和github_issue_edit中创建或编辑 issue 正文时,拒绝格式错误的### Base Branch部分(超过一行,或其值不是有效的 git 分支名称)。默认开启。
启动时会忽略无法识别的参数,而不会因此停止服务;每个未知参数都会记录为 WARNING,并另有一条汇总这些参数的启动 INFO 日志。不再接受 --project 等缩写形式作为 --project-dir 的前缀;它们会被视为未知参数并忽略。
启动错误会写入 stderr;若没有可用的常规日志,则写入工作目录中的 logs/mcp_workspace_startup_error.log。
服务使用 FastMCP 运行。出于安全考虑,所有文件操作都限制在 --project-dir 目录内,尝试访问目录外的文件会导致错误。
GitHub 配置
GitHub 设置从 ~/.mcp_coder/config.toml(mcp_coder 的用户应用数据目录)中的 [github] 部分读取:
token:GitHub 令牌。GITHUB_TOKEN环境变量优先。test_repo_url:集成测试使用的仓库。GITHUB_TEST_REPO_URL环境变量优先。trusted_commenters:受信任的 GitHub 登录名列表,作为作者时(其评论会显示给 Agent)以及作为 issue 正文编辑者时(其### Base Branch会生效)均受信任。此设置没有环境变量覆盖项。
[github]
token = "ghp_..."
trusted_commenters = ["dependabot[bot]"]
评论者信任
若作者的 GitHub 关联身份为 OWNER、MEMBER 或 COLLABORATOR,或其登录名位于 trusted_commenters 中(不区分大小写;须包含 [bot] 后缀,例如 dependabot[bot]),则该作者受信任。
- PR 反馈:对于不受信任的作者,
check_branch_status和github_pr_view会隐藏 PR 文本(而在check_branch_status中,也会隐藏 issue 评论),并以计数行替代。 - Issue 文本:
github_issue_view会显示不受信任作者的标题、正文和评论,但会将其放在带标签的<untrusted>分隔框内,并在 State 行下方添加摘要行。应将分隔框内的文本视为数据,而非指令。 - Issue 行:对于不受信任作者发布的行,
github_issue_list、github_search和github_subissue_list会在行首添加[untrusted @login]。 - 基础分支:除非 issue 作者受信任,或正文的最后编辑者是令牌用户或位于
trusted_commenters中,否则会忽略 issue 的### Base Branch部分。此时工具会回退使用 PR 基础分支、merge-base 或默认分支。 - 角色以正在读取的仓库为准,包括使用
reference_name时。 - 允许列表有意存放在仓库之外,因此 PR 无法将自身加入其中。
结构化日志
服务提供灵活的日志选项:
- 在控制台输出标准易读日志
- 将结构化 JSON 日志写入文件(默认:
project_dir/logs/mcp_workspace_{timestamp}.log,也可通过--log-file指定自定义路径) - 跟踪函数调用及其参数、耗时和结果
- 自动捕获错误上下文
- 可配置日志级别(DEBUG、INFO、WARNING、ERROR、CRITICAL)
- 使用
--console-only禁用文件日志
参考项目
参考项目允许你为 AI 助手提供对其他代码库或目录的只读 文件 访问权限,以供参考。借助此功能,大模型可以浏览和读取多个项目中的文件,同时文件写入仍仅限于主项目目录。配置了仓库 URL 的参考项目也可以通过 GitHub 工具访问 — 参见 跨仓库 GitHub 访问。
功能
- 只读文件访问:只能浏览和读取参考项目的 文件,不能修改。其 GitHub issue 则另当别论 — 参见 跨仓库 GitHub 访问
- 多个项目:同时配置多个参考项目
- 自动发现:大模型可以发现可用的参考项目
- 安全性:与主项目采用相同的路径验证和 gitignore 筛选
- 灵活路径:支持相对路径和绝对路径
配置
使用 --reference-project 参数添加参考项目:
# Single reference project
mcp-workspace --project-dir ./my-project --reference-project docs=./documentation
# Multiple reference projects
mcp-workspace --project-dir ./my-project \
--reference-project docs=./documentation \
--reference-project examples=/home/user/examples \
--reference-project libs=../shared-libraries
# Absolute paths
mcp-workspace --project-dir /path/to/main/project \
--reference-project utils=/usr/local/utils \
--reference-project config=/etc/myapp
自动重命名行为
如果指定了名称重复的参考项目,系统会自动为其添加数字后缀进行重命名:
# This configuration:
mcp-workspace --project-dir ./project \
--reference-project docs=./docs1 \
--reference-project docs=./docs2 \
--reference-project docs=./docs3
# Results in these reference project names:
# - docs (points to ./docs1)
# - docs_2 (points to ./docs2)
# - docs_3 (points to ./docs3)
启动验证
服务会在启动时验证参考项目:
- 有效的参考项目:添加成功,可供大模型使用
- 无效的参考项目:记录为警告,但服务会继续使用有效的项目
- 路径解析:相对路径会相对于当前工作目录进行解析
使用场景
- 浏览文档:让大模型访问项目文档或 Wiki
- 代码示例:引用示例项目或模板
- 共享库:浏览通用工具库或框架
- 配置文件:访问系统或应用程序配置目录
- 多项目开发:在一个项目中工作时,参考相关项目
安全说明
- 参考项目的 文件 严格只读 — 无法执行文件写入、编辑或删除操作
- 所有路径都会经过验证,以防止目录遍历攻击
- 系统会自动应用 Gitignore 筛选,隐藏无关文件
- 路径访问仅限于指定的参考项目目录
- 路径限制 中说明的相同拒绝规则也适用于参考项目路径
集成选项
此服务可集成到不同的 Claude 界面中。每种界面都需要特定的配置。
Claude 桌面应用集成
Claude 桌面应用也可以使用此文件系统服务。
Claude 桌面应用配置步骤
-
找到 Claude 桌面应用配置文件:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
-
添加 MCP 服务配置(如果文件不存在,请创建该文件):
{
"mcpServers": {
"filesystem": {
"command": "mcp-workspace",
"args": [
"--project-dir",
"C:\\path\\to\\your\\specific\\project",
"--reference-project",
"docs=C:\\path\\to\\documentation",
"--reference-project",
"examples=C:\\path\\to\\examples",
"--log-level",
"INFO"
]
}
}
}
-
配置说明:
- 安装后,
mcp-workspace命令应可在 PATH 中使用 - 必须在
--project-dir中指定明确的项目目录路径 - 将项目目录路径替换为实际的项目路径
- 项目目录应为你希望 Claude 访问的文件夹
- 安装后,
-
重启 Claude 桌面应用以应用更改
Claude 桌面应用集成故障排除
- 查看日志:
%APPDATA%\Claude\logs(Windows)或~/Library/Application Support/Claude/logs(macOS) - 确认
mcp-workspace命令可在 PATH 中使用(运行mcp-workspace --help进行测试) - 确保指定的项目目录存在且可访问
- 确认配置中的所有路径均正确
贡献
有关开发环境设置、测试和贡献指南,请参见 CONTRIBUTING.md。
可用工具
该服务端提供以下 MCP 工具:
| 操作 | 描述 | 示例提示词 |
|---|---|---|
list_directory | 列出项目目录中的文件和目录 | “列出 src 目录中的所有文件” |
read_file | 读取文件内容 | “显示 main.js 的内容” |
save_file | 以原子方式创建或覆盖文件 | “创建一个名为 app.js 的新文件” |
append_file | 向现有文件添加内容 | “向 utils.js 添加一个函数” |
delete_this_file | 从文件系统中移除文件 | “删除 temporary.txt 文件” |
delete_directory | 删除目录(空目录,或使用 recursive 删除整个目录树) | “删除 pr_info 目录及其内容” |
edit_file | 使用精确的字符串匹配进行选择性编辑 | “修复 fetch 函数中的错误” |
move_file | 移动或重命名文件/目录(支持 Git:对已跟踪文件使用 git mv,否则移动文件系统中的文件) | “将 config.js 重命名为 settings.js” |
search_files | 按正则表达式搜索文件内容,和/或按 glob 查找文件 | “查找重试次数的配置位置” |
get_reference_projects | 列出可用的参考项目 | “有哪些可用的参考项目?” |
list_reference_directory | 列出参考项目中的文件 | “列出 docs 参考项目中的文件” |
read_reference_file | 读取参考项目中的文件 | “显示 examples 项目中的 README” |
github_issue_view | 显示 GitHub issue 及其评论 | “显示 mcp-config 项目中的 issue 12” |
github_issue_list | 列出 GitHub issue,可选筛选条件 | “列出分配给我的未解决 issue” |
github_pr_view | 显示 GitHub 拉取请求及其评审和评论 | “显示拉取请求 42” |
github_search | 搜索一个仓库中的 issue 和拉取请求 | “查找提及参考缓存的 issue” |
github_label_list | 列出仓库中定义的标签 | “这个仓库使用了哪些标签?” |
github_issue_create | 创建 GitHub issue | “为导入检查失败创建一个 issue” |
github_issue_edit | 编辑 GitHub issue 的标题、正文或标签 | “修改 issue 12 的标题” |
github_subissue_add | 将一个 issue 关联为另一个 issue 的子 issue | “将 issue 43 设为 issue 42 的子 issue” |
github_subissue_list | 列出 issue 的子 issue | “issue 42 有哪些子 issue?” |
github_subissue_remove | 解除子 issue 与其父 issue 的关联 | “将 issue 43 从其父 issue 中移除” |
github_issue_comment | 向 GitHub issue 添加评论 | “在 issue 12 中评论复现步骤” |
github_pr_create | 创建 GitHub 拉取请求 | “为此分支创建一个 PR” |
search_reference_files | 搜索参考项目中的文件内容或查找文件 | “查找 docs 项目中配置日志记录的位置” |
git | 运行只读 Git 命令(log、diff、status、show、branch 等) | “显示最近五次提交” |
check_file_size | 报告行数超过阈值的文件 | “这个项目中有哪些文件过长?” |
工具详情
列出目录
- 返回文件和目录名称列表
- 会应用所列目录中的
.gitignore;不会读取其他.gitignore文件(包括列出子目录时项目根目录中的文件),也不会读取.git/info/exclude - 排除
.git文件夹
读取文件
- 参数:
file_path(字符串):要读取的文件路径(相对于项目目录)start_line(整数,可选):要返回的首行(从 1 开始,包含该行)。必须与end_line一起提供。end_line(整数,可选):要返回的末行(从 1 开始,包含该行)。必须与start_line一起提供。with_line_numbers(布尔值,可选):在每行前加上行号。指定行范围时默认为True;读取完整文件时默认为False。
- 以字符串形式返回文件内容
保存文件
- 参数:
file_path(字符串):要写入的文件路径content(字符串):要写入文件的内容
- 返回一个布尔值,表示操作是否成功
追加文件
- 参数:
file_path(字符串):要追加内容的文件路径content(字符串):要追加到文件的内容
- 返回一个布尔值,表示操作是否成功
- 注意:文件必须已存在;使用
save_file创建新文件
删除此文件
- 参数:
file_path(字符串):要删除的文件路径 - 返回一个布尔值,表示操作是否成功
- 注意:此操作不可逆,将永久删除该文件
删除目录
删除项目目录中的某个目录。
参数:
dir_path(字符串):要删除的目录路径(相对于项目目录)recursive(布尔值,可选):为True时删除整个目录树(默认值:False)
功能:
- 默认删除空目录(
recursive=False) recursive=True会删除整个目录树及其内容(通过shutil.rmtree)- 仅处理目录——删除文件请使用
delete_this_file - 幂等:删除不存在的目录会返回一条消息,而不是报错
- 拒绝删除项目根目录
- 对顶层路径应用
.gitignore规则;递归删除仍会移除单独被 Git 忽略的子项(例如嵌套的__pycache__/) - 返回已删除路径列表(最多显示 20 条,并附带一条摘要)
编辑文件
使用精确字符串匹配对文件进行精准编辑。此工具旨在确保可靠且可预测。
参数:
file_path(字符串):要编辑的文件(相对于项目目录)edits(数组):编辑操作列表,每项包含:old_text(字符串):要查找并替换的精确文本(必须完全匹配)new_text(字符串):替换文本
dry_run(布尔值,可选):预览更改但不应用(默认值:False)options(对象,可选):格式设置preserve_indentation(布尔值,默认值:False):将old_text的缩进应用到new_text
主要特性:
- 仅支持精确字符串匹配——
old_text必须完全匹配(区分大小写和空白字符) - 不进行模糊或部分匹配——最大限度确保可靠且可预测
- 替换首次出现项——每种
old_text模式仅替换首次匹配项 - 按顺序处理——编辑操作按顺序应用,每项编辑都会基于前面编辑的结果执行
- 检测已应用的编辑——自动检测编辑是否已应用(无操作优化)
- Git 风格的差异输出——以统一差异格式准确显示更改内容
- 清晰的错误报告——文本模式未找到时提供具体提示
示例:
# Basic text replacement
edit_file("config.py", [
{"old_text": "DEBUG = False", "new_text": "DEBUG = True"}
])
# Multiple edits in one operation
edit_file("app.py", [
{"old_text": "def old_function():", "new_text": "def new_function():"},
{"old_text": "old_function()", "new_text": "new_function()"}
])
# Preview changes without applying
edit_file("code.py", edits, dry_run=True)
# With indentation preservation
edit_file("indented.py", [
{"old_text": " old_code()", "new_text": "new_code()"}
], options={"preserve_indentation": True})
重要说明:
old_text中的文本必须完全匹配,包括空格、大小写和换行符- 多行替换时使用
\n表示换行 - 如果
old_text出现多次,仅替换首次出现项 - 可考虑使用
dry_run=True在应用更改前预览
移动文件
在项目目录中移动或重命名文件和目录。在适用情况下自动保留 Git 历史。
参数:
source_path(字符串):源文件/目录路径(相对于项目)destination_path(字符串):目标路径(相对于项目)
**返回值:**布尔值(成功时为 true)
功能:
- 如果父目录不存在,则自动创建
- 移动已跟踪的文件时保留 Git 历史(内部使用 git mv)
- 如果 Git 不可用,则回退到文件系统操作
- 支持文件和目录
- 为大模型提供简单明了的错误消息
示例:
# Rename a file
move_file("old_name.py", "new_name.py")
# Move a file to a different directory
move_file("src/temp.py", "archive/temp.py")
# Rename a directory
move_file("old_folder", "new_folder")
# Move with automatic parent directory creation
move_file("file.txt", "new_dir/sub_dir/file.txt") # Creates new_dir/sub_dir if needed
错误处理:
- 返回适用于 AI 助手的简化错误消息:
- "File not found" — 源文件不存在时
- "Destination already exists" — 目标路径已被占用时
- "Permission denied" — 访问受限时
- "Invalid path" — 存在安全违规时
- "Move operation failed" — 发生意外错误时
获取参考项目
供大模型发现可用参考项目的工具。
**参数:**无
**返回值:**包含以下内容的字典:
count:可用项目的数量projects:{"name": ..., "url": ...}对象列表。url是已配置的仓库 URL——url: null的项目仍可使用参考文件工具,但无法使用 GitHub 工具。usage:后续步骤说明
示例:
get_reference_projects()
# Returns: {
# "count": 3,
# "projects": [{"name": "docs", "url": "https://github.com/org/docs"}, ...],
# "usage": "Pass a name as reference_name to the reference file tools, git(), and the GitHub read tools; issues can also be created, edited and commented on"
# }
使用场景:
- 大模型发现有哪些参考项目可用
- 初步探索其他代码库
- 动态选择要浏览的参考项目
列出参考目录
列出参考项目中的文件和目录,并使用与主项目相同的 gitignore 筛选规则。
参数:
reference_name(字符串):参考项目名称
**返回值:**包含文件和目录名称的字符串列表
示例:
# List root directory of reference project (shows subdirectories)
list_reference_directory("docs")
# Then read files from subdirectories using read_reference_file
read_reference_file("examples", "src/components/Button.tsx")
功能:
- 自动应用 gitignore 筛选(与主项目相同)
- 排除 .git 目录
- 返回参考项目中的相对路径
- 验证参考项目是否存在
读取参考文件
读取参考项目中文件的内容。
参数:
reference_name(字符串):参考项目名称file_path(字符串):参考项目中的文件路径(相对于参考项目根目录)start_line(整数,可选):要返回的第一行(从 1 开始,包含该行)。必须与end_line一起提供。end_line(整数,可选):要返回的最后一行(从 1 开始,包含该行)。必须与start_line一起提供。with_line_numbers(布尔值,可选):为每行添加行号前缀。指定行范围时默认为True,读取全文时默认为False。
**返回值:**包含文件内容的字符串
示例:
# Read README from docs reference project
read_reference_file("docs", "README.md")
# Read source file from examples project
read_reference_file("examples", "src/app.py")
# Read specific lines with line numbers
read_reference_file("examples", "src/app.py", start_line=10, end_line=20)
# Read config file
read_reference_file("config", "settings/production.yml")
功能:
- 只读访问(无法修改)
- 使用与主项目文件相同的路径验证
- 支持任何基于文本的文件格式
- 以字符串形式返回原始文件内容
错误处理:
- "Reference project not found" —
reference_name不存在时 - "File not found" — 文件在参考项目中不存在时
- "Invalid path" — 存在安全违规或路径遍历尝试时
- "Permission denied" — 访问受限时
跨仓库 GitHub 访问
不带可选参数 reference_name 的 GitHub 工具会操作工作区仓库;带该参数时,则会操作指定的参考项目。可读取其中的问题、拉取请求、搜索结果和标签;也可以创建、编辑问题并发表评论。
功能:
- 根据参考项目配置的 URL 确定仓库——不会执行克隆,因此仅配置 URL 的参考项目也可使用
- 仅接受
get_reference_projects()返回的名称;不接受任意owner/repo字符串 - 任何不带
reference_name参数的 GitHub 工具都以工作区仓库为目标 - 两个仓库中的工作流
status-*标签都会被拒绝;mcp-coder gh-tool set-status操作当前检出,因此只有在某个同级仓库自己的检出中,才能通过该仓库的状态工作流推进其问题
**错误处理:**错误以 "Error: ..." 字符串返回,而非抛出:
"Error: Reference project '<name>' not found"- 名称不是参考项目时"Error: Reference project '<name>' has no URL configured"- 参考项目未配置仓库 URL 时
检查文件大小
报告行数超过阈值的文件。
参数:
max_lines(整数,可选):行数阈值。默认使用服务的--file-size-limit标志值;若未设置,则使用600
功能:
- 统计项目目录下所有 UTF-8 文件的行数——包括所有文件类型,无论是否受版本控制——但排除
.git/和被项目根目录.gitignore匹配的文件。不读取嵌套的.gitignore文件 .large-files-allowlist中列出的文件(每行一个路径,可使用#注释)不受限制;条目按精确路径匹配,不支持通配符- 当文件不再超过阈值时,或文件缺失、为二进制文件/非 UTF-8 文件,或被
.gitignore匹配时,白名单条目会被报告为过期——例如,重命名或条目拼写错误后就可能出现这种情况 - 违规列表和过期条目列表各自最多显示 50 项,并附带
showing X of Y提示;上限为内部设置,没有参数可以提高上限
安全功能
- 对所有路径进行规范化和验证,确保其始终位于项目目录内
- 参考项目使用相同的路径验证和安全措施
- 防止针对主项目和参考项目的路径遍历攻击
- 以原子方式写入文件,防止数据损坏
- 为确保安全,删除操作仅限于项目目录
- 严格以只读方式访问参考项目的文件,防止意外修改
MCP 配置管理工具
为方便配置和安装此 MCP 服务,你可以使用 mcp-config 开发工具。此 CLI 工具可简化在多个客户端(Claude Desktop、VS Code 等)之间管理 MCP 服务配置的过程。
安装
# Install mcp-config
pip install git+https://github.com/MarcusJellinghaus/mcp-config.git
快速设置
# Setup for Claude Desktop with automatic configuration
mcp-config setup mcp-workspace "Filesystem Server" --project-dir /path/to/your/project
# Setup with reference projects
mcp-config setup mcp-workspace "Filesystem Server" \
--project-dir /path/to/your/project \
--reference-project docs=/path/to/documentation \
--reference-project examples=/path/to/examples
# Setup with custom log configuration
mcp-config setup mcp-workspace "Filesystem Server" \
--project-dir /path/to/your/project \
--reference-project utils=/shared/utilities \
--log-level DEBUG \
--log-file /custom/path/server.log
了解更多:GitHub 上的 mcp-config
此工具会自动处理路径解析、环境检测和客户端专属配置格式,从而免去手动配置步骤并减少设置错误。
许可证
本项目采用 MIT License 授权,详情请参阅 LICENSE 文件。
MIT License 是一种限制较少的宽松许可证。在注明出处的前提下,它允许使用、复制、修改和分发。
链接
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。