BriefMark
Universal MCP server for project documentation
Human reads the same docs as LLM. LLM reads and updates them via MCP tools.
Install
pip install briefmark-mcp
Or with pipx (recommended for CLI tools):
pipx install briefmark-mcp
Or clone and install in development mode:
git clone https://github.com/VladYankovenko/BriefMark.git
cd BriefMark
pip install -e ".[dev]"
Quick Start
# Go to your project
cd ~/projects/my-app
# Initialize documentation structure
briefmark init
# Start the MCP server
briefmark serve
Features
- Single Source of Truth — one
Docs/folder for humans and AI - Bidirectional — LLM can read AND write documentation via MCP tools
- Universal — works with any MCP-compatible agent (Cursor, Claude, Cline, Kimi)
- Lightweight — no external DB, no ML models, everything in project files
- Auto-Discovery — scans structure without config
- Frontmatter-native — documents declare their own metadata
- Section-level precision — read, edit, or delete one section without touching the rest
- Token-first — every tool returns
estimated_tokens; agent sees operation cost - Contextual search — search results include excerpts around the match + document outline
Project Structure
my-project/
├── .briefmark/
│ ├── config.json # BriefMark config
│ └── .index.json # Auto-generated search index (gitignored)
├── Docs/ # Documentation root (user-managed structure)
└── .cursor/mcp.json # Agent MCP config
Setup & Efficiency
BriefMark works out of the box, but project rules make it truly efficient.
Recommended workflow for your agent:
docs_search(query)— find relevant docs firstdocs_read_section(path, section)— read only what you needdocs_update_section(path, section, content)— precise edits without full rewrites
Anti-pattern: docs_read + docs_write to change 1–2 sections — wastes tokens and risks collateral damage.
For detailed integration steps (Cursor, Claude, Kimi) and project rules templates, see Docs/Integration.md.
Document Format
Every document MUST have YAML frontmatter:
---
id: network-service
title: Network Service Pattern
category: pattern
summary: One-sentence description of what this document covers.
keywords: [network, api, alamofire]
---
# Network Service Pattern
## Motivation
...
## Implementation
...
Required fields: id, title, category, summary
Recommended: keywords (3–7 terms for search)
MCP Tools
Reading
| Tool | Description |
|---|---|
docs_read |
Read full document content |
docs_outline |
Get heading structure (table of contents) |
docs_read_section |
Read a single section only |
docs_list |
List all documents with metadata |
docs_search |
Search docs by keyword |
Writing
| Tool | Description |
|---|---|
docs_write |
Create or overwrite a document |
docs_update_frontmatter |
Add or update frontmatter on existing file |
docs_append |
Append a section to the end |
docs_update_section |
Replace one section's body |
docs_insert_section |
Insert a new section after an existing one |
docs_delete_section |
Remove a section |
Skills & Templates
| Tool | Description |
|---|---|
skill_list |
List all available skills |
skill_execute |
Execute a skill with parameters |
template_list |
List available code templates |
template_render |
Render a template with variables |
Agent Setup
Cursor
Copy to your project's .cursor/mcp.json:
{
"mcpServers": {
"briefmark": {
"command": "bash",
"args": ["-lc", "briefmark serve"],
"cwd": "${workspaceFolder}"
}
}
}
bash -lc ensures your shell PATH (conda, venv, pipx) is loaded — this works identically on any machine.
Claude Code
claude mcp add briefmark briefmark serve
Kimi Code / Open WebUI
Kimi Code CLI reads MCP config from the global ~/.kimi/mcp.json only — project-local .kimi-code/mcp.json is not auto-discovered.
See examples/kimi-code.md for setup instructions and multi-project configuration.
CLI Commands
| Command | Description |
|---|---|
briefmark serve |
Start MCP server |
briefmark init |
Create Docs/ structure |
briefmark index --rebuild |
Rebuild search index |
briefmark search <query> |
Search documentation |
License
MIT
Metadata
Release files for briefmark-mcp 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| briefmark_mcp-1.0.1.tar.gz | 41.1 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| briefmark_mcp-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 63.3 kB
Release files / briefmark_mcp-1.0.1.tar.gz
| Download URL | briefmark_mcp-1.0.1.tar.gz |
|---|---|
| Size | 41.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
69fbe851164cad24d95d65b3da205c568533baf9f7b11099accecad76a333db7
|
|
BLAKE2b-256 checksum How to use checksums |
a2737439a1e4c8a036180212ea05656d27eca289097f66b0dca5b484578128f2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / briefmark_mcp-1.0.1-py3-none-any.whl
| Download URL | briefmark_mcp-1.0.1-py3-none-any.whl |
|---|---|
| Size | 22.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c0cec821b7289987355196a0e6d8c90b51e42fe9c216690f7a4ec4d89ef659e4
|
|
BLAKE2b-256 checksum How to use checksums |
ae67b255a0e5e1961432874e69caefe519ac4a88d6c4f93106e10a1e99941024
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Security for briefmark-mcp 1.0.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.