项目简介
该项目是LangChain.js学习资源的一部分,其中包含了一个完整的智能检索MCP服务端实现。这个服务端能够托管和管理一个内存中的文档知识库,并通过Model Context Protocol (MCP) 标准协议,向外部LLM(大型语言模型)客户端暴露文档搜索和添加工具。它旨在演示如何构建一个可供AI代理调用的、功能独立的上下文服务。
主要功能点
- 托管和管理文档资源:在内存中维护一个文档知识库,支持动态添加新文档。
- 提供数据访问能力:LLM客户端可以通过标准化的MCP工具调用,对知识库进行语义搜索,获取相关文档内容。
- 注册和执行工具:向MCP客户端声明并提供 'searchDocuments' (搜索文档)和 'addDocument' (添加文档)两个核心工具。
- 遵循JSON-RPC协议:与MCP客户端通过JSON-RPC协议进行通信,确保交互的标准性和互操作性。
- 支持Stdio传输协议:默认通过标准输入/输出(Stdio)进行通信,方便作为子进程由MCP客户端启动和管理。
安装步骤
- 克隆仓库:
git clone https://github.com/DanWahlin/LangChainJS-for-Beginners.git cd LangChainJS-for-Beginners - 安装依赖:
npm install - 配置环境变量:
在项目根目录创建 '.env' 文件,并根据你的AI服务提供商(如GitHub Models或Azure AI Foundry)填写以下信息:
注意:'AI_MODEL' 和 'AI_EMBEDDING_MODEL' 的具体值需根据你的AI服务提供商实际支持的模型而定。AI_API_KEY="你的AI服务API密钥" AI_ENDPOINT="你的AI服务API地址" # 例如:https://api.github.com/copilot_model_inference/v1/deployments AI_MODEL="你的AI模型名称" # 例如:gpt-5-mini AI_EMBEDDING_MODEL="你的嵌入模型名称" # 例如:text-embedding-3-small
服务器配置(供MCP客户端使用)
MCP服务器通常由MCP客户端以子进程形式启动和管理。以下是MCP客户端连接此RAG服务所需的配置信息(JSON格式的配置示例,你需要在客户端配置中填写):
{ "serverName": "智能检索服务", "command": "npx", "args": [ "tsx", "07-agentic-rag-systems/samples/mcp-rag-server/mcp-rag-server.ts" ], "description": "提供知识库文档的检索和管理功能" }
配置说明:
- 'serverName': 服务器的名称,用于客户端标识。
- 'command': 启动MCP服务器进程的命令。在此项目中,是使用'npx'运行TypeScript脚本。
- 'args': 传递给'command'的参数,指定要运行的服务器脚本路径。
基本使用方法
MCP服务器的设计理念是作为后端服务由客户端调用。通常,你不需要手动启动它,而是由配置好的MCP客户端自动启动。
- 作为客户端的后端服务: 假设你有一个兼容MCP协议的LLM客户端(例如,另一个基于'@modelcontextprotocol/sdk/client'的项目或框架),你只需将上述“服务器配置”添加到客户端的配置文件中。当客户端需要调用检索功能时,它会自动启动此RAG服务端。
- (可选)手动启动服务器(仅用于测试或调试):
在项目根目录,打开一个终端并运行:
服务器会显示“MCP Server initialized and ready for connections”信息,等待客户端连接。npx tsx 07-agentic-rag-systems/samples/mcp-rag-server/mcp-rag-server.ts
启动后,LLM客户端即可通过JSON-RPC调用该服务器暴露的工具:
- 'searchDocuments':根据语义相似度在知识库中检索文档。
- 'addDocument':向知识库中添加新的文档内容。
信息
分类
AI与计算