MCPedia
MCPedia
一个以内容为先的知识库 —— 在 Git 中以 Markdown/MDX 形式可读,人类通过 Web UI 查询,AI 代理通过模型上下文协议(MCP)查询。
MCPedia 将内容保持为 content/ 下的纯 Markdown 文件。以 Git 跟踪的事实来源,索引到 PostgreSQL(元数据 + tsvector 全文列)中,并通过单个 Core 层提供服务,所有接口(Web、MCP)共用该层 —— 每个界面不重复业务逻辑。
单仓库布局
mcpedia/
├── apps/
│ ├── web/ # Next.js 16 (Turbopack) — human-facing docs UI + search
│ ├── mcp/ # MCP server (stdio) — AI-agent interface (tools + resources)
│ └── api/ # Hono + tRPC v11 API on :4020 (+ /hooks/* git-sync webhooks)
├── packages/
│ ├── types/ # shared domain types (DocSection, Document, SearchHit, ...)
│ ├── config/ # loads .env (repo root) as authoritative dev config
│ ├── db/ # Drizzle ORM schema + client + drizzle-kit config
│ ├── parser/ # frontmatter (gray-matter) parsing
│ ├── search/ # Postgres FTS query (ts_rank + ts_headline)
│ ├── embeddings/ # embedding provider + chunker
│ ├── queue/ # Redis (ioredis) + BullMQ worker/queue (Phase 3)
│ └── core/ # Document/Content/Search/Index/Revision — the only business logic
├── content/ # docs/ writeups/ research/ notes/ (the knowledge base)
└── scripts/ # indexer.ts (full reindex), enqueue.ts (one-shot job enqueue)Related MCP server: astra-knowledge-base-mcp
架构原则
Web ─┐
├──► Core ──► Repository (@mcpedia/db) ──► PostgreSQL
MCP ─┘所有接口都通过 @mcpedia/core。除 packages/db 和 packages/core 外,没有其他模块直接访问数据库。
快速开始
bun install # install workspace deps
cp .env.example .env # set DATABASE_URL (dev uses imrnes Postgres :6432)
bunx turbo run build # typecheck + build every package
bun run index # walk content/ -> upsert into Postgres
bun --cwd apps/web run dev # Web UI on :3000
bun run mcp # MCP server on stdio (pipe to an MCP client)数据库
模式在 packages/db/src/schema.ts 中定义(documents 带加权 search_vector tsvector + GIN 索引,document_chunks 带 embedding real[])。共享的 imrnes Postgres 上没有 pgvector 扩展,因此语义搜索将向量存储为 real[],并通过应用内余弦相似度排序。
迁移文件位于 packages/db/drizzle/ 中。它们是通过 psql 手动应用的(drizzle-kit push 在 PgBouncer 事务池下不可靠);要在新数据库上重新应用:
psql $DATABASE_URL -f packages/db/drizzle/0000_grey_toro.sql
psql $DATABASE_URL -f packages/db/drizzle/0001_document_chunks.sql注意:在 imrnes(PgBouncer
:6432)上,泄漏的DATABASE_URLshell 变量可能遮蔽.env。@mcpedia/config最后加载.env,因此仓库配置在本地/开发环境中始终优先。
内容
每个 Markdown 文件都带有 YAML frontmatter:
---
id: websocket-contract
title: WebSocket Contract
type: documentation
tags: [typescript, websocket, rpc]
status: published
author: asep
created_at: 2026-08-19
updated_at: 2026-08-19
---slug = content/ 下的相对路径(例如 docs/websocket/contract)。UI 中显示的 body 始终从磁盘上的文件读取(事实来源);数据库存储元数据 + 搜索向量。
MCP 工具
工具 | 用途 |
| 对整个语料库进行 Postgres FTS(排名 + 摘要) |
| 对分块内容进行嵌入/余弦搜索 |
| 通过 RRF 融合 FTS + 语义 |
| 按 slug 获取完整 markdown 正文 |
| 列出文档,可选按部分筛选 |
| 返回与给定 slug 共享标签的文档 |
MCP 资源
URI | 用途 |
| 列出所有已发布的文档 |
| 完整的 markdown 正文(从磁盘读取) |
| 嵌入语义块的预览 |
| 修订历史摘要 |
({+slug} 使用 RFC 6570 保留扩展,因此类似 docs/websocket/contract 的 slug 可以匹配模板。)
冒烟测试(内存传输,真实 JSON-RPC):
bun --cwd apps/mcp run smokeAPI(阶段 2 + 阶段 3)
通过 :4020 端口提供 tRPC v11 API(所有过程镜像 MCP 工具)。阶段 3 增加了异步任务和修订过程以及 git-sync webhooks:
bun run api # http://localhost:4020 (GET /health, POST/GET /trpc/*)tRPC 过程:search、semanticSearch、hybridSearch、getDocument、listDocuments、related(阶段 2);加上 revisions、getRevision、restoreRevision、jobStatus、queueStatus(阶段 3)。
git-sync webhooks(将任务入队到 BullMQ;由 worker 处理):
POST /hooks/reindex—— 全语料库重新索引(将你的 Git 提供商的 push webhook 指向这里,以便在推送时自动重新索引)。POST /hooks/index?slug=<slug>—— 重新索引单个文档。
安全性: 两个 webhook 都需要
x-webhook-secret头,与WEBHOOK_SECRET(在.env中)匹配。如果WEBHOOK_SECRET未设置,API 将拒绝启动,因此钩子永远不会处于未受保护状态。
bun run index 现在还会进行分块 + 嵌入(Phase 2 索引器),并在正文更改时快照修订(Phase 3)。参见 .env.example 了解 EMBED_* / REDIS_* / QUEUE_PREFIX / WEBHOOK_SECRET 变量。
作为受监控服务运行(阶段 4)
deploy/mcpedia-api.service + deploy/mcpedia-worker.service 是 systemd 单元(Restart=on-failure,EnvironmentFile=.env,WorkingDirectory=/home/code/mcpedia)。使用以下命令启用:
sudo cp deploy/*.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now mcpedia-api mcpedia-worker
# tail logs
journalctl -u mcpedia-api -u mcpedia-worker -fAPI 应位于 Caddy(或反向代理)之后以提供 TLS;仅将 :4020 暴露在内部,Web 应用公开。
状态
阶段 1 — MVP(已完成): monorepo、核心层、Web UI(首页/文档/搜索)、MCP 服务器、Postgres FTS 关键字搜索、内容索引。
阶段 2 — 语义 + API(已完成): 嵌入提供者(通过 9router 的 OpenRouter)、分块的 document_chunks、semanticSearch + hybridSearch(RRF)、tRPC/Hono API(apps/api,:4020)、MCP semantic_search/hybrid_search 工具、Web 混合搜索开关。
阶段 3 — 异步 + 扩展(已完成): Redis + BullMQ 后台索引/嵌入工作进程(packages/queue、apps/worker)、git 同步 webhook(POST /hooks/*)、文档修订系统(document_revisions + 还原),以及 MCP 资源(mcpedia://docs/...)。请参阅 PHASES.md。
共享的 imrnes Postgres 上未安装 pgvector,因此向量存储使用
real[]列,并在应用内计算余弦相似度(在 KB 规模下瞬间完成)。pgvector 是第 4 阶段的扩展路径。请参阅PHASES.md。
请参阅 PHASES.md 了解阶段 3–4(Redis/BullMQ、认证、修订、扩展)。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceTransforms Markdown documentation into an intelligent knowledge base with AI-powered search and Q\&A through an MCP server.139MIT
- AlicenseAqualityBmaintenanceMCP server for managing and searching multi-tenant knowledge bases backed by SQLite with FTS5, enabling AI agents to persist and retrieve content via full-text search.131MIT
- FlicenseNot gradedqualityBmaintenanceMCP server that exposes one or more documentation folders (Markdown, MDX, TXT) to AI agents, enabling listing, reading, and searching of documentation files.
- AlicenseNot gradedqualityAmaintenanceA lightweight MCP server for semantic search over markdown knowledge bases, enabling AI coding agents to index, search, and answer questions from local markdown documents.MIT
Related MCP Connectors
MCP server for AgentDocs (agentdocs.eu): read, search, write, comment on & share Markdown docs.
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Serve a folder of Markdown notes as an MCP server: hybrid search, reading, and sourced answers.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/asepharyana/mcpedia'
If you have feedback or need assistance with the MCP directory API, please join our Discord server