Skip to main content
Glama

mdgraph

Escanea el markdown de un repositorio para convertirlo en un grafo, visualízalo en el navegador y expónlo a Claude (o cualquier host MCP) como índice de navegación.

Un único modelo de datos — { nodes, edges } — con tres consumidores:

              scan  (the only hard part)
                 │  emits { nodes, edges }
      ┌──────────┼───────────┐
      ▼          ▼           ▼
   graph.json  browser     MCP server
   (a file)   (viewer)   (agents read it)

Los análisis, la alcanzabilidad y los huérfanos se derivan todos del modelo en el momento de la lectura. Los nodos y las aristas se mantienen inertes.

El modelo

node = { id, label, path, type, cluster, content }   // type: root | ai | doc
edge = { source, target, sourceLine, context }        // context = the line the link lives on

type se asigna por convención de nombre de archivo (README.md → root, CLAUDE.md/AGENTS.md/*.mdc → ai, de lo contrario, doc). Las aristas provienen de enlaces reales en el texto[x](./y.md) estándar y [[wikilinks]] — no de la pertenencia a carpetas, así que un archivo en docs/ que enlaza a través del árbol sigue conectando a través del árbol. Las carpetas solo determinan cluster (color/agrupación).

Related MCP server: mcp-server-markdown

Instalación y ejecución

No hace falta instalación — ejecútalo directamente con 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

O instálalo globalmente para tener un comando mdgraph simple:

npm install -g @emmd474/mdgraph
mdgraph view ./my-repo
mdgraph scan ./my-repo --out graph.json

dir usa por defecto el directorio actual. view acepta --port (por defecto 4173).

Comandos

Comando

Qué hace

mdgraph scan [dir]

Construye el grafo, imprime JSON en stdout (o escríbelo con --out).

mdgraph view [dir]

Sirve el grafo interactivo en localhost:4173; vuelve a escanear al refrescar.

mdgraph mcp [dir]

Ejecuta el servidor MCP sobre stdio, para Claude y otros agentes.

Exponer a Claude (MCP)

Claude Desktop — añádelo a 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

Reinicia el host y Claude recibe cuatro herramientas:

Herramienta

Propósito

get_project_map

Resumen sin contenido: tipos, clústeres, recuentos de enlaces, indicadores de huérfano/alcanzable, aristas. La forma económica de orientarse.

read_doc

Markdown sin procesar de un documento por ruta.

get_context

Todo lo alcanzable desde un documento de entrada, en orden de lectura: el conjunto exacto a cargar para entenderlo. includeContent: true incluye el markdown.

find_orphans

Documentos a los que nada enlaza.

La idea: un agente llama a get_project_map para orientarse y luego a get_context("README.md") para traer solo los documentos que necesita la tarea — en lugar de volcar todos los .md al contexto.

Publicación (para mantenedores)

El nombre mdgraph está ocupado en npm, así que esto se publica con scope bajo tu cuenta:

# 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

Los paquetes con scope son privados por defecto, por lo que --access public es necesario la primera vez. Para publicar una actualización, sube la versión y publica de nuevo:

npm version patch   # 0.1.0 -> 0.1.1, also creates a git tag
npm publish

npm pack --dry-run muestra exactamente lo que se publica (actualmente 7 archivos, ~16 kB — sin node_modules, sin repo de prueba, gracias a la lista de permitidos files).

Pruébalo con el ejemplo

git clone <this repo> && cd mdgraph && npm install
node cli.mjs view testrepo
node cli.mjs scan testrepo

Lo que está hecho vs. lo que viene

Probado y funcionando: el escáner (extracción de md + wikilinks, omisión de bloques de código, tipado por convención, detección de huérfanos), el visor del navegador y las cuatro herramientas MCP mediante un handshake stdio real.

A continuación, aproximadamente en orden:

  • Endurecer el análisis de enlaces — el escáner se basa en líneas y omite bloques delimitados, pero un tramo de código en línea (`[x](y)`) aún puede producir un enlace falso. Sustituye por un AST de markdown real (remark + unist-util-visit) cuando quieras precisión; la forma emitida sigue siendo idéntica.

  • Aristas manuales — permitir que el visor escriba related: en el frontmatter de un archivo, leído como tercera fuente de aristas.

  • Etiquetas de frontmatter como fuente de clúster junto a las carpetas.

  • --watch en view para enviar actualizaciones del grafo mediante eventos enviados por el servidor.

Con licencia MIT.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

View all related MCP servers

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.

View all MCP Connectors

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/EMMD474/mdgraph'

If you have feedback or need assistance with the MCP directory API, please join our Discord server