原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。评价和账户功能将在后续阶段推出。
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

Rag

作者:fieldcure版本 2.5.1i★ –i在你的电脑上运行
注册名称io.github.fieldcure/rag

安装

概览

作者提供的说明(英文原文)

MCP RAG server with hybrid search, multi-KB support, and AI-powered chunk contextualization.

PopNx MCP 的三大支柱

这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。

它能帮你做什么

我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。

  • 连接方式: 在你的电脑上运行
  • 传输方式: stdio
  • 分类: 搜索与 AI 记忆

安装

选择你使用的 AI 应用,然后复制设置。

安装之前

  • 基础检查:1 项中通过 1 项
  • 在你的电脑上运行,拥有你的用户账户的权限(文件、网络、应用)。
  • 需要你自己填写: OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, VOYAGE_API_KEY, GROQ_API_KEY

你用的是哪个应用?

在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。

打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json

{
  "mcpServers": {
    "rag": {
      "command": "dnx",
      "args": [
        "FieldCure.Mcp.Rag",
        "--yes"
      ],
      "env": {
        "OPENAI_API_KEY": "your-value",
        "ANTHROPIC_API_KEY": "your-value",
        "GEMINI_API_KEY": "your-value",
        "VOYAGE_API_KEY": "your-value",
        "GROQ_API_KEY": "your-value"
      }
    }
  }
}

在终端中运行这条命令

claude mcp add rag --env OPENAI_API_KEY=your-value --env ANTHROPIC_API_KEY=your-value --env GEMINI_API_KEY=your-value --env VOYAGE_API_KEY=your-value --env GROQ_API_KEY=your-value -- dnx FieldCure.Mcp.Rag --yes

运行前请先填写空着的值。

在 Cursor 中打开

或者自己复制设置

粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json

{
  "mcpServers": {
    "rag": {
      "command": "dnx",
      "args": [
        "FieldCure.Mcp.Rag",
        "--yes"
      ],
      "env": {
        "OPENAI_API_KEY": "your-value",
        "ANTHROPIC_API_KEY": "your-value",
        "GEMINI_API_KEY": "your-value",
        "VOYAGE_API_KEY": "your-value",
        "GROQ_API_KEY": "your-value"
      }
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

在 VS Code 中打开

或者自己复制设置

粘贴到项目中的 .vscode/mcp.json

{
  "servers": {
    "rag": {
      "type": "stdio",
      "command": "dnx",
      "args": [
        "FieldCure.Mcp.Rag",
        "--yes"
      ],
      "env": {
        "OPENAI_API_KEY": "your-value",
        "ANTHROPIC_API_KEY": "your-value",
        "GEMINI_API_KEY": "your-value",
        "VOYAGE_API_KEY": "your-value",
        "GROQ_API_KEY": "your-value"
      }
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。

你的选择通过 Cookie 保存在这台设备上,无需账户。

需要你填写的值

  • OPENAI_API_KEY env
  • ANTHROPIC_API_KEY env
  • GEMINI_API_KEY env
  • VOYAGE_API_KEY env
  • GROQ_API_KEY env

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

它能做什么

它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月6日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过 GitHub 账户 fieldcure 验证,该账户拥有此仓库

  • … 尚未检查

    仍在维护

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    有许可证

    我们还没有从 GitHub 读取这个仓库

  • – 不适用

    端点有响应

    它在你的电脑上运行,没有互联网端点

  • – 不适用

    使用 OAuth 登录

    在你的电脑上运行,改用本地设置

  • … 尚未检查

    工具描述中没有隐藏指令

    它在你的电脑上运行;我们只能读取互联网端点的工具列表

与“搜索与 AI 记忆”中的其他服务器比较i

  • 星标数多于此分类中其他 7243 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 7243 个服务器的 14% 更新
  • 基础检查结果等于或优于此分类中其他 7243 个服务器的 100%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

Rag 安全吗?

它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。

它在我的电脑上运行还是在云端?

它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。

它还在维护吗?

GitHub 仓库最后更新于–,最新版本(2.5.1)于5个月前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 .NET。

有什么可以替代它?

同一分类中有:Context7, Codebase Memory, Exa

替代选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

Context7

作者:upstash

Up-to-date docs for AI agents

电脑或云端★ 64,224MIT今天更新
安装

Codebase Memory

作者:DeusData

Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.

在你的电脑上运行★ 48,148MIT20天前更新
安装

Exa

作者:exa-labs

Connect AI agents to Exa for web search, content fetching, and multi-step research.

在云端运行★ 5,213MIT上个月更新
安装

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

FieldCure MCP RAG Server

A Model Context Protocol (MCP) server for indexing and searching local document collections. Supports DOCX, HWPX, PDF (with OCR), Excel, PowerPoint, and audio (Whisper transcription, Windows-only), with hybrid keyword + semantic search optimized for Korean and English.

Built with C# and the official MCP C# SDK.

Commands

fieldcure-mcp-rag

├── serve --base-path # Multi-KB MCP search server (stdio) ├── exec --path [--force] [--partial ...] # Headless indexing for a single KB ├── exec-queue --queue-file [--sweep-all] # Process deferred indexing queue ├── prune-orphans --base-path # Delete orphan KB folders └── smoke-ocr --pdf # Self-test: OCR a scanned PDF (Windows)

  • serve — read-only MCP server serving all knowledge bases under the base path. Single process handles multiple KBs via kb_id parameter. Can run while exec is indexing (SQLite WAL).
  • exec — scans source folders, chunks documents, contextualizes with AI, embeds, stores in SQLite. --partial re-runs only downstream stages when models change, preserving OCR output.
  • exec-queue — sequential orchestrator consuming a deferred indexing queue. One entry at a time, no GPU contention. --sweep-all processes deferred entries too (used at app shutdown).
  • prune-orphans — deletes orphan KB folders (GUID-named, no config.json). Protected folders (., _ prefix, -backup-) are never touched.
  • smoke-ocr — diagnostic mode. Loads a scanned PDF through the OCR fallback parser, prints recognized text to stdout, and exits 0 on a non-empty result. Surfaces DllNotFoundException / BadImageFormatException distinctly so a missing or arch-mismatched native is immediately visible. Useful for verifying that the OCR native path is wired correctly on a given host (notably win-arm64 dnx installs).

Features

Search
  • Hybrid BM25 + vector search with Reciprocal Rank Fusion (RRF)
  • BM25-only fallback when no embedding provider is configured
  • Korean-optimized chunking (sentence boundary, decimal protection, parenthesis-aware)
  • SIMD-accelerated cosine similarity via System.Numerics.Vector
  • FTS5 trigram index for substring and CJK-friendly keyword matching
Indexing
  • Incremental indexing with SHA256 change detection
  • AI-powered chunk contextualization with bilingual keyword enrichment (see Chunk Contextualization)
  • 2-commit pipeline preserves expensive upstream work across embedding failures (see How Indexing Works)
  • Math equation extraction from DOCX/HWPX as [math: LaTeX] blocks
  • PDF with OCR fallback (Tesseract eng+kor) for scanned pages
  • Audio transcription (.mp3, .wav, .m4a, .ogg, .flac, .webm) via Whisper.net — Windows-only. Model size (Tiny→Large) is auto-selected from detected GPU/RAM/cores at startup; each transcript chunk records audio.model_size and audio.transcribed_at for future reindex auditing
  • Cross-process indexing lock with stale PID auto-cleanup
  • Orphan cleanup for deleted files
Queue Orchestrator
  • All indexing requests flow through start_reindex MCP tool — no direct exec spawn
  • Scope merge rules: full ⊃ contextualization ⊃ embedding (duplicate requests upgrade, not duplicate)
  • PID-based orchestrator lock with reuse defense (orchestrator.lock)
  • Logical KB deletion (config.json removal) + prune-orphans physical cleanup
  • Deferred indexing for app-shutdown batch processing (--sweep-all)
Operations
  • Multi-KB serve: single process serves all knowledge bases under a base path, lazy-loaded per KB
  • SQLite WAL mode allows search during indexing
  • Graceful shutdown via cancel file
  • Per-KB config.json with provider configuration
Integration
  • Ollama native — embedding via /api/embed, contextualization via /api/chat with keep_alive and num_ctx support. Requires Ollama 0.4.0+.
  • OpenAI-compatible — embedding via /v1/embeddings, contextualization via /v1/chat/completions. Works with OpenAI, Azure OpenAI, Groq, LM Studio, Together AI.
  • Gemini native — embedding via /v1beta/models/{model}:embedContent with task_type asymmetric retrieval (RETRIEVAL_DOCUMENT / RETRIEVAL_QUERY) and Matryoshka dimension truncation (768 / 1536 / 3072). gemini-embedding-2, multilingual, 8k token input.
  • Anthropic — contextualization via /v1/messages.
  • API keys via environment variables — OPENAI_API_KEY, ANTHROPIC_API_KEY, etc. Batch indexing commands (exec, exec-queue) are env-var-only. Interactive MCP search can fall back to MCP elicitation when the client supports it.
  • Standard MCP stdio transport (JSON-RPC over stdin/stdout)

Chunk Contextualization

Standard RAG chunking loses context — a sentence about "the protocol" becomes ambiguous when ripped from its surrounding paragraphs. This server addresses that with Unified Chunk Contextualization: a single LLM call per chunk that produces both contextual framing and bilingual (Korean + English) keywords in one pass.

The result is stored alongside the original chunk text:

  • Original text is preserved for accurate retrieval display
  • Contextualized text is what gets embedded and indexed in BM25
  • Bilingual keywords enable cross-lingual search — a Korean query can retrieve English documents and vice versa

This is enabled by setting contextualizer in config.json. It can be disabled (set provider/model to empty) if you prefer raw chunk indexing.

How Indexing Works

The exec command runs a 5-stage pipeline per file:

  1. Extract — text from document (DOCX, PDF OCR, audio transcription, etc.)
  2. Chunk — split into ~1000 char windows
  3. Contextualize — LLM enrichment (optional, see above)
  4. Embed — vector embedding via API
  5. Persist — save to SQLite

For large files, Stage 1 alone can take 20+ minutes — OCR on a 596-page scanned PDF, or Whisper transcription of a multi-hour audio recording. The first audio file in any KB also pays a one-time ggml model download (cached under {UserProfile}/.fieldcure/whisper-models/). To prevent expensive upstream work from being lost when later stages fail, the pipeline uses a 2-commit model:

Stages 1-3 (Extract → Chunk → Contextualize)

↓ [Commit 1] chunks saved as PendingEmbedding ↓ Stage 4 (Embed) ├─ success → [Commit 2a] promote chunks to Indexed └─ failure → chunks remain PendingEmbedding (retry next exec)

Why this matters: A 25-minute OCR result is persisted on disk before any embedding API call. If Stage 4 fails (network error, rate limit, token limit, process crash, even power loss), the chunks survive. The next exec hash-skips the file (no OCR re-run) and the deferred retry pass attempts only Stage 4.

Per-Chunk Failure Isolation (Binary Split)

If a single chunk in a file exceeds the embedding model's token limit (e.g., a math-dense page in a textbook), the binary split algorithm isolates that one chunk:

EmbedBatch([0..1249])         → 400 "input[846] too long"

├─ EmbedBatch([0..624]) → OK (promote 625) └─ EmbedBatch([625..1249]) → 400 ├─ EmbedBatch([625..937]) → 400 │ ... (binary search narrows toward chunk 846) │ └─ EmbedBatch([846..846]) → 400 (mark chunk 846 Failed) └─ EmbedBatch([938..1249]) → OK (promote 312)

Result: 1249 chunks indexed, only chunk 846 marked Failed. The file's status becomes Degraded — partially searchable instead of completely missing.

Deferred Retry Pass

Each exec ends with a retry pass over any chunks left in PendingEmbedding state from previous runs:

  • Reads enriched text from DB — no OCR or contextualization re-run
  • Calls the embedding API only — typically seconds, not minutes
  • Up to 3 retries per chunk; on exhaustion, the chunk is marked Failed
  • Auth errors (401/403) flag the provider as unavailable and skip the rest of the pass
File States
StatusMeaningHash-skip behavior
ReadyFully indexedSkip if hash matches
DegradedSome chunks failed (binary-split isolated)Skip if hash matches
PartiallyDeferredChunks pending embedding retryMain loop skips; deferred pass picks up
FailedExtraction or repeated embedding failureSkip; requires --force to retry
NeedsActionUser intervention requiredSkip with separate counter
Schema Versioning

Each KB DB carries a PRAGMA user_version tag. The exec command migrates older schemas automatically as part of InitializeSchema(). The serve command opens DBs read-only and never triggers migration — older-schema KBs continue to serve search queries correctly while their new-feature columns remain unused.

Installation

dotnet tool (recommended)
dotnet tool install -g FieldCure.Mcp.Rag
From source
git clone https://github.com/fieldcure/fieldcure-mcp-rag.git

cd fieldcure-mcp-rag dotnet build

Requirements

  • .NET 8.0 Runtime or later
  • OCR: Windows x64 only — Tesseract OCR for scanned PDFs loads lazily on first use (Windows only). On other platforms, PDFs with embedded text work normally; scanned pages without a text layer are silently skipped.
  • An embedding provider (Ollama, OpenAI, etc.) — optional, BM25 search works without it
  • Ollama 0.4.0 or later (if using Ollama for embedding or contextualization)

Quick Start

Index a folder and search it without any embedding setup (BM25 only):

# 1. Install

dotnet tool install -g FieldCure.Mcp.Rag

2. Create a minimal config

$kbPath = "$env:LOCALAPPDATA\FieldCure\Mcp.Rag\demo" New-Item -ItemType Directory -Force -Path $kbPath @' { "id": "demo", "name": "Demo KB", "sourcePaths": ["C:\\my-docs"] } '@ | Set-Content "$kbPath\config.json"

3. Index

fieldcure-mcp-rag exec --path $kbPath

4. Start the search server

fieldcure-mcp-rag serve --base-path "$env:LOCALAPPDATA\FieldCure\Mcp.Rag"

For full retrieval quality with semantic search and contextualization, add embedding and contextualizer blocks to config.json — see Usage below.

Usage

1. Create a knowledge base folder
%LOCALAPPDATA%\FieldCure\Mcp.Rag\{kb-id}\config.json
{

"id": "my-kb-001", "name": "Project Docs", "created": "2026-04-03T00:00:00Z", "sourcePaths": ["C:\\Users\\me\\Documents\\project-docs"], "contextualizer": { "provider": "anthropic", "model": "claude-haiku-4-5-20251001", "apiKeyPreset": "Claude" }, "embedding": { "provider": "openai", "model": "text-embedding-3-small", "apiKeyPreset": "OpenAI" } }

API keys are resolved from environment variables: apiKeyPreset: "OpenAI" → OPENAI_API_KEY, "Claude" → ANTHROPIC_API_KEY, "Gemini" (or "Google") → GEMINI_API_KEY.

Gemini embedding example — asymmetric retrieval with 1536-dim Matryoshka truncation (50% storage of full 3072 with identical MTEB score):

"embedding": {

"provider": "gemini", "model": "gemini-embedding-2", "apiKeyPreset": "Gemini", "dimension": 1536 }

DimensionMTEBStorageUse case
76867.9925%Storage-constrained
153668.1750%Recommended default
307268.17100%Maximum quality (pre-normalized)

In serve mode, `search_d

只显示了开头部分;其余内容请在仓库中阅读

问 PopNx