project-graph-mcp 2.4.0 → 2.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  ![Compact mode — same file, 14 lines total, ↓40% tokens. Agents read and edit this directly.](https://raw.githubusercontent.com/rnd-pro/project-graph-mcp/main/docs/img/explorer-compact.jpg)
12
12
 
13
- Includes a built-in [Web Dashboard](#web-dashboard) (`npx project-graph-mcp serve`) to visualize token metrics and compact ⇄ raw code in real-time.
13
+ The web dashboard has moved to [**mcp-agent-portal**](https://github.com/rnd-pro/mcp-agent-portal) a unified MCP aggregator that includes project-graph-mcp as a child server with full visual UI.
14
14
 
15
15
  > [!TIP]
16
16
  > **18 MCP tools, zero config.** Add one line to your MCP config and the server downloads itself on the next IDE restart.
@@ -240,18 +240,13 @@ db({ action: "dead_tables", path: "src/" })
240
240
 
241
241
  ### Web Dashboard
242
242
 
243
- Every project-graph-mcp instance includes a built-in web UI at `http://localhost:{port}/`:
243
+ > [!NOTE]
244
+ > The web dashboard has moved to [**mcp-agent-portal**](https://github.com/rnd-pro/mcp-agent-portal). Install it with `npx mcp-agent-portal` to get the full visual UI: file tree, code viewer, dependency graph, live monitoring, and marketplace.
244
245
 
245
- - **Multi-project dashboard** — overview of all registered projects with token metrics
246
- - **File tree** navigate project structure
247
- - **Code viewer** — compact/raw toggle with syntax highlighting and per-file compression stats
248
- - **Dependency graph** — visual dependency exploration
249
- - **Health panel** — analysis results
250
- - **Live monitor** — real-time agent activity via WebSocket
251
-
252
-
253
-
254
- With the optional gateway, all projects are accessible under `http://project-graph.local/{project-name}/`.
246
+ ```bash
247
+ # Legacy serve command auto-redirects to mcp-agent-portal:
248
+ npx project-graph-mcp serve .
249
+ ```
255
250
 
256
251
  ### Compression Metrics
257
252
 
@@ -364,18 +359,29 @@ npx project-graph-mcp help # All commands
364
359
 
365
360
  ## MCP Ecosystem
366
361
 
367
- Best used together with [**agent-pool-mcp**](https://www.npmjs.com/package/agent-pool-mcp) — multi-agent task delegation via [Gemini CLI](https://github.com/google-gemini/gemini-cli):
362
+ Best used as part of [**mcp-agent-portal**](https://github.com/rnd-pro/mcp-agent-portal) — a unified MCP aggregator that combines all RND-PRO servers behind a single config entry:
363
+
364
+ ```json
365
+ {
366
+ "mcpServers": {
367
+ "agent-portal": {
368
+ "command": "npx",
369
+ "args": ["-y", "mcp-agent-portal"]
370
+ }
371
+ }
372
+ }
373
+ ```
374
+
375
+ > [!TIP]
376
+ > One entry replaces separate configs for project-graph-mcp, agent-pool-mcp, and any other child servers.
368
377
 
369
- | Layer | project-graph-mcp | agent-pool-mcp |
370
- |-------|-------------------|----------------|
371
- | **Primary IDE agent** | Navigates codebase, runs analysis | Delegates tasks, consults peer |
372
- | **Gemini CLI workers** | Available as MCP tool inside workers | Executes delegated tasks |
378
+ Also works standalone or alongside [**agent-pool-mcp**](https://www.npmjs.com/package/agent-pool-mcp) — multi-agent task delegation:
373
379
 
374
380
  ```bash
375
381
  # Generate configs with correct paths for both servers:
376
382
  npx -y project-graph-mcp config
377
383
  npx -y agent-pool-mcp config
378
- # Merge both outputs into your IDE's MCP config file.
384
+ # Or use mcp-agent-portal which bundles both.
379
385
  ```
380
386
 
381
387
  > [!IMPORTANT]
@@ -391,6 +397,7 @@ npx -y agent-pool-mcp config
391
397
  - [ROADMAP.md](docs/ROADMAP.md) — Feature roadmap and backlog
392
398
 
393
399
  ## Related Projects
400
+ - [mcp-agent-portal](https://github.com/rnd-pro/mcp-agent-portal) — Unified MCP aggregator + web dashboard + AI agent runtime
394
401
  - [agent-pool-mcp](https://github.com/rnd-pro/agent-pool-mcp) — Multi-agent orchestration via Gemini CLI
395
402
  - [Symbiote.js](https://github.com/symbiotejs/symbiote.js) — Isomorphic Reactive Web Components framework
396
403
  - [JSDA-Kit](https://github.com/rnd-pro/jsda-kit) — SSG/SSR toolkit for modern web applications
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "project-graph-mcp",
3
- "version": "2.4.0",
3
+ "version": "2.4.2",
4
4
  "type": "module",
5
5
  "description": "MCP server for AI agents — project graph, code quality analysis, visual web explorer. JS, TS, Python, Go.",
6
6
  "main": "src/network/server.js",
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  // @ctx server.ctx
3
- import e from"node:path";import t from"node:fs";let _v="0.0.0";try{const _d=e.dirname(new URL(import.meta.url).pathname);_v=JSON.parse(t.readFileSync(e.join(_d,"..","..","package.json"),"utf8")).version}catch{}if(process.argv[1]&&(process.argv[1].endsWith("server.js")||process.argv[1].endsWith("project-graph-mcp"))){const[,,o,...r]=process.argv;if("serve"===o){const t=r[0]||".";console.log("\n [redirect] UI has moved to 'agent-portal'.");console.log(" Running: npx agent-portal\n");const{spawn:s}=await import("child_process");s("npx",["agent-portal"],{stdio:"inherit",cwd:e.resolve(t)})}else if(o){const{runCLI:e}=await import("../cli/cli.js");e(o,r)}else if(process.env.PROJECT_GRAPH_BACKEND){const{startStdioServer:e}=await import("../mcp/mcp-server.js");console.error("Starting Project Graph MCP (stdio, direct)..."),e()}else{const{setRoots:e,getWorkspaceRoot:o}=await import("../core/workspace.js"),{ensureBackend:r,startStdioProxy:s}=await import("./backend-lifecycle.js"),{createInterface:i}=await import("node:readline"),n=t.createWriteStream("/tmp/pg-init-debug.log",{flags:"a"});n.write(`\n=== NEW SESSION ${(new Date).toISOString()} ===\n`);
3
+ import e from"node:path";import t from"node:fs";let _v="0.0.0";try{const _d=e.dirname(new URL(import.meta.url).pathname);_v=JSON.parse(t.readFileSync(e.join(_d,"..","..","package.json"),"utf8")).version}catch{}if(process.argv[1]&&(process.argv[1].endsWith("server.js")||process.argv[1].endsWith("project-graph-mcp"))){const[,,o,...r]=process.argv;if("serve"===o){const t=r[0]||".";console.log("\n [redirect] UI has moved to 'mcp-agent-portal'.");console.log(" Running: npx mcp-agent-portal\n");const{spawn:s}=await import("child_process");s("npx",["mcp-agent-portal"],{stdio:"inherit",cwd:e.resolve(t)})}else if(o){const{runCLI:e}=await import("../cli/cli.js");e(o,r)}else if(process.env.PROJECT_GRAPH_BACKEND){const{startStdioServer:e}=await import("../mcp/mcp-server.js");console.error("Starting Project Graph MCP (stdio, direct)..."),e()}else{const{setRoots:e,getWorkspaceRoot:o}=await import("../core/workspace.js"),{ensureBackend:r,startStdioProxy:s}=await import("./backend-lifecycle.js"),{createInterface:i}=await import("node:readline"),n=t.createWriteStream("/tmp/pg-init-debug.log",{flags:"a"});n.write(`\n=== NEW SESSION ${(new Date).toISOString()} ===\n`);
4
4
  const c=i({input:process.stdin,terminal:!1}),a=[];
5
5
  let l=!1,p=null,d=null;
6
6
  const startProxy=async e=>{if(!l){l=!0,c.removeAllListeners("line"),c.close(),n.write(`RESOLVED: ${e}\n`),n.end();try{const t=await r(e);console.error(`[project-graph] Connected to backend on port ${t} (project: ${e})`),s(t,a)}catch(e){console.error(`[project-graph] Singleton failed (${e.message}), falling back to direct stdio`);const{startStdioServer:t}=await import("../mcp/mcp-server.js");t(a)}}};c.on("line",t=>{try{const r=JSON.parse(t);if(n.write(`IN: ${r.method||`response:${r.id}`}\n`),"initialize"===r.method){d=r.id,r.params?.roots?.length>0&&(e(r.params.roots),n.write("ROOTS from initialize.params\n"));