模型上下文协议服务器

一个基于Node.js和TypeScript的模型上下文协议(MCP)服务器实现,用于标准化应用程序向大型语言模型(LLM)提供上下文的方式,支持跨文档搜索、文档管理和文档问答等功能。

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

使用说明

MCP服务器

使用Node.js和TypeScript的模型上下文协议(MCP)服务器实现。

什么是MCP?

模型上下文协议(MCP)是一个开放协议,它规范了应用程序如何向LLM(大型语言模型)提供上下文。它允许AI应用程序和各种数据源和工具之间进行无缝通信。

特性

此服务器实现提供:

  • 用于检索相关信息的跨文档搜索工具
  • 使用文档列表和元数据资源进行文档管理
  • 文件问答提示模板,用于回答有关文件的问题
  • 支持stdio和SSE传输方法
  • 综合测井系统
  • 通过环境变量进行配置
  • 准备管理,以确保在接受请求之前初始化所有服务
  • 服务器终止时的优雅关机处理

系统架构

入门指南

先决条件

  • Node.js 22+和npm

安装

  1. 克隆存储库
  2. 安装依赖项:
npm install
  1. 构建项目:
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=sse

API

工具

  • 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

许可证

麻省理工学院