Token导航 LogoToken导航

MCP Server · AI代理

Rag MCP From Scratch

一个基于TypeScript的AI代理系统,集成了检索增强生成(RAG)和模型上下文协议(MCP)工具调用功能,结合向量检索与外部工具执行复杂任务。

未说明官方级别未说明来源级核验工具 2
AI代理检索增强生成TypeScriptAPI密钥

快速开始

公开资料没有提供安装命令,按仓库或官方文档接入。
作者 / 组织
Zeglow
提供方
Zeglow

工具数量

2

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

0

仓库热度

收录来源

1 个

MCP World

选型结论

Rag MCP From Scratch 属于AI代理类 MCP Server,公开资料标注 2 个工具,通过传输方式未标注接入,客户端适配情况以官方文档为准,没有现成的安装命令;接入前要先准备 API Key。

分类

AI代理

传输方式

未说明

认证方式

API Key

部署方式

公开资料未说明

安装与配置

公开目录没有给出安装命令,需要按仓库 README安装;下面按同类条目的通用流程说明。

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    先确认运行方式

    公开资料没有标注传输方式,先看仓库 README,确认是本地进程还是远程地址。

  2. 2

    获取服务

    公开目录没有给出安装命令,按仓库 README里的步骤安装或获取服务。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 2 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

公开资料仍需确认:安装命令

详细介绍

使用RAG和MCP工具的AI代理

一个基于TypeScript的AI代理系统,集成了检索增强生成(RAG)和模型上下文协议(MCP)工具调用功能。该系统将矢量检索与外部工具相结合,以执行复杂的任务。

增强LLM

该项目基于以下内容实现了增强的LLM架构 构建高效代理 原则。

classDiagram
    class Agent {
        +init()
        +close()
        +invoke(prompt: string)
        -mcpClients: MCPClient[]
        -llm: ChatOpenAI
        -model: string
        -systemPrompt: string
        -context: string
    }
    class ChatOpenAI {
        +chat(prompt?: string)
        +appendToolResult(toolCallId: string, toolOutput: string)
        -llm: OpenAI
        -model: string
        -messages: OpenAI.Chat.ChatCompletionMessageParam[]
        -tools: Tool[]
    }
    class EmbeddingRetriever {
        +embedDocument(document: string)
        +embedQuery(query: string)
        +retrieve(query: string, topK: number)
        -embeddingModel: string
        -vectorStore: VectorStore
    }
    class MCPClient {
        +init()
        +close()
        +getTools()
        +callTool(name: string, params: Record)
        -mcp: Client
        -command: string
        -args: string[]
        -transport: StdioClientTransport
        -tools: Tool[]
    }
    class VectorStore {
        +addEmbedding(embedding: number[], document: string)
        +search(queryEmbedding: number[], topK: number)
        -vectorStore: VectorStoreItem[]
    }
    class VectorStoreItem {
        -embedding: number[]
        -document: string
    }

    Agent --> MCPClient : uses
    Agent --> ChatOpenAI : interacts with
    ChatOpenAI --> ToolCall : manages
    EmbeddingRetriever --> VectorStore : uses
    VectorStore --> VectorStoreItem : contains

🚀 特性

  • 🤖 智能体:基于OpenAI的会话式AI代理,具有工具调用和流式响应功能
  • 📚 RAG检索:基于向量嵌入的文档检索与语义相似性搜索
  • 🔧 MCP工具集成:通过模型上下文协议集成多个工具(文件系统、HTTP请求等)
  • 💬 流媒体对话:实时流式响应输出
  • 🔍 自动工具调用:代理自动确定何时调用工具,并处理多轮工具调用循环

📁 项目结构

├── src/
│   ├── Agent.ts              # Core Agent class, coordinates LLM and tool calls
│   ├── ChatOpenAI.ts         # OpenAI API wrapper with streaming and tool calling
│   ├── MCPClient.ts          # MCP client for connecting to MCP servers
│   ├── EmbeddingRetrievers.ts # Embedding retriever, handles document embedding and retrieval
│   ├── VectorStore.ts        # Vector store with cosine similarity search
│   ├── utils.ts              # Utility functions (logging, etc.)
│   └── index.ts              # Main entry file
├── images/                   # Images directory for documentation
├── knowledge/                # Knowledge base documents directory
├── output/                   # Output files directory
├── package.json
├── tsconfig.json
└── README.md

🏗️ 建筑

核心组件

  1. 代理 (Agent.ts)

- 协调LLM和多个MCP客户端 - 处理工具调用循环逻辑 - 支持上下文注入和系统提示

  1. ChatOpenAI (ChatOpenAI.ts)

- 包装OpenAI聊天完成API - 支持流式响应输出 - 处理工具调用和工具结果附加

  1. MCP客户端 (MCPClient.ts)

- 连接到MCP服务器(例如,文件系统、fetch) - 动态获取可用工具列表 - 执行工具调用并返回结果

  1. 嵌入检索器 (EmbeddingRetrievers.ts)

- 将文档转换为向量嵌入 - 根据查询检索最相关的文档 - 支持自定义嵌入模型

  1. 向量存储 (VectorStore.ts)

- 内存向量存储 - 基于余弦相似度的文档搜索

🛠️ 技术栈

  • 语言:TypeScript(ESM)
  • 运行时:Node.js
  • LLM:OpenAI API(支持自定义基础URL)
  • 嵌入模型BAAI/bge-m3(通过API)
  • 主控程序:模型上下文协议SDK
  • 公用事业:Chalk(日志格式化)、dotenv(环境变量)

📦 安装

# Install dependencies using pnpm
pnpm install

⚙️ 配置

创建一个 .env 项目根目录中的文件:

OPENAI_API_KEY=your_openai_api_key
OPENAI_BASE_URL=https://api.openai.com/v1  # Optional, defaults to OpenAI official API
EMBEDDING_BASE_URL=https://your-embedding-api.com  # Embedding model API address
EMBEDDING_KEY=your_embedding_api_key  # Embedding model API Key

💡 例子

基本代理使用

import Agent from "./Agent.js";
import MCPClient from "./MCPClient.js";

// Initialize MCP clients
const fetchMCP = new MCPClient('fetch', 'uvx', ['mcp-server-fetch']);
const fileMCP = new MCPClient('file', 'npx', [
    "-y", 
    "@modelcontextprotocol/server-filesystem", 
    process.cwd()
]);

// Create and initialize Agent
const agent = new Agent('gpt-4o-mini-2024-07-18', [fetchMCP, fileMCP]);
await agent.init();

// Execute task
await agent.invoke('Fetch content from https://example.com and save to file');

// Close connections
await agent.close();

RAG代理

import EmbeddingRetriever from "./EmbeddingRetrievers.js";
import Agent from "./Agent.js";
import MCPClient from "./MCPClient.js";
import path from "path";
import fs from "fs";

// Initialize MCP clients
const fetchMCP = new MCPClient('fetch', 'uvx', ['mcp-server-fetch']);
const fileMCP = new MCPClient('file', 'npx', [
    "-y", 
    "@modelcontextprotocol/server-filesystem", 
    process.cwd()
]);

// 1. Retrieve relevant context
const embeddingRetriever = new EmbeddingRetriever("BAAI/bge-m3");
const knowledgeDir = path.join(process.cwd(), 'knowledge');

// Embed knowledge base documents
for (const file of fs.readdirSync(knowledgeDir)) {
    const content = fs.readFileSync(path.join(knowledgeDir, file), 'utf-8');
    await embeddingRetriever.embedDocument(content);
}

// Retrieve most relevant documents
const context = (await embeddingRetriever.retrieve('query content', 3)).join('\n');

// 2. Create Agent with context
const agent = new Agent(
    'gpt-4o-mini-2024-07-18', 
    [fetchMCP, fileMCP], 
    '',  // System prompt
    context  // Inject context
);
await agent.init();
await agent.invoke('Answer questions based on the context');
await agent.close();

📝 运作原理

RAG工作流程

  1. 文档嵌入:从以下位置读取文档 knowledge/ 使用嵌入模型将目录转换为向量
  2. 查询检索:根据用户查询检索最相关的文档片段(默认前3个)
  3. 上下文注入:将检索到的文档作为上下文注入LLM对话中

代理工具调用流程

  1. 代理接收用户查询
  2. LLM确定是否需要调用工具
  3. 如果需要工具调用,请执行相应的工具(例如,文件读/写、HTTP请求)
  4. 将工具结果返回给LLM
  5. LLM继续处理,可能需要多次调用工具
  6. 循环将继续,直到LLM返回最终答案,不再调用工具

🔧 可用工具

通过MCP集成的工具:

  • 文件系统工具 (@modelcontextprotocol/server-filesystem):文件读/写操作
  • 提取工具 (mcp-server-fetch):HTTP请求功能

您可以添加更多MCP服务器以扩展工具功能。

工具与能力

工具数量

2

资源数量

0

提示词数量

0

能力标签

AI代理TypeScript本地部署检索增强生成工具调用向量检索模型上下文协议

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

多步任务编排

把拆解、检索、执行串成一条链,模型按步骤调用工具。

长期上下文

把会话、笔记和知识放到外部存储,换个会话还能接着做。

接自有流程

把内部系统和模型连起来,让助手调用已有的工作流。

选择建议

值得选的地方

  • 只提供 2 个工具,职责集中,接入后不容易误操作。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • 公开资料没有可直接复制的安装命令,第一次接入要自己找入口。
  • 需要自备API Key,没有凭据没法直接试。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在AI代理场景里让模型直接调用外部能力的人。
  • 愿意照着官方文档一步步配环境的人。

不太适合

  • 暂时拿不到API Key的人。
  • 希望一条命令就装好、不想看文档的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Rag MCP From Scratch

MCP World · 本页

2未说明未标注1 个2026-05-17
Everything Claude Code

MCP World

0stdio有1 个2026-05-17
Filesystem 560c4363

MCP World

13未说明未标注2 个2026-05-17
Time 7365cb6d

MCP.so

2SSE有2 个2026-05-17
Server Everything (everything)

MCP World

11stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Rag MCP From Scratch 怎么安装?

公开目录没有给出可以直接复制的安装命令,需要按仓库 README里的步骤安装;装好后写进客户端的 MCP 配置再重启。

Rag MCP From Scratch 怎么在 Claude Desktop、Cursor 里配置?

它是传输方式未标注,客户端配置里要写启动命令和参数,运行环境是 未标注;保存后完全退出客户端再打开,配置才会生效。

Rag MCP From Scratch 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Rag MCP From Scratch 需要 API Key 吗?

公开资料标注的认证方式是API Key,也就是要先拿到凭据才能连上;凭据只填在自己本地的配置里,不要写进公开仓库。

Rag MCP From Scratch 支持哪些客户端?

公开资料没有标注具体客户端;能配置本地 MCP 命令的客户端都能接,配置方式参照官方文档。

来源信息

继续浏览同类 MCP