perfgraph 0.1.1 → 0.1.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 +112 -0
- package/dist/mcp/handlers.d.ts.map +1 -1
- package/dist/mcp/handlers.js +2 -1
- package/dist/mcp/handlers.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -15,6 +15,8 @@ npx perfgraph run --url https://example.com --pretty
|
|
|
15
15
|
PerfGraph — not a symptom list, a diagnosis.
|
|
16
16
|
Root cause → impact → fix, in one graph.
|
|
17
17
|
|
|
18
|
+
**[Add to your AI agent →](#mcp-integration)**
|
|
19
|
+
|
|
18
20
|
## Why
|
|
19
21
|
|
|
20
22
|
Lighthouse gives you a score. PerfGraph tells you _why_ it's bad and what to fix first.
|
|
@@ -59,6 +61,8 @@ Full pipeline, one command:
|
|
|
59
61
|
perfgraph run --url https://example.com --pretty
|
|
60
62
|
```
|
|
61
63
|
|
|
64
|
+
> **Want to use PerfGraph from your AI agent?** See [MCP integration](#mcp-integration).
|
|
65
|
+
|
|
62
66
|
Step by step:
|
|
63
67
|
|
|
64
68
|
```bash
|
|
@@ -136,6 +140,114 @@ Generates the final performance report. Accepts a FeatureSet JSON (from `extract
|
|
|
136
140
|
|
|
137
141
|
Starts an MCP stdio server for AI agent integration. No flags. See [AGENTS.md](AGENTS.md) for details.
|
|
138
142
|
|
|
143
|
+
## MCP integration
|
|
144
|
+
|
|
145
|
+
PerfGraph ships as an MCP server. Any AI agent with MCP support can call `perfgraph_analyze` to run the full pipeline and get structured results.
|
|
146
|
+
|
|
147
|
+
### Add to your agent
|
|
148
|
+
|
|
149
|
+
Copy the prompt below and paste it into your AI agent (Claude, Codex, Cursor, Copilot, etc.):
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
Add the PerfGraph MCP server to my configuration. Run:
|
|
153
|
+
|
|
154
|
+
npx -y perfgraph@latest mcp
|
|
155
|
+
|
|
156
|
+
This is a stdio MCP server. Add it as a local MCP server with command: npx -y perfgraph@latest mcp
|
|
157
|
+
The server exposes a perfgraph_analyze tool that takes a URL and returns a full performance report.
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Use `-y` so the first run does not wait for interactive install confirmation. The first startup can take several seconds while `npx` downloads the package and the server loads its browser-performance dependencies. Configure the MCP client startup timeout to 15 seconds.
|
|
161
|
+
|
|
162
|
+
For Codex, use:
|
|
163
|
+
|
|
164
|
+
```toml
|
|
165
|
+
[mcp_servers.perfgraph]
|
|
166
|
+
command = "npx"
|
|
167
|
+
args = ["-y", "perfgraph@latest", "mcp"]
|
|
168
|
+
startup_timeout_sec = 15
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Config snippets
|
|
172
|
+
|
|
173
|
+
<details>
|
|
174
|
+
<summary>Claude (Desktop / Code / CLI)</summary>
|
|
175
|
+
|
|
176
|
+
MCP config can live in multiple places. Easiest — dedicated file:
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
# create the file if it doesn't exist
|
|
180
|
+
cat > ~/.claude/mcp_servers.json << 'EOF'
|
|
181
|
+
{
|
|
182
|
+
"perfgraph": {
|
|
183
|
+
"command": "npx",
|
|
184
|
+
"args": ["-y", "perfgraph@latest", "mcp"]
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
EOF
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Other locations (higher priority overrides lower):
|
|
191
|
+
|
|
192
|
+
- `~/.claude.json` — main config
|
|
193
|
+
- `~/.claude/settings.json` — user global
|
|
194
|
+
- `~/.claude/settings.local.json` — user local
|
|
195
|
+
- `.claude/settings.local.json` — project-specific
|
|
196
|
+
- `.mcp.json` — project-scoped, version-controlled
|
|
197
|
+
|
|
198
|
+
</details>
|
|
199
|
+
|
|
200
|
+
<details>
|
|
201
|
+
<summary>OpenCode</summary>
|
|
202
|
+
|
|
203
|
+
Add to `~/.config/opencode/opencode.json` under `"mcp"`:
|
|
204
|
+
|
|
205
|
+
```json
|
|
206
|
+
{
|
|
207
|
+
"mcp": {
|
|
208
|
+
"perfgraph": {
|
|
209
|
+
"type": "local",
|
|
210
|
+
"command": ["npx", "-y", "perfgraph@latest", "mcp"],
|
|
211
|
+
"enabled": true
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
Or project-scoped — `opencode.json` in project root (overrides global).
|
|
218
|
+
|
|
219
|
+
</details>
|
|
220
|
+
|
|
221
|
+
<details>
|
|
222
|
+
<summary>Cursor</summary>
|
|
223
|
+
|
|
224
|
+
Global: `~/.cursor/cli-config.json` (macOS/Linux) or `$env:USERPROFILE\.cursor\cli-config.json` (Windows).
|
|
225
|
+
Project: `<project>/.cursor/cli.json`.
|
|
226
|
+
|
|
227
|
+
```json
|
|
228
|
+
{
|
|
229
|
+
"mcpServers": {
|
|
230
|
+
"perfgraph": {
|
|
231
|
+
"command": "npx",
|
|
232
|
+
"args": ["-y", "perfgraph@latest", "mcp"]
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
</details>
|
|
239
|
+
|
|
240
|
+
### What the agent gets
|
|
241
|
+
|
|
242
|
+
Once connected, the agent can call `perfgraph_analyze` with a URL and receive:
|
|
243
|
+
|
|
244
|
+
| Output | What's in it |
|
|
245
|
+
| -------------------------------- | -------------------------------------------------------------------- |
|
|
246
|
+
| `insights.json` | Quick summary — scores, LCP element, render-blocking URLs (~5-15 KB) |
|
|
247
|
+
| `report.json` | Full report — issues, causal chains, prioritized fixes |
|
|
248
|
+
| `manifest.json` | File index for navigating raw data |
|
|
249
|
+
| `lighthouse.json` / `trace.json` | Deep-dive data (large, read only when needed) |
|
|
250
|
+
|
|
139
251
|
## Report format
|
|
140
252
|
|
|
141
253
|
The report is a single JSON file. Key sections:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/mcp/handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/mcp/handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAWH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAetD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAmEtD;;GAEG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,gBAAgB,GAAG,IAAI,EACpC,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAuBD;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAU3C;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAkBnC;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAoBhC;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAqBjC;AAMD;;;;;GAKG;AACH,wBAAsB,SAAS,CAC7B,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,gBAAgB,GAAG,IAAI,EACpC,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;IACT,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAChC,CAAC;CACH,CAAC,CA8GD"}
|
package/dist/mcp/handlers.js
CHANGED
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
12
12
|
import { resolve } from 'node:path';
|
|
13
13
|
import { writeManifest } from '../output/manifest.js';
|
|
14
|
-
import { run } from '../collect/orchestrator.js';
|
|
15
14
|
import { loadRunDir } from '../shared/fs-utils.js';
|
|
16
15
|
import { DEFAULT_RUN_OPTIONS } from '../shared/types.js';
|
|
17
16
|
import { normalize } from '../normalize/index.js';
|
|
@@ -88,6 +87,7 @@ function buildIssuesMap(issues) {
|
|
|
88
87
|
* Collect raw performance data from a URL.
|
|
89
88
|
*/
|
|
90
89
|
export async function handleCollect(url, outputDir, runs, onProgress, mobile) {
|
|
90
|
+
const { run } = await import('../collect/orchestrator.js');
|
|
91
91
|
const options = {
|
|
92
92
|
...DEFAULT_RUN_OPTIONS,
|
|
93
93
|
url,
|
|
@@ -190,6 +190,7 @@ export async function handleReport(featuresFile) {
|
|
|
190
190
|
* AI agent consumption.
|
|
191
191
|
*/
|
|
192
192
|
export async function handleRun(url, outputDir, runs, onProgress, mobile) {
|
|
193
|
+
const { run } = await import('../collect/orchestrator.js');
|
|
193
194
|
const baseOutput = outputDir ?? DEFAULT_RUN_OPTIONS.output;
|
|
194
195
|
const options = {
|
|
195
196
|
...DEFAULT_RUN_OPTIONS,
|
package/dist/mcp/handlers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/mcp/handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/mcp/handlers.ts"],"names":[],"mappings":"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"}
|