MCP服务器
使用Node.js和TypeScript的模型上下文协议(MCP)服务器实现。
什么是MCP?
模型上下文协议(MCP)是一个开放协议,它规范了应用程序如何向LLM(大型语言模型)提供上下文。它允许AI应用程序和各种数据源和工具之间进行无缝通信。
特性
此服务器实现提供:
- 用于检索相关信息的跨文档搜索工具
- 使用文档列表和元数据资源进行文档管理
- 文件问答提示模板,用于回答有关文件的问题
- 支持stdio和SSE传输方法
- 综合测井系统
- 通过环境变量进行配置
- 准备管理,以确保在接受请求之前初始化所有服务
- 服务器终止时的优雅关机处理
系统架构
入门指南
先决条件
- Node.js 22+和npm
安装
- 克隆存储库
- 安装依赖项:
npm install- 构建项目:
npm run build运行服务器
使用stdio(用于与MCP客户端集成)
npm start使用SSE(用于基于网络的使用)
npm start -- --transport=sse默认情况下,服务器将在端口3000上启动。您可以通过设置 PORT 环境变量或使用port参数:
npm start -- --transport=sse --port=8080或者:
PORT=8080 npm start -- --transport=sseAPI
工具
getDocumentsMetadata:检索可用文档的元数据
- 参数: - query (string):用户的原始查询或问题
checkQueryRelevance:评估相关文件并返回意图分析说明
- 参数: - query (string):用户的原始查询或问题 - relevantDocIds (string):以逗号分隔的与查询相关的文档ID列表
analyzeIntent:进行意图分类并返回上下文检索指令
- 参数: - query (string):用户的原始查询或问题 - intentType (string):查询的分类意图类型
retrieveContext:从所选文档中检索相关段落
- 参数: - query (string):用户的原始查询或问题 - intentType (string):查询的分类意图类型 - relevantDocIds (string):以逗号分隔的文档ID列表,用于从中检索上下文
资源
documents://metadata:返回所有文档元数据的列表documents://metadata/{id}:按ID返回特定文档的元数据
提示
document_qa:关于文档内容的问答
- 参数: - question (string):用户对文档的疑问 - relevantDocIds (string):以逗号分隔的相关文档ID列表(来自存档) - intentType (string):问题的意图(从下拉列表中选择)
配置
服务器可以通过环境变量进行配置:
SERVER_NAME:服务器名称(默认:“文档存档mcp服务器”)SERVER_VERSION:服务器版本(默认:“1.0.0”)ENABLE_RESOURCES:启用/禁用资源(默认值:true)ENABLE_TOOLS:启用/禁用工具(默认值:true)ENABLE_PROMPTS:启用/禁用提示(默认值:true)PORT:SSE传输的默认端口(默认值:3000)TRANSPORT_TYPE:默认传输类型(默认值:“stdio”)LOG_LEVEL:日志级别(默认值:“info”)LOG_DIR:日志文件目录(默认:“logs”)LOG_FILE:主日志文件名(默认:“combined.log”)ERROR_LOG_FILE:错误日志文件名(默认:“Error.log”)ENABLE_FILE_LOGGING:启用文件日志记录(默认值:生产中为true,开发中为false)DOCUMENT_DIRECTORIES:以逗号分隔的文档监视目录列表DOCUMENT_CHUNK_SIZE:要处理的文档块大小(默认值:1000)DOCUMENT_CHUNK_OVERLAP:文档块的重叠大小(默认值:200)EMBEDDING_MODEL:要使用的嵌入模型(默认值:“句子转换器/all-MiniLM-L6-v2”)LANCEDB_PATH:LanceDB数据库的路径(默认值:'./vectordb')
发展
要在开发模式下运行服务器并自动重新加载,请执行以下操作:
npm run dev对于处于发展模式的SSE运输:
npm run dev -- --transport=sse许可证
麻省理工学院
