mdgraph
mdgraph
Сканирует markdown-файлы репозитория в граф, визуализирует его в браузере и предоставляет его Клоду (или любому MCP-хосту) как навигационный индекс.
Одна модель данных — { nodes, edges } — с тремя потребителями:
scan (the only hard part)
│ emits { nodes, edges }
┌──────────┼───────────┐
▼ ▼ ▼
graph.json browser MCP server
(a file) (viewer) (agents read it)Аналитика, достижимость и осиротевшие файлы — всё выводится из модели во время чтения. Узлы и рёбра остаются простыми.
Модель
node = { id, label, path, type, cluster, content } // type: root | ai | doc
edge = { source, target, sourceLine, context } // context = the line the link lives ontype назначается по соглашению об именах файлов (README.md → root, CLAUDE.md/AGENTS.md/*.mdc → ai, иначе doc). Рёбра берутся из фактических ссылок в тексте — стандартных [x](./y.md) и [[wikilinks]] — а не из принадлежности к папкам, поэтому файл в docs/, ссылающийся на другие части дерева, всё равно соединяется с ними. Папки влияют только на cluster (цвет/группировка).
Related MCP server: mcp-server-markdown
Установка и запуск
Установка не требуется — запускайте напрямую через npx:
npx @emmd474/mdgraph scan . # print the graph as JSON
npx @emmd474/mdgraph view . # open the interactive graph in a browser
npx @emmd474/mdgraph scan . --out graph.jsonИли установите глобально, чтобы получить обычную команду mdgraph:
npm install -g @emmd474/mdgraph
mdgraph view ./my-repo
mdgraph scan ./my-repo --out graph.jsondir по умолчанию — текущая директория. view принимает --port (по умолчанию 4173).
Команды
Команда | Что делает |
| Строит граф, выводит JSON в stdout (или записывает с помощью |
| Запускает интерактивный граф на |
| Запускает MCP-сервер через stdio для Клода и других агентов. |
Предоставление Клоду (MCP)
Claude Desktop — добавьте в claude_desktop_config.json:
{
"mcpServers": {
"mdgraph": {
"command": "npx",
"args": ["-y", "@emmd474/mdgraph", "mcp", "/abs/path/to/your/repo"]
}
}
}Claude Code:
claude mcp add mdgraph -- npx -y @emmd474/mdgraph mcp /abs/path/to/your/repoПерезапустите хост, и Клод получит четыре инструмента:
Инструмент | Назначение |
| Обзор без содержимого: типы, кластеры, количество ссылок, флаги осиротевших/достижимых, рёбра. Дешёвый способ сориентироваться. |
| Сырой markdown одного документа по пути. |
| Всё, что достижимо из входного документа, в порядке чтения — именно тот набор, который нужно загрузить для понимания. |
| Документы, на которые никто не ссылается. |
Суть: агент вызывает get_project_map для ориентации, затем get_context("README.md"), чтобы загрузить только те документы, которые нужны для задачи — вместо того чтобы сбрасывать все .md в контекст.
Публикация (для сопровождающих)
Имя mdgraph занято на npm, поэтому публикация идёт в области видимости вашего аккаунта:
# 1. set the scope to YOUR npm username (edit "name" in package.json if not @emmd474)
npm whoami # confirm you're logged in; else: npm login
npm publish --access publicПакеты с областью видимости по умолчанию приватные, поэтому --access public требуется при первой публикации. Чтобы выпустить обновление, увеличьте версию и опубликуйте снова:
npm version patch # 0.1.0 -> 0.1.1, also creates a git tag
npm publishnpm pack --dry-run показывает, что именно попадёт в пакет (сейчас 7 файлов, ~16 кБ — без node_modules и тестового репозитория, благодаря списку files).
Попробуйте на примере
git clone <this repo> && cd mdgraph && npm install
node cli.mjs view testrepo
node cli.mjs scan testrepoЧто уже работает, а что в планах
Проверено и работает: сканер (извлечение md и вики-ссылок, пропуск блоков кода, типизация по соглашениям, обнаружение осиротевших файлов), браузерный просмотрщик и все четыре MCP-инструмента через живое stdio-соединение.
Далее, примерно в порядке:
Улучшить разбор ссылок — сканер построчный и пропускает блоки кода, но инлайн-код (
`[x](y)`) всё ещё может дать ложную ссылку. Замените на настоящий markdown-AST (remark+unist-util-visit), когда понадобится точность; формат вывода останется прежним.Ручные рёбра — позволить просмотрщику записывать
related:в frontmatter файла, читать его как третий источник рёбер.Теги frontmatter как источник кластеров наряду с папками.
--watchвviewдля отправки обновлений графа через server-sent events.
Лицензия MIT.
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
- FlicenseNot gradedqualityDmaintenanceEnables intelligent navigation and exploration of the Model Context Protocol specification through dynamic markdown tree generation, section search, content retrieval, and upstream synchronization with the official MCP repository.
- AlicenseAqualityDmaintenanceMCP server for markdown files — search, extract sections, list headings, find code blocks across docs.6675MIT
- FlicenseNot gradedqualityAmaintenanceMCP server that enables full-text search and link navigation over Markdown files as a knowledge graph.
- AlicenseNot gradedqualityAmaintenanceEnables reading, writing, and searching a local markdown-based memory store using MCP tools, with safety checks and index consistency.MIT
Related MCP Connectors
Markdown utilities MCP.
MCP server for AgentDocs (agentdocs.eu): read, search, write, comment on & share Markdown docs.
Turn a GitHub repo or docs site into agent-ready context: pack it or search it, over MCP.
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/EMMD474/mdgraph'
If you have feedback or need assistance with the MCP directory API, please join our Discord server