@hoststack.dev/mcp 0.10.0 → 0.10.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 +19 -19
- package/dist/hoststack-mcp.js +8 -5
- package/dist/hoststack-mcp.js.map +1 -1
- package/dist/index.js +8 -5
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -85,31 +85,31 @@ If `HOSTSTACK_API_KEY` is set in your shell, it gets baked into the snippet; oth
|
|
|
85
85
|
|
|
86
86
|
## Tool inventory
|
|
87
87
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
| Category | Read | Write
|
|
91
|
-
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------- |
|
|
92
|
-
| **projects** | `list_projects`, `get_project` | `create_project`, `update_project`
|
|
93
|
-
| **services** | `list_services`, `get_service`, `get_service_metrics`, `get_service_metrics_history`, `get_service_logs`, `get_service_logs_bulk` | `update_service`, `update_service_config`, `suspend_service`, `resume_service`
|
|
94
|
-
| **deploys** | `list_deploys`, `get_deploy`, `get_deploy_logs`, `diagnose_deploy` | `trigger_deploy`, `cancel_deploy`
|
|
95
|
-
| **environments** | `list_environments` | `create_environment`, `delete_environment`, `promote_deploy`
|
|
96
|
-
| **databases** | `list_databases`, `get_database`, `get_database_cluster`, `query_database` | `update_database`, `upgrade_database_to_ha` (use the dashboard for create/delete/credentials)
|
|
97
|
-
| **volumes** | `list_volumes` | `create_volume`, `update_volume`, `delete_volume`
|
|
98
|
-
| **domains** | `list_domains` | `add_domain`, `verify_domain`, `remove_domain`
|
|
99
|
-
| **dns** | `list_dns_zones`, `list_dns_records`, `get_dns_record` | `create_dns_record`, `update_dns_record`, `delete_dns_record`
|
|
100
|
-
| **env-vars** | `list_env_vars` | `set_env_var`, `delete_env_var`, `bulk_set_env_vars`
|
|
101
|
-
| **cron** | `list_cron_executions`, `get_cron_execution` | —
|
|
102
|
-
| **notifications** | `list_notification_channels` | `create_notification_channel`, `update_notification_channel`, `delete_notification_channel`, `test_notification_channel`
|
|
103
|
-
| **alerts** | `list_alerts` | —
|
|
104
|
-
| **activity-log** | `list_activity_log` | —
|
|
105
|
-
| **meta** | `get_me` | —
|
|
88
|
+
60 tools, grouped by resource:
|
|
89
|
+
|
|
90
|
+
| Category | Read | Write |
|
|
91
|
+
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
|
|
92
|
+
| **projects** | `list_projects`, `get_project` | `create_project`, `update_project` |
|
|
93
|
+
| **services** | `list_services`, `get_service`, `get_service_metrics`, `get_service_metrics_history`, `get_service_logs`, `get_service_logs_bulk` | `create_service`, `create_dev_environment`, `update_service`, `update_service_config`, `suspend_service`, `resume_service` |
|
|
94
|
+
| **deploys** | `list_deploys`, `get_deploy`, `get_deploy_logs`, `diagnose_deploy` | `trigger_deploy`, `cancel_deploy` |
|
|
95
|
+
| **environments** | `list_environments` | `create_environment`, `delete_environment`, `promote_deploy` |
|
|
96
|
+
| **databases** | `list_databases`, `get_database`, `get_database_cluster`, `query_database` | `update_database`, `upgrade_database_to_ha` (use the dashboard for create/delete/credentials) |
|
|
97
|
+
| **volumes** | `list_volumes` | `create_volume`, `update_volume`, `delete_volume` |
|
|
98
|
+
| **domains** | `list_domains` | `add_domain`, `verify_domain`, `remove_domain` |
|
|
99
|
+
| **dns** | `list_dns_zones`, `list_dns_records`, `get_dns_record` | `create_dns_record`, `update_dns_record`, `delete_dns_record` |
|
|
100
|
+
| **env-vars** | `list_env_vars` | `set_env_var`, `delete_env_var`, `bulk_set_env_vars` |
|
|
101
|
+
| **cron** | `list_cron_executions`, `get_cron_execution` | — |
|
|
102
|
+
| **notifications** | `list_notification_channels` | `create_notification_channel`, `update_notification_channel`, `delete_notification_channel`, `test_notification_channel` |
|
|
103
|
+
| **alerts** | `list_alerts` | — |
|
|
104
|
+
| **activity-log** | `list_activity_log` | — |
|
|
105
|
+
| **meta** | `get_me` | — |
|
|
106
106
|
|
|
107
107
|
A few design notes worth knowing as a caller:
|
|
108
108
|
|
|
109
109
|
- **`set_env_var` / `delete_env_var` are key-based.** You don't need an env-var ID; the MCP looks up the existing var by key first, then patches or deletes by ID under the hood.
|
|
110
110
|
- **`list_env_vars` masks secret values.** Anything stored with `is_secret: true` comes back as `••••••`. The masking happens server-side, so you can't accidentally leak a secret to the agent's context window.
|
|
111
111
|
- **`get_service_logs` and `get_deploy_logs` are snapshots.** Streaming logs over MCP isn't supported — re-call the tool to get newer entries. Use the dashboard's `/dashboard/services/:id/logs` for live tails.
|
|
112
|
-
- **No `delete_project
|
|
112
|
+
- **No `delete_project` or `delete_service`.** Destructive cascades are dashboard-only — too risky for an agent to call. Creating is supported via `create_service` / `create_dev_environment`.
|
|
113
113
|
- **Telemetry, hosted only.** When you use `https://hoststack.dev/api/mcp`, we record one row per tool call (tool name, duration, ok/error, SHA-derived hash of input args — never the args themselves) for the analytics page and on-call alerts. Retained 30 days. The local stdio install records nothing.
|
|
114
114
|
|
|
115
115
|
## Environment variables
|
package/dist/hoststack-mcp.js
CHANGED
|
@@ -1940,6 +1940,7 @@ defineTool({
|
|
|
1940
1940
|
|
|
1941
1941
|
// src/tools/projects.ts
|
|
1942
1942
|
import { z as z12 } from "zod";
|
|
1943
|
+
var REGION_IDS = ["eu-central-1", "eu-central-2", "eu-west-1", "us-east-1"];
|
|
1943
1944
|
defineTool({
|
|
1944
1945
|
name: "list_projects",
|
|
1945
1946
|
category: "projects",
|
|
@@ -1972,20 +1973,22 @@ defineTool({
|
|
|
1972
1973
|
"Inputs:",
|
|
1973
1974
|
" - name: human-readable project name (1\u201360 chars).",
|
|
1974
1975
|
" - description (optional): short blurb shown in the dashboard.",
|
|
1975
|
-
' - region (optional): "
|
|
1976
|
+
' - region (optional): "eu-central-1" (Falkenstein) | "eu-central-2" (Nuremberg) | "eu-west-1" (Helsinki) | "us-east-1" (Ashburn). Defaults to eu-central-2.',
|
|
1976
1977
|
"",
|
|
1977
1978
|
"Returns: { project: Project } \u2014 includes the new id and publicId.",
|
|
1978
1979
|
"",
|
|
1979
|
-
'Example: create_project({ name: "billing-api", description: "Stripe webhooks", region: "
|
|
1980
|
+
'Example: create_project({ name: "billing-api", description: "Stripe webhooks", region: "eu-central-1" }) \u2192 { project: { id: 12, publicId: "prj_\u2026", \u2026 } }'
|
|
1980
1981
|
].join("\n"),
|
|
1981
1982
|
input: {
|
|
1982
1983
|
name: z12.string().min(1).max(60).describe("Project name (1\u201360 chars)."),
|
|
1983
1984
|
description: z12.string().max(500).optional().describe("Short description (\u2264500 chars)."),
|
|
1984
|
-
region: z12.enum(
|
|
1985
|
+
region: z12.enum(REGION_IDS).optional().describe("Region: eu-central-1 | eu-central-2 | eu-west-1 | us-east-1.")
|
|
1985
1986
|
},
|
|
1986
1987
|
handler: async (args2, ctx) => {
|
|
1987
1988
|
const teamId = await ctx.resolveTeamId();
|
|
1988
|
-
const input = {
|
|
1989
|
+
const input = {
|
|
1990
|
+
name: args2.name
|
|
1991
|
+
};
|
|
1989
1992
|
if (args2.description !== void 0) input.description = args2.description;
|
|
1990
1993
|
if (args2.region !== void 0) input.region = args2.region;
|
|
1991
1994
|
const response = await ctx.hoststack.projects.create(teamId, input);
|
|
@@ -2290,7 +2293,7 @@ defineTool({
|
|
|
2290
2293
|
const deploy = await ctx.hoststack.deploys.trigger(teamId, service.id);
|
|
2291
2294
|
const deployId = deploy.deploy?.id ?? null;
|
|
2292
2295
|
return respond({
|
|
2293
|
-
summary: `Created AI dev environment "${name}" (${service.publicId})${volumeAttached ? " with a /workspace volume" : ""} \u2014 deploying. Open
|
|
2296
|
+
summary: `Created AI dev environment "${name}" (${service.publicId})${volumeAttached ? " with a /workspace volume" : ""} \u2014 deploying. Open it in the dashboard's Development section (or the service's Terminal tab) once running.`,
|
|
2294
2297
|
data: { service: shapeService(service), volumeAttached, deployId }
|
|
2295
2298
|
});
|
|
2296
2299
|
}
|