fzf MCP服务器
](https://www.npmjs.com/package/@danielsimonjr/fzf-mcp)  
模型上下文协议(MCP)服务器 电液动方型闸阀,命令行模糊查找器。通过MCP启用模糊文件搜索、列表过滤和内容搜索。
特性
n🎁 独立:fzf二进制文件在安装过程中自动下载并捆绑- 无需手动设置!
- 模糊文件搜索:使用fzf的模糊匹配递归搜索文件
- 列表筛选:使用模糊匹配筛选任何项目列表
- 内容搜索:使用模糊匹配在文件内容中搜索
- 快速高效:利用fzf的超快模糊查找器
- 自动安装:fzf二进制文件自动下载
npm install - 交叉平台的:适用于Windows、macOS和Linux
先决条件
没有! fzf二进制文件在 npm install该包装是完全独立的。
安装
使用NPX(推荐)
无需安装:
npx @danielsimonjr/fzf-mcp全球安装
npm install -g @danielsimonjr/fzf-mcp来源
git clone https://github.com/danielsimonjr/fzf-mcp.git
cd fzf-mcp
npm install
chmod +x index.js配置
克劳德桌面
添加到您的 claude_desktop_config.json:
使用NPX
{
"mcpServers": {
"fzf": {
"command": "npx",
"args": ["-y", "@danielsimonjr/fzf-mcp"]
}
}
}使用全局安装
{
"mcpServers": {
"fzf": {
"command": "fzf-mcp"
}
}
}自定义fzf路径
如果fzf不在您的PATH中,请设置 FZF_PATH 环境变量:
{
"mcpServers": {
"fzf": {
"command": "npx",
"args": ["-y", "@danielsimonjr/fzf-mcp"],
"env": {
"FZF_PATH": "C:\\path\\to\\fzf.exe"
}
}
}
}VS Code
增添 .vscode/mcp.json:
{
"servers": {
"fzf": {
"command": "npx",
"args": ["-y", "@danielsimonjr/fzf-mcp"]
}
}
}可用工具
1. fuzzy_search_files
使用fzf的模糊匹配搜索文件。
参数:
query(必填):模糊搜索查询(例如,“readme”、“index.js”)directory(可选):起始目录(默认:当前目录)maxResults(可选):最大结果数(默认值:50)caseSensitive(可选):启用区分大小写的匹配(默认值:false)exact(可选):启用精确匹配而不是模糊匹配(默认值:false)
例子:
{
"query": "readme",
"directory": "C:\\projects",
"maxResults": 10
}2. fuzzy_filter
使用fzf的模糊匹配算法过滤项目列表。
参数:
items(必需):要筛选的字符串数组query(必填):模糊搜索查询maxResults(可选):最大结果数(默认值:50)caseSensitive(可选):启用区分大小写的匹配(默认值:false)exact(可选):启用精确匹配(默认值:false)
例子:
{
"items": ["apple", "banana", "orange", "grape", "pineapple"],
"query": "app",
"maxResults": 5
}3. fuzzy_search_content
使用模糊匹配在文件内容中搜索。
参数:
query(必填):内容搜索查询directory(可选):要搜索的目录(默认:当前目录)filePattern(可选):要搜索的文件模式(默认值:“\*”)maxResults(可选):最大结果数(默认值:50)caseSensitive(可选):启用区分大小写的匹配(默认值:false)
例子:
{
"query": "function",
"directory": "C:\\projects\\myapp",
"filePattern": "*.js",
"maxResults": 20
}用法示例
示例1:查找配置文件
告诉克劳德:
Use fzf to search for all configuration files (config, .env, settings) in my project directory.克劳德将使用 fuzzy_search_files 查找匹配文件的工具。
示例2:筛选选项列表
告诉克劳德:
I have this list of packages: [express, react, vue, angular, svelte, next, nuxt, remix]
Use fzf to filter for packages containing "re"克劳德将使用 fuzzy_filter 返回工具: express, react, svelte
示例3:搜索代码
告诉克劳德:
Search for all occurrences of "async function" in my TypeScript files.克劳德将使用 fuzzy_search_content 查找匹配项的工具。
运作原理
fzf mcp使用fzf --filter 提供非交互式模糊匹配的模式:
- 文件搜索:从目录生成文件列表并将其传输到fzf
- 列表筛选器:将提供的列表通过管道传输到fzf进行过滤
- 内容搜索:使用grep/findstr查找内容,然后使用fzf进行过滤
所有匹配都是在服务器端完成的,只将过滤后的结果返回给Claude。
模糊匹配算法
fzf使用复杂的模糊匹配算法,该算法:
- 按顺序匹配字符,但不一定是连续的
- 根据角色位置进行匹配得分
- 优先考虑单词边界处的匹配
- 支持与
exact选项
示例:
- 查询
"abc"比赛:"abc","a_b_c","aXbXc","AnyBigCat" - 查询
"^music"匹配以“音乐”开头的文件 - 查询
"mp3$"匹配以“mp3”结尾的文件
故障排除
未找到fzf
错误: Failed to execute fzf: spawn fzf ENOENT
解决方案:
- 确保安装了fzf:
fzf --version - 将fzf添加到PATH中,或设置
FZF_PATHMCP配置中的环境变量
未找到结果
原因:
- 查询与任何项目都不匹配
- 目录不存在或为空
- 权限不足,无法读取目录
解决:
- 尝试一个不太具体的查询
- 验证目录路径
- 检查文件权限
Windows特定问题
问题: 文件列表命令失败
解决方案: 服务器尝试执行多个命令(dir, find, ls)并使用第一个成功的。确保PATH中至少有一个可用。
发展
# Clone repository
git clone https://github.com/danielsimonjr/fzf-mcp.git
cd fzf-mcp
# Install dependencies
npm install
# Make executable
chmod +x index.js
# Test locally
node index.js贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建要素分支
- 进行更改
- 彻底测试
- 提交拉取请求
许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
致谢
链接
- NPM包: https://www.npmjs.com/package/@丹尼尔西蒙/fzf mcp
- GitHub存储库: https://github.com/danielsimonjr/fzf-mcp
- fzf项目: https://github.com/junegunn/fzf
- MCP文件: https://modelcontextprotocol.io
______________________________________________________________________
由以下材料制成❤️ 对于MCP社区
