naro-mcp 0.15.0 → 0.17.0
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 +34 -30
- package/dist/index.js +889 -84
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -54,27 +54,28 @@ Headless/CI agents can skip `naro login` and set a token instead:
|
|
|
54
54
|
|
|
55
55
|
## Tools
|
|
56
56
|
|
|
57
|
-
| Tool
|
|
58
|
-
|
|
|
59
|
-
| `whoami`, `list_teams`
|
|
60
|
-
| `list_projects`, `get_project`, `link_project`
|
|
61
|
-
| `
|
|
62
|
-
| `
|
|
63
|
-
| `
|
|
64
|
-
| `
|
|
65
|
-
| `
|
|
66
|
-
| `
|
|
67
|
-
| `
|
|
68
|
-
| `
|
|
69
|
-
| `
|
|
70
|
-
| `
|
|
71
|
-
| `
|
|
72
|
-
| `
|
|
73
|
-
| `
|
|
74
|
-
| `
|
|
75
|
-
| `
|
|
76
|
-
| `
|
|
77
|
-
| `
|
|
57
|
+
| Tool | Purpose |
|
|
58
|
+
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
59
|
+
| `whoami`, `list_teams` | Account / team context |
|
|
60
|
+
| `list_projects`, `get_project`, `link_project` | Project discovery + `.naro/project.json` linking |
|
|
61
|
+
| `get_team_usage` | Team usage for a UTC month (`month`, the current one by default): requests, builds and custom domains per day and per project, the plan's `limits`, the enforcement mode, and `summary` (each metric against its limit, and `status` paused/over/near). `team` defaults to the team linked in `directory`, then your only team; otherwise `needsTeam` with the list. Owner, billing and enterprise_viewer only (403 `FORBIDDEN` otherwise). Read-only |
|
|
62
|
+
| `deploy` | Local Next.js build → upload → live URL (preview or `production: true`). Local .env files are never uploaded; unset keys come back as `missingEnvKeys` |
|
|
63
|
+
| `list_deployments`, `get_deployment` | Deployment status / history |
|
|
64
|
+
| `get_build_logs`, `get_runtime_logs` | Debugging failed builds and live workers |
|
|
65
|
+
| `list_environment_variables`, `set_environment_variable`, `remove_environment_variable` | Env management (secret values never returned) |
|
|
66
|
+
| `list_domains`, `add_domain`, `verify_domain`, `remove_domain` | Custom domains: the one CNAME to create (naro connects it within ~5 minutes), plus a re-check that says which of ownership / certificate / routing is still missing. An apex is attached as an apex+www pair by default (`withWww: false` to opt out) |
|
|
67
|
+
| `promote_deployment`, `rollback_deployment` | Production traffic control |
|
|
68
|
+
| `cancel_deployment` | Stops a build that is still running (QUEUED–BUILDING). Does not undo a deployment that already went live — use `rollback_deployment` for that |
|
|
69
|
+
| `enable_database`, `get_database`, `list_tables` | The project's D1 database: turn it on, status/size/limits, schema (verbose: true for columns, indexes and foreign keys) |
|
|
70
|
+
| `execute_sql` | Run SQL (argument `query`, optional `params` for a single statement; several statements run as one transaction). Destructive; under `--read-only` it stays but accepts a single read statement only |
|
|
71
|
+
| `apply_migration`, `list_migrations`, `generate_typescript_types` | Numbered migrations in the `d1_migrations` ledger wrangler also uses (each file all-or-nothing), and TypeScript types for the schema (text only; its `Database` is what `createClient<Database>()` from `naro-js` takes) |
|
|
72
|
+
| `create_table`, `alter_table`, `drop_table`, `create_index`, `drop_index` | Schema changes without SQL: naro renders checked DDL, applies it as one numbered migration (`NNNN_schema_<op>_<table>.sql`) and writes the file like `apply_migration`. `alter_table` adds, renames or drops a column or renames the table. Dropping a table or column needs `confirm`; `alter_table`, `drop_table` and `drop_index` are destructive and hidden under `--read-only`. `dryRun: true` returns the SQL only |
|
|
73
|
+
| `export_database` | SQL dump of the database (`schemaOnly`, `dataOnly`, `tables`): waits up to 5 minutes and returns a signed download link plus `atBookmark`, the point the dump reflects |
|
|
74
|
+
| `restore_database` | Time Travel restore to a `bookmark` or a `timestamp` (last 30 days). Destructive; hidden under `--read-only`. Returns `previousBookmark`, which undoes it |
|
|
75
|
+
| `get_speed_insights`, `set_speed_insights` | Speed Insights: each Web Vital's p75, the selected metric by page, device, browser, operating system, country, element and deployment, or one route's paths; the page load's p75 and the mean of each step (`pageLoad`); production or preview (`environment`); narrowed to one page, country, device, browser or operating system (`path`, `country`, `device`, `browser`, `os`); turn measuring on or off (not destructive: nothing is deleted) |
|
|
76
|
+
| `get_analytics` | Web Analytics: visitors and page views over `range` (24h, 7d or 30d), the trend, and the top 10 pages, referrers, countries, devices, browsers and operating systems by page views; narrowed to one value of each dimension (`path`, `referrer`, `country`, `device`, `browser`, `os`), all given must match. Production only: there is no `environment`, and one is refused. Read-only |
|
|
77
|
+
| `get_preview_protection`, `set_preview_protection` | Preview protection: whether the preview URL (`{subdomain}-preview`) is open to project members only, and whether a bypass secret is set; turn it on or off. **`set_preview_protection` is destructive** (turning protection off publishes unreleased work). Bypass secrets are made in the dashboard or with `naro protection bypass`, never by a tool, so they stay out of the conversation |
|
|
78
|
+
| `get_storage`, `enable_storage`, `list_storage_buckets`, `create_storage_bucket`, `update_storage_bucket`, `delete_storage_bucket`, `list_storage_objects`, `create_storage_signed_url`, `delete_storage_objects` | Naro Storage: on or off, limits, usage, today's operations and whether uploads are stopped, and buckets; turn it on; make, change and remove buckets (`delete_storage_bucket` is destructive: `confirm` is the bucket's name, `empty: true` deletes its objects first; `update_storage_bucket` is destructive on its `public` argument, like `deploy` on `production`: `public: true` needs the same `confirm`); list a folder's files (`search` keeps the names that start with a text; a backend from before it answers `INVALID_REQUEST` — run `naro backend enable` once), make a signed link of up to an hour, and delete files (`delete_storage_objects` is destructive: `confirm` is the bucket's name) — through the control plane, so no service key reaches the MCP process. Files go in through naro-js or `naro storage cp`, not through MCP |
|
|
78
79
|
|
|
79
80
|
Destructive tools say so in their descriptions; agents should confirm with
|
|
80
81
|
the user before calling them. `set_preview_protection` is one of them: turning
|
|
@@ -86,12 +87,15 @@ rather than dictating DNS records from memory, because an apex domain
|
|
|
86
87
|
(`example.com`) cannot take the CNAME a subdomain does. That is also why
|
|
87
88
|
`add_domain` attaches `www.example.com` alongside an apex and redirects the
|
|
88
89
|
apex to it (308) unless `withWww: false` is passed — the same default the web
|
|
89
|
-
dashboard uses. `verify_domain` is not read-only: it records the fresh status
|
|
90
|
-
|
|
91
|
-
polling tightly. Every result is a JSON object
|
|
90
|
+
dashboard uses. `verify_domain` is not read-only: it records the fresh status,
|
|
91
|
+
registers a domain whose CNAME now points at naro, and resets Cloudflare's
|
|
92
|
+
validation backoff, so space calls out instead of polling tightly. Every result is a JSON object
|
|
92
93
|
(`{"success": true, …}` or `{"success": false, "code": "BUILD_FAILED", …}`)
|
|
93
94
|
so agents can chain: deploy → on failure `get_build_logs` → fix code →
|
|
94
|
-
deploy again.
|
|
95
|
+
deploy again. A failed build also names its stage in `buildCode`
|
|
96
|
+
(`INSTALL_FAILED`, `NEXT_VERSION_UNSUPPORTED`, …); a Next.js app whose every
|
|
97
|
+
deployment strategy failed, its own build error included, reports
|
|
98
|
+
`NO_DEPLOYMENT_STRATEGY` with each strategy's failure in the message.
|
|
95
99
|
|
|
96
100
|
## Flags
|
|
97
101
|
|
|
@@ -100,15 +104,15 @@ deploy again.
|
|
|
100
104
|
| `--read-only` | `NARO_MCP_READ_ONLY=1` | Hides every tool that changes something. `execute_sql` stays and the control plane refuses anything but a single read statement |
|
|
101
105
|
| `--features <a,b,…>` | `NARO_MCP_FEATURES` | Only these groups: `account`, `deployments`, `logs`, `env`, `domains`, `git`, `database`, `insights`, `protection`, `storage`. An unknown group is a startup error, not an empty server |
|
|
102
106
|
|
|
103
|
-
Results of the `database` tools, of `get_speed_insights`, of `get_analytics
|
|
107
|
+
Results of the `database` tools, of `get_speed_insights`, of `get_analytics`,
|
|
104
108
|
of every Storage tool that answers bucket rows (`get_storage`, `enable_storage`,
|
|
105
|
-
`list_storage_buckets`, `create_storage_bucket`, `update_storage_bucket`)
|
|
106
|
-
wrapped in `<untrusted-data-…>` boundaries with
|
|
109
|
+
`list_storage_buckets`, `create_storage_bucket`, `update_storage_bucket`) and of
|
|
110
|
+
`list_storage_objects` are wrapped in `<untrusted-data-…>` boundaries with
|
|
107
111
|
a random id per call — rows, identifiers and SQLite error messages are bytes
|
|
108
112
|
your app's users may have written, Speed Insights' paths and element names
|
|
109
113
|
and Analytics' pages and referrer hosts come from any visitor's browser, bucket rows live in the project's database
|
|
110
|
-
(which the app and `naro db query` can write),
|
|
111
|
-
instructions found in them.
|
|
114
|
+
(which the app and `naro db query` can write), file names are whoever uploaded
|
|
115
|
+
the files chose, and an agent must not follow instructions found in them.
|
|
112
116
|
|
|
113
117
|
Pass `--features` once, as one comma-separated list — a second `--features` is
|
|
114
118
|
a startup error rather than "last one wins". The flag beats
|