Skip to main content
Glama

MCPedia

A content-first knowledge base — readable as Markdown in Git, queryable by humans via a modern Web UI, and accessible to AI agents via the Model Context Protocol (MCP).

MCPedia keeps content as plain Markdown files under content/ as a Git-tracked source of truth. Content is indexed into PostgreSQL (with a weighted tsvector full-text search column and chunked embeddings) and served through a unified Core layer that every interface (Web, MCP, API, Worker, CLI) shares.


Architecture Overview

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│     Web UI      │    │   MCP Server    │    │  tRPC / Hono    │    │  BullMQ Worker  │
│   (Next.js 16)  │    │  (Stdio + HTTP) │    │   API (:4020)   │    │ (Async Queue)   │
└────────┬────────┘    └────────┬────────┘    └────────┬────────┘    └────────┬────────┘
         │                      │                      │                      │
         └──────────────────────┴──────────┬───────────┴──────────────────────┘
                                           ▼
                              ┌─────────────────────────┐
                              │     @mcpedia/core       │
                              │ (Unified Business Logic)│
                              └────────────┬────────────┘
                                           │
         ┌─────────────────────────────────┼─────────────────────────────────┐
         ▼                                 ▼                                 ▼
┌──────────────────┐             ┌──────────────────┐             ┌──────────────────┐
│ Markdown Files   │             │   @mcpedia/db    │             │ @mcpedia/search  │
│ (content/ tree)  │             │  (PostgreSQL)    │             │ (FTS + Cosine)   │
└──────────────────┘             └──────────────────┘             └──────────────────┘

Core Principles

  1. Content as Source of Truth: Markdown files with YAML frontmatter under content/ are primary. The database holds metadata, search indices, chunk embeddings, and revision history.

  2. Single Core Layer: All business logic (CRUD, indexing, search, revisions, path classification) is encapsulated in @mcpedia/core. Interfaces never touch the database directly.

  3. Multi-Modal Search: Keyword search (Postgres FTS), semantic search (vector cosine similarity), and hybrid search (Reciprocal Rank Fusion / RRF) work out of the box.

  4. Resilient Revision System: Content edits snapshot revisions automatically; metadata-only edits are deduplicated. Restoring a revision automatically rebuilds semantic search chunks.

  5. Dual Interface: Full human-friendly web experience + first-class AI agent integration via MCP.


Related MCP server: astra-knowledge-base-mcp

Monorepo Layout

mcpedia/
├── apps/
│   ├── web/          # Next.js 16 (Turbopack) — dark-mode UI, hierarchical doc tree, TOC, CRUD
│   ├── mcp/          # MCP server (stdio + Streamable HTTP on :4021) — 13 tools + 4 resources
│   ├── mcp-client/   # Interactive MCP CLI REPL, one-shot command runner, and TypeScript client SDK
│   ├── api/          # Hono + tRPC v11 API on :4020, git-sync webhooks, Prometheus metrics, dashboard
│   └── worker/       # Long-running BullMQ worker for async indexing and embedding jobs
├── packages/
│   ├── core/         # Document, Content, Search, Index, Revision, and Path services (the business logic)
│   ├── db/           # Drizzle ORM schema, client, and migrations
│   ├── parser/       # Frontmatter (gray-matter) parsing & stringification with dynamic field support
│   ├── search/       # Postgres FTS query (ts_rank + ts_headline), vector cosine, and RRF hybrid fusion
│   ├── embeddings/   # Chunking algorithms & embedding provider integrations
│   ├── queue/        # Redis (ioredis) client & BullMQ queue/worker definitions
│   ├── types/        # Shared TypeScript domain types and interfaces
│   └── config/       # Authoritative environment configuration loader (.env)
├── content/          # Markdown knowledge base organized by sections and nested folders
│   ├── docs/         # System and architectural documentation
│   ├── writeups/     # Technical writeups, CTF solutions, and debugging reports
│   ├── research/     # Research notes and evaluations
│   └── notes/        # Engineering notes and quick references
└── scripts/          # indexer.ts (full corpus reindexing), enqueue.ts (one-shot job enqueue)

Key Features

Search Mode

Mechanism

Best Used For

Keyword Search

PostgreSQL tsvector (simple config, weighted A/B) + GIN index + ts_rank + ts_headline

Exact terms, code symbols, error codes, identifiers

Semantic Search

Text chunking (1000 chars, 150 overlap) + vector embeddings + cosine similarity ranking

Conceptual questions, paraphrased queries, intent matching

Hybrid Search

Reciprocal Rank Fusion ($RRF = \sum \frac{1}{k + rank}$) fusing keyword and semantic signals

General-purpose search with optimal relevance

2. Hierarchical Folder Navigation

MCPedia supports nested folder structures (like GitHub repositories):

  • Dynamic Path Classification: The router inspects paths and automatically distinguishes between leaf documents and folder nodes containing subfolders or child documents.

  • Folder Index Pages: Navigating to any folder (e.g. /writeups/ctf/defcon-quals-2024) renders subfolders and documents within that path.

  • Collapsible Sidebar: Hierarchical navigation tree reflecting the on-disk directory structure.

  • Section Indexes: Dedicated overview pages for each section (/docs, /writeups, /research, /notes).

3. Dynamic Custom Fields

Content frontmatter supports arbitrary custom key-value pairs without schema modifications:

  • Automatic Storage: Custom fields are persisted into a JSONB extra_fields column in PostgreSQL.

  • Type Preservation: Numbers, booleans, arrays, objects, and strings maintain native types across parser, database, and API.

  • Value-Aware UI Badges: The Web UI automatically styles badges based on value types and semantic patterns (difficulty levels, categories, tags, status) rather than hardcoded field names.

4. Revision History & Rollback

  • Smart Snapshotting: Whenever a document body changes, a revision snapshot is created in document_revisions.

  • Deduplication: Metadata-only updates do not produce duplicate body snapshots.

  • One-Click Restore: Restoring any past revision writes the historic content back to disk and database, and automatically triggers semantic chunk re-indexing to ensure search consistency.


Model Context Protocol (MCP)

MCPedia runs an MCP server accessible via Stdio (for local subagents) and Streamable HTTP (for remote agents over the network at :4021).

MCP Tools (13 Total)

Read Tools (Public)

Tool

Description

search_documents

Full-text keyword search over the knowledge base with headline snippets

semantic_search

Embedding-based cosine search across chunked content

hybrid_search

Fused full-text and semantic search via Reciprocal Rank Fusion

get_document

Fetches the full Markdown body of a document by slug

list_documents

Lists documents, optionally filtered by section or status

get_related_documents

Finds documents sharing tags with a given slug

queue_status

Returns current BullMQ indexing queue metrics

Mutating & Admin Tools (Requires x-webhook-secret)

Tool

Description

create_document

Creates a new document (writes Markdown file, database row, revision, and chunks)

update_document

Updates an existing document's body, metadata, or dynamic custom fields

delete_document

Removes a document file, database rows, revisions, and chunks

index_document

Enqueues a single-document background reindex job

reindex_all

Enqueues a full-corpus background reindexing job

restore_revision

Restores a document to a specific revision and rebuilds search chunks

MCP Resources

Resource URI

Description

MIME Type

mcpedia://docs

List of all published documents in the knowledge base

application/json

mcpedia://docs/{+slug}

Full Markdown body of a single document from disk

text/markdown

mcpedia://docs/{+slug}/chunks

Preview of embedded semantic chunks for a document

application/json

mcpedia://docs/{+slug}/revisions

Summary of revision history for a document

application/json


HTTP, tRPC & Webhook Endpoints

The API application (apps/api) runs on :4020 with Hono and tRPC v11:

tRPC Procedures

  • Queries: search, semanticSearch, hybridSearch, getDocument, listDocuments, related, revisions, getRevision, jobStatus, queueStatus.

  • Mutations (Protected by x-webhook-secret): createDocument, updateDocument, deleteDocument, restoreRevision.

Webhooks & Observability

  • POST /hooks/reindex — Triggers a full corpus reindex (ideal for Git push webhooks).

  • POST /hooks/index?slug=<slug> — Reindexes a single document.

  • GET /metrics — Prometheus metrics exposition (mcpedia_uptime_seconds, mcpedia_queue_jobs{state=...}).

  • GET /dashboard — Standalone real-time web dashboard for queue monitoring and live search.

  • GET /health — Health check endpoint.


Authentication & Security

MCPedia utilizes dual-tier security:

  1. Web UI Authentication:

    • Gated via ADMIN_PASSWORD in .env.

    • Generates an HMAC-signed mcpedia_admin HttpOnly cookie upon login at /login.

    • Protects document creation (/create), inline editing (?edit=1), and deletion.

  2. API & MCP Write Authentication:

    • Gated via WEBHOOK_SECRET in .env.

    • Requires the x-webhook-secret HTTP header on mutating endpoints and tools.

    • The API will refuse to start if WEBHOOK_SECRET is unset, preventing unsecured deployments.


Quick Start

Prerequisites

1. Installation & Environment Setup

# Clone repository
git clone https://github.com/asepharyana/mcpedia.git
cd mcpedia

# Install workspace dependencies
bun install

# Configure environment variables
cp .env.example .env

Ensure .env contains your database connection, Redis configuration, webhook secret, and admin password.

2. Database Setup

Apply migrations to initialize tables (documents, document_chunks, document_revisions):

psql $DATABASE_URL -f packages/db/drizzle/0000_grey_toro.sql
psql $DATABASE_URL -f packages/db/drizzle/0001_document_chunks.sql
psql $DATABASE_URL -f packages/db/drizzle/0002_document_revisions.sql
psql $DATABASE_URL -f packages/db/drizzle/0003_document_extra_fields.sql

3. Build & Index

# Typecheck and build all packages
bunx turbo run build

# Run initial full indexation (parses content/, embeds chunks, writes DB)
bun run index

4. Running Services

# Start all development services (Web, API, MCP, Worker) concurrently
bun run dev

# Or run services individually:
bun --cwd apps/web run dev     # Web UI on :3000 (or :4016 in production)
bun run api                    # Hono + tRPC API on :4020
bun run worker                 # BullMQ background worker
bun run mcp                    # MCP server (stdio mode)
bun run mcp:http               # MCP server (Streamable HTTP mode on :4021)

Scripts & CLI Reference

Command

Action

bun run index

Run full synchronous reindexer over content/

bun run enqueue --all

Enqueue a full reindex job to Redis/BullMQ

bun run enqueue <slug>

Enqueue a single-document reindex job

bun run worker

Start the BullMQ background worker

bun run api

Start the Hono + tRPC API server

bun run mcp

Run MCP server in stdio mode

bun run mcp:http

Run MCP server in Streamable HTTP mode

bun run chat

Launch interactive MCP Client REPL

bun run ask <cmd> [args]

Run one-shot MCP client command

bun run test

Run the comprehensive test suite across all packages

bun run typecheck

Run TypeScript type checking across all workspaces


Content Format

Content files reside in content/<section>/ as Markdown files with YAML frontmatter:

---
id: sample-document
title: Sample Architecture Document
type: documentation
section: docs
tags: [architecture, typescript, postgres]
status: published
author: asep
created_at: 2026-08-20
updated_at: 2026-08-20
# Arbitrary custom fields (auto-discovered & styled):
difficulty: intermediate
points: 100
category: system-design
verified: true
---

# Sample Architecture Document

Your document content in standard GitHub Flavored Markdown (GFM).
Tables, code snippets, and custom sections are fully supported.

Production Deployment

Production services run as supervised systemd units behind a Caddy reverse proxy:

# Copy systemd unit templates
sudo cp deploy/*.service /etc/systemd/system/
sudo systemctl daemon-reload

# Enable and start all supervised services
sudo systemctl enable --now mcpedia-web mcpedia-api mcpedia-worker mcpedia-mcp

# Inspect service logs
journalctl -u mcpedia-web -u mcpedia-api -u mcpedia-worker -u mcpedia-mcp -f

Testing

The test suite runs with in-memory mocks without requiring an active database or Redis instance:

bun run test

All 32+ unit and integration tests across packages and apps validate chunking, frontmatter parsing, cosine similarity, revision deduplication, auth gates, and route handlers.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

No tool schema history has been recorded yet.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Transforms Markdown documentation into an intelligent knowledge base with AI-powered search and Q\&A through an MCP server.
    13
    9
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    MCP server that exposes one or more documentation folders (Markdown, MDX, TXT) to AI agents, enabling listing, reading, and searching of documentation files.
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    A 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

Latest Blog Posts

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