文件搜索工具

一个基于Node.js和TypeScript的MCP服务器实现,提供强大的文件搜索功能,适用于AI模型与外部系统的交互。

  • by DIYORAP
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 DIYORAP/mcp-server

使用说明

带文件搜索工具的MCP服务器

使用TypeScript在Node.js中实现的模型上下文协议(MCP)服务器。该服务器为AI模型提供了与外部系统交互的工具,包括强大的文件搜索功能。

特性

  • 🚀 MCP服务器:实现AI模型集成的模型上下文协议
  • 🔍 文件搜索工具:在具有行号结果的文本文件中搜索关键字
  • 🔧 问题工具:向聊天机器人服务提出自由问题的工具
  • 🛠️ BaseTool抽象:使用基于Zod的模式验证创建新工具的简单抽象
  • 🌐 HTTP和STDIO传输:支持MCP服务器的HTTP和STDIO传输模式
  • 📝 TypeScript:完全支持TypeScript,具有严格的类型检查
  • 🎯 ESLint+Pretier:代码质量和格式化工具
  • 📦 现代Node.js:ES2020+功能和现代JavaScript

先决条件

  • Node.js 18+
  • npm或纱线

安装

  1. 克隆并导航到项目:

    cd chatbot-mcp
    
  2. 安装依赖项:

    npm install
    
  3. 设置环境变量:

    cp env.example .env
    # Edit .env with your configuration
    

用法

发展模式

使用热重新加载运行服务器:

npm run dev

生产构建

构建TypeScript代码:

npm run build

运行编译后的JavaScript:

npm start

MCP检验员测试

使用MCP检查器测试您的工具:

npx @modelcontextprotocol/inspector dist/index.js

代码质量

读取代码:

npm run lint

修复掉毛问题:

npm run lint:fix

格式代码:

npm run format

项目结构

chatbot-mcp/
├── src/
│   ├── index.ts              # Main entry point
│   ├── server.ts             # MCP server setup
│   ├── tools/
│   │   ├── FileSearchTool.ts # File search tool implementation
│   │
│   └── utils/
│       ├── BaseTool.ts       # Base class for creating tools
│       └── toolRegistry.ts   # Utility to register all tools
├── sample.txt                # Sample file for testing file search
├── package.json              # Dependencies and scripts
├── tsconfig.json             # TypeScript configuration
├── .env.example              # Environment variables template
└── README.md                 # This file

MCP工具

1.search_file(文件搜索工具)

在文件中搜索指定的关键字,并返回具有行号的匹配行。

输入架构:

{
  filepath: string,           // Path to the file to search
  keyword: string,            // Keyword to search for
  caseSensitive?: boolean     // Whether search is case-sensitive (default: false)
}

示例用法:

{
  "filepath": "sample.txt",
  "keyword": "MCP",
  "caseSensitive": false
}

输出示例:

Found 4 match(es) for keyword "MCP" in file: sample.txt

Line 1: Welcome to the MCP Server Documentation
Line 3: The Model Context Protocol enables seamless integration...
Line 5: MCP servers provide powerful capabilities...
Line 10: MCP makes it easy to build tool-enhanced AI applications.

特征:

  • 默认情况下不区分大小写搜索
  • 返回具有匹配内容的行号
  • 优雅地处理文件未找到错误
  • 支持绝对和相对文件路径

HTTP端点

  • POST /mcp -处于HTTP模式时MCP请求的主要端点
  • GET / -指示服务器正在运行的简单消息

配置

环境变量(设置于 .env 文件):

  • PORT -MCP服务器监听的端口(默认值: 5001)
  • TRANSPORT_MODE -服务器的传输模式,或者 http 或 stdio (默认值: http)
  • CHAT_SERVER_URL -由使用的外部聊天服务的URL questionTool

发展

添加新工具

  1. 在中创建新的工具文件 src/tools/
  2. 扩展 BaseTool 类
  3. 使用Zod定义输入模式
  4. 实施 execute 方法
  5. 在中注册该工具 src/utils/toolRegistry.ts

工具结构示例

// src/tools/myNewTool.ts
import { BaseTool } from '../utils/BaseTool';
import { z } from 'zod';

export class MyNewTool extends BaseTool {
  constructor() {
    super({
      name: 'my_new_tool',
      title: 'My New Tool',
      description: 'A description for the new tool',
      inputSchema: {
        parameter1: z.string().describe('Description for parameter 1'),
        parameter2: z.number().optional().describe('Optional parameter')
      }
    });
  }

  async execute(input: any): Promise<any> {
    const { parameter1, parameter2 } = input;
    // Your tool's logic here
    return { success: true, result: `Received ${parameter1}` };
  }
}

文件搜索工具实现

文件搜索工具演示了:

  • 使用Node.js的文件系统操作 fs 模块
  • 丢失文件的错误处理
  • 字符串操作和搜索算法
  • 区分大小写和不区分大小写的搜索选项
  • 带行号的格式化输出

测试文件搜索工具

  1. 创建测试文件 (sample.txt):

    Welcome to the MCP Server Documentation
    This is a sample file for testing.
    The Model Context Protocol enables seamless integration.
    You can search for any keyword in this file.
    MCP servers provide powerful capabilities.
    
  2. 运行MCP检查器:

    npx @modelcontextprotocol/inspector dist/index.js
    
  3. 使用样本输入进行测试:

    • 文件路径: sample.txt 或文件的完整路径
    • 关键字: MCP
    • 案例敏感: false
  4. 验证输出 显示所有具有行号的匹配行

MCP协议

该服务器实现了模型上下文协议,允许AI模型:

  • 发现可用工具
  • 具有结构化输入的调用工具
  • 接收结构化输出
  • 优雅地处理错误

服务器可以配置为使用 stdio 或 http 传输,使其对不同的MCP客户端实现具有灵活性。

故障排除

常见问题

  1. 端口已在使用中:更改 PORT 变量在你的 .env 文件
  2. TypeScript编译错误:运行 npm run lint 查看详细错误
  3. 文件未找到:使用绝对路径或确保相对路径正确
  4. MCP连接问题:确保服务器正在运行并且传输模式正确

日志

服务器提供详细的调试日志记录:

  • MCP服务器初始化
  • 工具执行和结果
  • 文件 操作
  • 带有堆栈跟踪的错误详细信息

用例

文件搜索工具应用程序

  • 代码审查:在源代码中搜索特定模式或关键字
  • 日志分析:在日志文件中查找错误消息或特定事件
  • 文档:在文本文档中查找特定信息
  • 配置:在配置文件中搜索设置
  • 数据处理:在CSV或文本数据文件中查找特定条目

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 运行测试和梳理
  5. 提交拉取请求

资源

作者主题:Parthik Diyora
日期:2025年11月2日