About md-md
md.md is a team engineering knowledge platform that versions Markdown blocks and resolves task-relevant context for AI-assisted development. Teams manage content in a dashboard and reuse it across IDEs and AI tools.
Key features
- 01Create, edit, and archive knowledge blocks
- 02Publish stable versions
- 03Resolve and compose task context
- 04Scope permissions by team and workspace
- 05Preview resolution and log usage
Use cases
- 01Maintain team coding standards centrally
- 02Provide coding agents with architecture decisions
- 03Preview task context before publishing
- 04Review injection and audit logs
MCP support
The MCP server exposes tools over stdio for IDEs and AI clients to resolve and manage knowledge blocks, check access, and inspect logs. It forwards tool calls to the backend API.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
npx -y md-md-mcp-serverMD_MD_API_KEYSecretAPI key for md.md backendMD_MD_API_URLBase URL of md.md backend APIMD_MD_TEAM_IDOptional team scope overrideMD_MD_WORKSPACE_IDOptional workspace scope overrideLocal servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEmd.md
md.md is a team intelligence platform that turns internal engineering knowledge into versioned Markdown blocks, then injects the right context into AI-assisted development workflows.
It combines:
- A backend registry and policy engine
- A React dashboard for authoring and publishing knowledge blocks
- An MCP server for IDE and assistant integrations
- Integration docs and product design docs
What Problem This Solves
AI coding assistants are strong at general coding but weak on team-specific context. Without shared context, teams repeatedly re-explain standards, architecture decisions, and workflows.
md.md solves this by letting teams:
- Author knowledge once
- Publish stable versions
- Resolve the right context at task time
- Reuse the same context across IDEs and AI tools
Repository Structure
app-backend/: NestJS API for auth, block lifecycle, policy resolution, and observabilityapp-client/: React + Vite dashboard for block authoring, publishing, and resolve previewmcp-server/: Model Context Protocol server that exposes md.md tools over stdioide-integrations/: IDE integration documentation (currently Cursor-focused)docs/: Product vision, phase plan, and resolution model design docs
High-Level Architecture
- Teams author Markdown files inside blocks.
- Blocks are versioned and published.
- IDE/assistant integrations call resolve tools or APIs with task context.
- The backend selects relevant published blocks and composes a payload.
- The payload is injected into AI context.
- Resolution and usage metadata are logged for observability.
Integration Path
- IDE or AI client
- MCP protocol over stdio
mcp-servertools- Backend REST API
- Postgres persistence (Supabase-compatible)
Core Concepts
Block
A named unit of team knowledge containing one or more Markdown files.
Draft and Published Versions
Draft content can be edited freely. Published versions are stable and intended for consumption.
Scoped Access
Data and permissions are scoped by team and workspace.
Resolution
At usage time, the system resolves and composes relevant published blocks into an AI-ready payload.
Component Details
1) Backend (app-backend)
Tech stack:
- NestJS 11
- PostgreSQL via
pg(Supabase-compatible connection) - TypeScript
Responsibilities:
- Authentication and authorization
- RBAC and API key management
- Block CRUD, versioning, publishing, and archiving
- Resolution orchestration
- Injection log and audit log APIs
Notable backend capabilities:
- API key format:
mdmd_<token> - Roles: reader, author, admin
- Per-block permission overrides
- Health and observability endpoints used by MCP
2) Client Dashboard (app-client)
Tech stack:
- React 19
- Vite
- TypeScript
- MUI + Emotion
Responsibilities:
- Create and edit blocks
- Manage block files
- Publish versions
- Preview resolution output
- Configure auth/scope information for usage
3) MCP Server (mcp-server)
Tech stack:
- Node.js + TypeScript
@modelcontextprotocol/sdk- Zod for argument validation
Responsibilities:
- Expose md.md capabilities as MCP tools
- Forward tool calls to backend APIs
- Handle retries, timeouts, and health checks
Primary tools include:
resolve_contextattach_blockslist_blocksget_blockhealth_check- Block lifecycle tools (
create_block,update_block,publish_block, etc.) - Access and observability tools (
whoami,list_injection_logs)
4) IDE Integrations (ide-integrations)
Contains setup patterns for connecting editors to the MCP server.
Current documented integration:
- Cursor (MCP client configuration)
5) Product and Design Docs (docs)
idea_1.0.md: product rationale and system visionphases_1.0.md: implementation roadmap (phase-oriented)resolution_model.md: detailed target model for selection, ordering, and composition
Local Development Setup
Prerequisites
- Node.js 18+
- npm
- PostgreSQL database (Supabase Postgres recommended)
1) Backend
cd app-backend
npm install
Create app-backend/.env with at least:
SUPABASE_DATABASE_URL=postgresql://<user>:<password>@<host>:<port>/<db>
Start backend:
npm run start:dev
2) Create Admin API Key
From app-backend:
npm run create-admin -- \
--email [email protected] \
--name "Admin User" \
--team team-alpha \
--workspace workspace-core
Save the generated mdmd_... key securely.
3) Client Dashboard
cd ../app-client
npm install
npm run dev
4) MCP Server
cd ../mcp-server
npm install
npm run build
npm start
Set environment variables for MCP runtime (either shell or IDE config):
MD_MD_API_URL=http://localhost:3000
MD_MD_API_KEY=mdmd_your_key_here
Common Developer Workflows
Backend
cd app-backend
npm run start:dev
npm run build
npm run test
npm run test:e2e
npm run lint
Client
cd app-client
npm run dev
npm run build
npm run lint
npm run preview
MCP Server
cd mcp-server
npm run dev
npm run build
npm start
Security and Secrets
- Do not commit API keys or token files.
- Keep secrets in environment files or secure secret managers.
- Use least-privilege API keys for integrations.
- Rotate keys regularly.
- Review audit logs for sensitive actions.
Recent local ignore defaults in mcp-server/.gitignore include:
.mcpregistry_github_token.mcpregistry_registry_token
Current Product Status
Implemented:
- End-to-end block lifecycle (create, edit, publish)
- Dashboard authoring and resolve preview
- Backend RBAC and API key management
- MCP server with tooling for context resolution and block operations
In progress or planned:
- Smarter policy-based contextual selection and ordering
- Expanded IDE integrations
- Additional analytics and governance features
Where To Go Next
- Backend implementation and auth docs:
app-backend/docs/ - MCP usage and integration details:
mcp-server/README.md - IDE setup notes:
ide-integrations/README.md - Product vision and roadmap:
docs/
License
See license declarations in each package (app-backend, app-client, mcp-server).
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.