使用说明
带文件搜索工具的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或纱线
安装
-
克隆并导航到项目:
cd chatbot-mcp -
安装依赖项:
npm install -
设置环境变量:
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-由使用的外部聊天服务的URLquestionTool
发展
添加新工具
- 在中创建新的工具文件
src/tools/ - 扩展
BaseTool类 - 使用Zod定义输入模式
- 实施
execute方法 - 在中注册该工具
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模块 - 丢失文件的错误处理
- 字符串操作和搜索算法
- 区分大小写和不区分大小写的搜索选项
- 带行号的格式化输出
测试文件搜索工具
-
创建测试文件 (
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. -
运行MCP检查器:
npx @modelcontextprotocol/inspector dist/index.js -
使用样本输入进行测试:
- 文件路径:
sample.txt或文件的完整路径 - 关键字:
MCP - 案例敏感:
false
- 文件路径:
-
验证输出 显示所有具有行号的匹配行
MCP协议
该服务器实现了模型上下文协议,允许AI模型:
- 发现可用工具
- 具有结构化输入的调用工具
- 接收结构化输出
- 优雅地处理错误
服务器可以配置为使用 stdio 或 http 传输,使其对不同的MCP客户端实现具有灵活性。
故障排除
常见问题
- 端口已在使用中:更改
PORT变量在你的.env文件 - TypeScript编译错误:运行
npm run lint查看详细错误 - 文件未找到:使用绝对路径或确保相对路径正确
- MCP连接问题:确保服务器正在运行并且传输模式正确
日志
服务器提供详细的调试日志记录:
- MCP服务器初始化
- 工具执行和结果
- 文件 操作
- 带有堆栈跟踪的错误详细信息
用例
文件搜索工具应用程序
- 代码审查:在源代码中搜索特定模式或关键字
- 日志分析:在日志文件中查找错误消息或特定事件
- 文档:在文本文档中查找特定信息
- 配置:在配置文件中搜索设置
- 数据处理:在CSV或文本数据文件中查找特定条目
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 运行测试和梳理
- 提交拉取请求
资源
作者主题:Parthik Diyora
日期:2025年11月2日