@mintmcp/hosted-cli 0.0.11 → 0.0.13

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
@@ -1,14 +1,15 @@
1
1
  # MintMCP hosted-cli
2
2
 
3
- This tool deploys MCP servers to MintMCP.
3
+ This tool deploys MCP servers from local source code to MintMCP. If the server is already packaged
4
+ in a registry such as npm or PyPI, consider using the [MintMCP web UI for deploying packaged
5
+ servers](https://mintmcp.com/docs/mcp-connectors-hosted).
4
6
 
5
7
  ## Javascript / Typescript Server
6
8
 
7
9
  ### Prerequisites
8
10
 
9
- * The server must serve the MCP streamable HTTP protocol on port 8000 at `/mcp`. See the [Streamable
10
- HTTP section of the modelcontextprotocol/typescript-sdk][typescript-server] for instructions.
11
- * The default server startup command is `npm run build && npm run start`. If your server requires a different command, pass `--startup-command "<command>"` to `deploy` when you run them below.
11
+ * The server must implement the MCP stdio transport (HTTP streamable is also supported, see the section below).
12
+ * The default server startup command is `npm install && npm run build && npm run start`. If your server requires a different command, pass `--startup-command "<command>"` to `deploy` when you run them below.
12
13
 
13
14
  ### Deploy
14
15
 
@@ -30,19 +31,15 @@ Upon successful upload, this prints a server management URL where you can:
30
31
  Rerun the command to upload changes as a new revision. The old revision will continue serving
31
32
  requests until the new revision starts up successfully.
32
33
 
33
- ### Troubleshooting
34
-
35
- TODO: Explain what to do if you need `npm install`.
36
-
37
34
  ## Python FastMCP Server
38
35
 
39
36
  ### Prerequisites
40
37
 
41
- The server must serve the MCP streamable HTTP protocol on port 8000 at `/mcp`. You can typically do this by adding at the bottom of your main server file:
38
+ The server must implement the MCP stdio transport (HTTP streamable is also supported, see the section below). You can typically do this by adding at the bottom of your main server file:
42
39
 
43
40
  ```python
44
41
  if __name__ == "__main__":
45
- mcp.run(transport="http", host="127.0.0.1", port=8000)
42
+ mcp.run(transport="stdio")
46
43
  ```
47
44
 
48
45
  ### Deploy
@@ -76,8 +73,8 @@ requests until the new revision starts up successfully.
76
73
 
77
74
  ### Prerequisites
78
75
 
79
- The server must serve the MCP streamable HTTP protocol on port 8000 at `/mcp`. Most MCP server
80
- frameworks should be able to do this. Check your framework's documentation.
76
+ The server must implement the MCP stdio transport (HTTP streamable is also supported, see the section below). Most MCP server frameworks should be able to do
77
+ this. Check your framework's documentation.
81
78
 
82
79
  ### Deploy
83
80
 
@@ -99,4 +96,17 @@ Upon successful upload, this prints a server management URL where you can:
99
96
  Rerun the command to upload changes as a new revision. The old revision will continue serving
100
97
  requests until the new revision starts up successfully.
101
98
 
102
- [typescript-server]: https://github.com/modelcontextprotocol/typescript-sdk?tab=readme-ov-file#streamable-http
99
+ ## Environment Variables
100
+
101
+ You can set environment variables for your server at the server management URL. Click "Edit" in the "Server Configuration" section and then select "Environment Variables".
102
+
103
+ ![Environment Variable Editor](https://storage.googleapis.com/lutra-2407-public/mintmcp-doc-shots/940f9dc8cd2d067d7e6d5b3f3f2eb5ae700950ab0f515edb61312b108b147644.png)
104
+
105
+ Global and Per-User environment variables are supported:
106
+
107
+ * Global: Variable applies to all users across your organization.
108
+ * Per-User: Each user will be prompted for values the first time they access the server.
109
+
110
+ ## HTTP Streamable Transport
111
+
112
+ You can also deploy servers that implement the HTTP streamable MCP transport on MintMCP. They must serve at "/mcp" on port 8000. Simply pass `-t http` to the `deploy` command to tell MintMCP to talk to the server using HTTP streamable.
package/dist/api.d.ts CHANGED
@@ -25,10 +25,43 @@ export declare const EnvUpdateValueSchema: z.ZodDiscriminatedUnion<"type", [z.Zo
25
25
  isSecret: boolean;
26
26
  }>]>;
27
27
  export type EnvUpdateValue = z.infer<typeof EnvUpdateValueSchema>;
28
+ export declare const HostedTransportSchema: z.ZodDefault<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
29
+ type: z.ZodLiteral<"http">;
30
+ path: z.ZodString;
31
+ }, "strip", z.ZodTypeAny, {
32
+ path: string;
33
+ type: "http";
34
+ }, {
35
+ path: string;
36
+ type: "http";
37
+ }>, z.ZodObject<{
38
+ type: z.ZodLiteral<"stdio">;
39
+ }, "strip", z.ZodTypeAny, {
40
+ type: "stdio";
41
+ }, {
42
+ type: "stdio";
43
+ }>]>>;
44
+ export type HostedTransport = z.infer<typeof HostedTransportSchema>;
28
45
  export declare const UserConfigUpdateSchema: z.ZodObject<{
29
46
  userGivenName: z.ZodString;
30
47
  image: z.ZodDefault<z.ZodString>;
31
48
  command: z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>;
49
+ transport: z.ZodDefault<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
50
+ type: z.ZodLiteral<"http">;
51
+ path: z.ZodString;
52
+ }, "strip", z.ZodTypeAny, {
53
+ path: string;
54
+ type: "http";
55
+ }, {
56
+ path: string;
57
+ type: "http";
58
+ }>, z.ZodObject<{
59
+ type: z.ZodLiteral<"stdio">;
60
+ }, "strip", z.ZodTypeAny, {
61
+ type: "stdio";
62
+ }, {
63
+ type: "stdio";
64
+ }>]>>;
32
65
  cpu: z.ZodDefault<z.ZodNumber>;
33
66
  memoryMiB: z.ZodDefault<z.ZodNumber>;
34
67
  urlPath: z.ZodDefault<z.ZodString>;
@@ -83,6 +116,12 @@ export declare const UserConfigUpdateSchema: z.ZodObject<{
83
116
  userGivenName: string;
84
117
  image: string;
85
118
  command: string | string[];
119
+ transport: {
120
+ path: string;
121
+ type: "http";
122
+ } | {
123
+ type: "stdio";
124
+ };
86
125
  cpu: number;
87
126
  memoryMiB: number;
88
127
  urlPath: string;
@@ -114,6 +153,12 @@ export declare const UserConfigUpdateSchema: z.ZodObject<{
114
153
  name: string;
115
154
  }[];
116
155
  image?: string | undefined;
156
+ transport?: {
157
+ path: string;
158
+ type: "http";
159
+ } | {
160
+ type: "stdio";
161
+ } | undefined;
117
162
  cpu?: number | undefined;
118
163
  memoryMiB?: number | undefined;
119
164
  urlPath?: string | undefined;
@@ -149,6 +194,12 @@ declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
149
194
  name: string;
150
195
  }[];
151
196
  image?: string | undefined;
197
+ transport?: {
198
+ path: string;
199
+ type: "http";
200
+ } | {
201
+ type: "stdio";
202
+ } | undefined;
152
203
  cpu?: number | undefined;
153
204
  memoryMiB?: number | undefined;
154
205
  urlPath?: string | undefined;
@@ -166,7 +217,13 @@ declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
166
217
  hostedId: string;
167
218
  update: {
168
219
  userGivenName?: string | undefined;
169
- command?: string[] | undefined;
220
+ command?: string | string[] | undefined;
221
+ transport?: {
222
+ path: string;
223
+ type: "http";
224
+ } | {
225
+ type: "stdio";
226
+ } | undefined;
170
227
  secretDataZipGcsPath?: string | undefined;
171
228
  };
172
229
  };
package/dist/api.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAQA,OAAO,CAAC,MAAM,KAAK,CAAC;AAKpB,eAAO,MAAM,gBAAgB,EAAG,SAAkB,CAAC;AACnD,eAAO,MAAM,cAAc,qEAOL,CAAC;AACvB,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;IAU/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBjC,CAAC;AAKH,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCb,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAQA,OAAO,CAAC,MAAM,KAAK,CAAC;AAKpB,eAAO,MAAM,gBAAgB,EAAG,SAAkB,CAAC;AACnD,eAAO,MAAM,cAAc,qEAOL,CAAC;AACvB,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;IAU/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;KAWQ,CAAC;AAC3C,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBjC,CAAC;AAKH,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCb,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC"}
package/dist/api.js CHANGED
@@ -24,12 +24,25 @@ export const EnvUpdateValueSchema = z.discriminatedUnion("type", [
24
24
  isSecret: z.boolean(),
25
25
  }),
26
26
  ]);
27
+ export const HostedTransportSchema = z
28
+ .discriminatedUnion("type", [
29
+ z.object({
30
+ type: z.literal("http"),
31
+ // URL path where MCP is served.
32
+ path: z.string(),
33
+ }),
34
+ z.object({
35
+ type: z.literal("stdio"),
36
+ }),
37
+ ])
38
+ .default({ type: "http", path: "/mcp" });
27
39
  export const UserConfigUpdateSchema = z.object({
28
40
  userGivenName: z.string().min(1),
29
41
  image: z
30
42
  .string()
31
- .default("nikolaik/python-nodejs@sha256:d481c61b10a131cb0ae3dfc09adf3beaff76557597010914df48ff1fe1dacbf1"),
43
+ .default("nikolaik/python-nodejs@sha256:1dcaf296688723fbe79c400e1dda743c8e8a8b2812ef4b0af70779914a9cec3c"),
32
44
  command: z.union([z.string(), z.array(z.string())]),
45
+ transport: HostedTransportSchema,
33
46
  cpu: z.number().default(1),
34
47
  memoryMiB: z.number().default(4096),
35
48
  urlPath: z.string().default("/mcp"),
@@ -54,7 +67,8 @@ const appRouter = router({
54
67
  hostedId: HostedIdSchema,
55
68
  update: z.object({
56
69
  userGivenName: z.string().optional(),
57
- command: z.array(z.string()).optional(),
70
+ command: z.union([z.string(), z.array(z.string())]).optional(),
71
+ transport: HostedTransportSchema.optional(),
58
72
  secretDataZipGcsPath: z.string().optional(),
59
73
  }),
60
74
  }))
package/dist/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAO1E,OAAO,EACL,KAAK,SAAS,EAGf,MAAM,UAAU,CAAC;AAElB,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACpE,MAAM,MAAM,yBAAyB,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAU1E,OAAO,EACL,KAAK,SAAS,EAIf,MAAM,UAAU,CAAC;AASlB,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACpE,MAAM,MAAM,yBAAyB,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC"}
package/dist/index.js CHANGED
@@ -3,12 +3,20 @@ import { Command, InvalidArgumentError } from "@commander-js/extra-typings";
3
3
  import { createTRPCClient, httpLink } from "@trpc/client";
4
4
  import archiver from "archiver";
5
5
  import * as fs from "fs";
6
+ import { readFileSync } from "fs";
6
7
  import keytar from "keytar";
7
8
  import * as path from "path";
9
+ import { dirname, join } from "path";
8
10
  import superjson from "superjson";
11
+ import { fileURLToPath } from "url";
9
12
  import z, { ZodSchema } from "zod";
10
13
  import { HostedIdSchema, UserConfigUpdateSchema, } from "./api.js";
14
+ const __filename = fileURLToPath(import.meta.url);
15
+ const __dirname = dirname(__filename);
16
+ const packageJson = JSON.parse(readFileSync(join(__dirname, "..", "package.json"), "utf-8"));
17
+ const version = packageJson.version;
11
18
  const EnvSchema = z.enum(["staging", "production"]);
19
+ const TransportSchema = z.enum(["http", "stdio"]);
12
20
  const TRPC_API_URL = {
13
21
  staging: "http://localhost:3000/api.trpc",
14
22
  production: "https://app.mintmcp.com/api.trpc",
@@ -202,18 +210,32 @@ async function uploadData(client, mntDataDir) {
202
210
  console.log("File uploaded.");
203
211
  return { secretDataZipGcsPath: upload.secretDataZipGcsPath };
204
212
  }
205
- function commandFromStartupCommand(startupCommand) {
206
- return ["bash", "-c", startupCommand];
213
+ const DEPLOY_OPTIONS_NEW_SERVER_DEFAULTS = {
214
+ transport: "stdio",
215
+ startupCommand: "npm install && npm run build && npm run start",
216
+ mntDataDir: ".",
217
+ };
218
+ function toHostedTransport(transport) {
219
+ switch (transport) {
220
+ case "http":
221
+ return { type: "http", path: "/mcp" };
222
+ case "stdio":
223
+ return { type: "stdio" };
224
+ }
207
225
  }
208
226
  async function createNew(client, base, options) {
209
- const { name, startupCommand = "npm run build && npm run start", mntDataDir = ".", } = options;
227
+ const { name, transport, startupCommand, mntDataDir = ".", } = {
228
+ ...DEPLOY_OPTIONS_NEW_SERVER_DEFAULTS,
229
+ ...options,
230
+ };
210
231
  if (name == undefined) {
211
232
  throw new Error("--name is a required option when creating a new server");
212
233
  }
213
234
  const upload = await uploadData(client, path.join(base, mntDataDir));
214
235
  const config = UserConfigUpdateSchema.parse({
215
236
  userGivenName: name,
216
- command: commandFromStartupCommand(startupCommand),
237
+ command: startupCommand,
238
+ transport: toHostedTransport(transport),
217
239
  replaceEnv: [],
218
240
  secretDataZipGcsPath: upload.secretDataZipGcsPath,
219
241
  });
@@ -235,8 +257,9 @@ async function updateExisting(client, base, config, options) {
235
257
  hostedId: config.hostedId,
236
258
  update: {
237
259
  userGivenName: options.name,
238
- command: options.startupCommand
239
- ? commandFromStartupCommand(options.startupCommand)
260
+ command: options.startupCommand,
261
+ transport: options.transport
262
+ ? toHostedTransport(options.transport)
240
263
  : undefined,
241
264
  secretDataZipGcsPath: upload.secretDataZipGcsPath,
242
265
  },
@@ -245,16 +268,20 @@ async function updateExisting(client, base, config, options) {
245
268
  }
246
269
  const program = new Command()
247
270
  .name("hosted")
248
- .description("Control hosted servers on MintMCP")
249
- .version("0.0.1")
250
- .option("-e, --env <environment>", "target environment", argParser(EnvSchema), "production")
251
- .option("-b, --base <base>", "base directory for config and data", ".");
271
+ .description("Control hosted servers on MintMCP.")
272
+ .version(version)
273
+ .option("-e, --env <environment>", "Target environment.", argParser(EnvSchema), "production")
274
+ .option("-b, --base <base>", "base directory for config and data.", ".");
275
+ function makeDefaultMessage(optionName) {
276
+ return `Defaults to '${DEPLOY_OPTIONS_NEW_SERVER_DEFAULTS[optionName]}' for new servers.`;
277
+ }
252
278
  program
253
279
  .command("deploy")
254
280
  .description("Create or update a hosted server.")
255
- .option("-n, --name <name>", "Name of the hosted server")
256
- .option("--startup-command <command>", "Command that runs on hosted container to start the server (runs in bash).")
257
- .option("--mnt-data-dir <directory>", "Directory to copy to /mnt on the server.")
281
+ .option("-n, --name <name>", "Name of the hosted server. Required for new servers.")
282
+ .option("-t, --transport <transport>", `Transport (stdio or http). ${makeDefaultMessage("transport")}`, argParser(TransportSchema))
283
+ .option("--startup-command <command>", `Command that runs on hosted container to start the server (runs in bash). ${makeDefaultMessage("startupCommand")}`)
284
+ .option("--mnt-data-dir <directory>", `Directory to copy to /mnt on the server. ${makeDefaultMessage("mntDataDir")}`)
258
285
  .action(async (options) => {
259
286
  const { env, base } = program.opts();
260
287
  const client = await makeAuthenticatedClient(env);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,EAEL,cAAc,EACd,sBAAsB,GACvB,MAAM,UAAU,CAAC;AAKlB,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;AAGpD,MAAM,YAAY,GAAwB;IACxC,OAAO,EAAE,gCAAgC;IACzC,UAAU,EAAE,kCAAkC;CAC/C,CAAC;AAEF,MAAM,cAAc,GAAwB;IAC1C,OAAO,EAAE,uBAAuB;IAChC,UAAU,EAAE,yBAAyB;CACtC,CAAC;AAEF,MAAM,UAAU,GAAwB;IACtC,OAAO,EAAE,mCAAmC;IAC5C,UAAU,EAAE,mCAAmC;CAChD,CAAC;AAEF,6DAA6D;AAC7D,MAAM,mBAAmB,GAAwB;IAC/C,OAAO,EAAE,8BAA8B;IACvC,UAAU,EAAE,sBAAsB;CACnC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,QAAQ,EAAE,cAAc;IAExB,4EAA4E;IAC5E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;CACvB,CAAC,CAAC;AAGH,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;CAC3B,CAAC,CAAC;AAIH,KAAK,UAAU,WAAW,CAAC,GAAQ;IACjC,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAEjC,MAAM,kBAAkB,GAAG,MAAM,KAAK,CACpC,yDAAyD,EACzD;QACE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,mCAAmC;SACpD;QACD,IAAI,EAAE,IAAI,eAAe,CAAC;YACxB,SAAS,EAAE,QAAQ;SACpB,CAAC;KACH,CACF,CAAC;IAEF,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,8BAA8B,MAAM,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAChE,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAQ,CAAC;IAC5D,MAAM,EACJ,WAAW,EAAE,UAAU,EACvB,yBAAyB,EAAE,uBAAuB,EAClD,QAAQ,GAAG,CAAC,GACb,GAAG,UAAU,CAAC;IAEf,OAAO,CAAC,GAAG,CAAC,0BAA0B,uBAAuB,EAAE,CAAC,CAAC;IAEjE,yBAAyB;IACzB,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,WAAW,EAAE,QAAQ,IAAI,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,UAAU,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,MAAM,KAAK,CAC/B,qDAAqD,EACrD;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,mCAAmC;aACpD;YACD,IAAI,EAAE,IAAI,eAAe,CAAC;gBACxB,UAAU,EAAE,8CAA8C;gBAC1D,WAAW,EAAE,UAAU;gBACvB,SAAS,EAAE,QAAQ;aACpB,CAAC;SACH,CACF,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;YACtB,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAQ,CAAC;QAEtD,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACpB,IAAI,SAAS,CAAC,KAAK,KAAK,uBAAuB,EAAE,CAAC;gBAChD,SAAS;YACX,CAAC;iBAAM,IAAI,SAAS,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;gBAC3C,iCAAiC;gBACjC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;oBAClC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC5B,CAAC,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,0BAA0B,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QAED,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAChE,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACrE,CAAC;YACD,OAAO;gBACL,WAAW,EAAE,SAAS,CAAC,YAAY;gBACnC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK;gBAC3B,cAAc,EAAE,SAAS,CAAC,eAAe;aAC1C,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAC5C,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,GAAQ;IAC7B,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;IAClE,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACnD,OAAO,aAAa,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAC;YACtE,iFAAiF;YACjF,MAAM,MAAM,CAAC,cAAc,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,MAAM,CAAC,WAAW,CAAC,mBAAmB,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,GAAQ;IAC7C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IAEhC,uEAAuE;IACvE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;IAEzE,OAAO,gBAAgB,CAAY;QACjC,KAAK,EAAE;YACL,QAAQ,CAAC;gBACP,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC;gBACtB,WAAW,EAAE,SAAS;gBACtB,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE;iBAC5C;aACF,CAAC;SACH;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAI,MAAoB;IACxC,OAAO,CAAC,KAAa,EAAK,EAAE;QAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB,CAAC;QACD,MAAM,IAAI,oBAAoB,CAC5B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACzD,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,UAAkB;IAC/C,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE;YAC9B,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;SACnB,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACnC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACrB,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,wBAAwB,SAAS,CAAC,MAAM,eAAe,CAAC,CAAC;YACrE,OAAO,CAAC,SAAS,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAY,EAAE,EAAE;YACnC,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACvE,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,MAAM,CACJ,IAAI,KAAK,CACP,aAAa,UAAU,uCAAuC,CAC/D,CACF,CAAC;YACF,OAAO;QACT,CAAC;QACD,OAAO,CAAC,QAAQ,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,MAA2D,EAC3D,UAAkB;IAElB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC/B,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC;QAC7D,QAAQ,EAAE,UAAU;KACrB,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IAChC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACzD,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE;QACjD,IAAI,EAAE,iBAAiB;KACxB,CAAC,CAAC;IACH,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9B,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE;QAC7C,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,QAAQ;KACf,CAAC,CAAC;IACH,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,kBAAkB,cAAc,CAAC,MAAM,IAAI,cAAc,CAAC,UAAU,EAAE,CACvE,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,EAAE,CAAC;AAC/D,CAAC;AAQD,SAAS,yBAAyB,CAAC,cAAsB;IACvD,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AACxC,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,MAA2D,EAC3D,IAAY,EACZ,OAAsB;IAEtB,MAAM,EACJ,IAAI,EACJ,cAAc,GAAG,gCAAgC,EACjD,UAAU,GAAG,GAAG,GACjB,GAAG,OAAO,CAAC;IACZ,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;IAErE,MAAM,MAAM,GAAG,sBAAsB,CAAC,KAAK,CAAC;QAC1C,aAAa,EAAE,IAAI;QACnB,OAAO,EAAE,yBAAyB,CAAC,cAAc,CAAC;QAClD,UAAU,EAAE,EAAE;QACd,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;KACD,CAAC,CAAC;IAEpD,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC;QAC7D,MAAM;KACP,CAAC,CAAC;IAEH,OAAO;QACL,QAAQ,EAAE,aAAa,CAAC,QAAQ;QAChC,UAAU;KACX,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,MAA2D,EAC3D,IAAY,EACZ,MAAoB,EACpB,OAAsB;IAEtB,MAAM,SAAS,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAChC,IAAI,OAAO,CAAC,UAAU,IAAI,SAAS,EAAE,CAAC;QACpC,SAAS,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAC5C,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,UAAU,CAC7B,MAAM,EACN,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,CACtC,CAAC;IACF,MAAM,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC;QAC9C,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE;YACN,aAAa,EAAE,OAAO,CAAC,IAAI;YAC3B,OAAO,EAAE,OAAO,CAAC,cAAc;gBAC7B,CAAC,CAAC,yBAAyB,CAAC,OAAO,CAAC,cAAc,CAAC;gBACnD,CAAC,CAAC,SAAS;YACb,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;SAClD;KACF,CAAC,CAAC;IACH,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;KAC1B,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,mCAAmC,CAAC;KAChD,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CACL,yBAAyB,EACzB,oBAAoB,EACpB,SAAS,CAAC,SAAS,CAAC,EACpB,YAAY,CACb;KACA,MAAM,CAAC,mBAAmB,EAAE,oCAAoC,EAAE,GAAG,CAAC,CAAC;AAE1E,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,CAAC;KACxD,MAAM,CACL,6BAA6B,EAC7B,2EAA2E,CAC5E;KACA,MAAM,CACL,4BAA4B,EAC5B,0CAA0C,CAC3C;KACA,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAElD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IAE7D,IAAI,kBAAgC,CAAC;IACrC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACvD,kBAAkB,GAAG,MAAM,cAAc,CACvC,MAAM,EACN,IAAI,EACJ,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAChD,OAAO,CACR,CAAC;QACF,OAAO,CAAC,GAAG,CACT,WAAW,cAAc,CAAC,GAAG,CAAC,WAAW,kBAAkB,CAAC,QAAQ,EAAE,CACvE,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,kBAAkB,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CACT,WAAW,cAAc,CAAC,GAAG,CAAC,WAAW,kBAAkB,CAAC,QAAQ,EAAE,CACvE,CAAC;IACJ,CAAC;IACD,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mintmcp/hosted-cli",
3
- "version": "0.0.11",
3
+ "version": "0.0.13",
4
4
  "description": "Control hosted servers on MintMCP.",
5
5
  "main": "src/index.ts",
6
6
  "type": "module",
package/src/api.ts CHANGED
@@ -35,14 +35,29 @@ export const EnvUpdateValueSchema = z.discriminatedUnion("type", [
35
35
  ]);
36
36
  export type EnvUpdateValue = z.infer<typeof EnvUpdateValueSchema>;
37
37
 
38
+ export const HostedTransportSchema = z
39
+ .discriminatedUnion("type", [
40
+ z.object({
41
+ type: z.literal("http"),
42
+ // URL path where MCP is served.
43
+ path: z.string(),
44
+ }),
45
+ z.object({
46
+ type: z.literal("stdio"),
47
+ }),
48
+ ])
49
+ .default({ type: "http", path: "/mcp" });
50
+ export type HostedTransport = z.infer<typeof HostedTransportSchema>;
51
+
38
52
  export const UserConfigUpdateSchema = z.object({
39
53
  userGivenName: z.string().min(1),
40
54
  image: z
41
55
  .string()
42
56
  .default(
43
- "nikolaik/python-nodejs@sha256:d481c61b10a131cb0ae3dfc09adf3beaff76557597010914df48ff1fe1dacbf1",
57
+ "nikolaik/python-nodejs@sha256:1dcaf296688723fbe79c400e1dda743c8e8a8b2812ef4b0af70779914a9cec3c",
44
58
  ),
45
59
  command: z.union([z.string(), z.array(z.string())]),
60
+ transport: HostedTransportSchema,
46
61
  cpu: z.number().default(1),
47
62
  memoryMiB: z.number().default(4096),
48
63
  urlPath: z.string().default("/mcp"),
@@ -72,7 +87,8 @@ const appRouter = router({
72
87
  hostedId: HostedIdSchema,
73
88
  update: z.object({
74
89
  userGivenName: z.string().optional(),
75
- command: z.array(z.string()).optional(),
90
+ command: z.union([z.string(), z.array(z.string())]).optional(),
91
+ transport: HostedTransportSchema.optional(),
76
92
  secretDataZipGcsPath: z.string().optional(),
77
93
  }),
78
94
  }),
package/src/index.ts CHANGED
@@ -5,22 +5,36 @@ import { createTRPCClient, httpLink } from "@trpc/client";
5
5
  import type { inferRouterInputs, inferRouterOutputs } from "@trpc/server";
6
6
  import archiver from "archiver";
7
7
  import * as fs from "fs";
8
+ import { readFileSync } from "fs";
8
9
  import keytar from "keytar";
9
10
  import * as path from "path";
11
+ import { dirname, join } from "path";
10
12
  import superjson from "superjson";
13
+ import { fileURLToPath } from "url";
11
14
  import z, { ZodSchema } from "zod";
12
15
  import {
13
16
  type AppRouter,
14
17
  HostedIdSchema,
18
+ type HostedTransport,
15
19
  UserConfigUpdateSchema,
16
20
  } from "./api.js";
17
21
 
22
+ const __filename = fileURLToPath(import.meta.url);
23
+ const __dirname = dirname(__filename);
24
+ const packageJson = JSON.parse(
25
+ readFileSync(join(__dirname, "..", "package.json"), "utf-8"),
26
+ );
27
+ const version = packageJson.version;
28
+
18
29
  export type CliClientAppRouterInputs = inferRouterInputs<AppRouter>;
19
30
  export type CliClientAppRouterOutputs = inferRouterOutputs<AppRouter>;
20
31
 
21
32
  const EnvSchema = z.enum(["staging", "production"]);
22
33
  type Env = z.infer<typeof EnvSchema>;
23
34
 
35
+ const TransportSchema = z.enum(["http", "stdio"]);
36
+ type Transport = z.infer<typeof TransportSchema>;
37
+
24
38
  const TRPC_API_URL: Record<Env, string> = {
25
39
  staging: "http://localhost:3000/api.trpc",
26
40
  production: "https://app.mintmcp.com/api.trpc",
@@ -264,12 +278,24 @@ async function uploadData(
264
278
 
265
279
  interface DeployOptions {
266
280
  name?: string;
281
+ transport?: Transport;
267
282
  startupCommand?: string;
268
283
  mntDataDir?: string;
269
284
  }
270
285
 
271
- function commandFromStartupCommand(startupCommand: string): string[] {
272
- return ["bash", "-c", startupCommand];
286
+ const DEPLOY_OPTIONS_NEW_SERVER_DEFAULTS = {
287
+ transport: "stdio",
288
+ startupCommand: "npm install && npm run build && npm run start",
289
+ mntDataDir: ".",
290
+ } as const;
291
+
292
+ function toHostedTransport(transport: Transport): HostedTransport {
293
+ switch (transport) {
294
+ case "http":
295
+ return { type: "http", path: "/mcp" };
296
+ case "stdio":
297
+ return { type: "stdio" };
298
+ }
273
299
  }
274
300
 
275
301
  async function createNew(
@@ -279,9 +305,13 @@ async function createNew(
279
305
  ): Promise<HostedConfig> {
280
306
  const {
281
307
  name,
282
- startupCommand = "npm run build && npm run start",
308
+ transport,
309
+ startupCommand,
283
310
  mntDataDir = ".",
284
- } = options;
311
+ } = {
312
+ ...DEPLOY_OPTIONS_NEW_SERVER_DEFAULTS,
313
+ ...options,
314
+ };
285
315
  if (name == undefined) {
286
316
  throw new Error("--name is a required option when creating a new server");
287
317
  }
@@ -290,7 +320,8 @@ async function createNew(
290
320
 
291
321
  const config = UserConfigUpdateSchema.parse({
292
322
  userGivenName: name,
293
- command: commandFromStartupCommand(startupCommand),
323
+ command: startupCommand,
324
+ transport: toHostedTransport(transport),
294
325
  replaceEnv: [],
295
326
  secretDataZipGcsPath: upload.secretDataZipGcsPath,
296
327
  } satisfies z.input<typeof UserConfigUpdateSchema>);
@@ -323,8 +354,9 @@ async function updateExisting(
323
354
  hostedId: config.hostedId,
324
355
  update: {
325
356
  userGivenName: options.name,
326
- command: options.startupCommand
327
- ? commandFromStartupCommand(options.startupCommand)
357
+ command: options.startupCommand,
358
+ transport: options.transport
359
+ ? toHostedTransport(options.transport)
328
360
  : undefined,
329
361
  secretDataZipGcsPath: upload.secretDataZipGcsPath,
330
362
  },
@@ -334,27 +366,41 @@ async function updateExisting(
334
366
 
335
367
  const program = new Command()
336
368
  .name("hosted")
337
- .description("Control hosted servers on MintMCP")
338
- .version("0.0.1")
369
+ .description("Control hosted servers on MintMCP.")
370
+ .version(version)
339
371
  .option(
340
372
  "-e, --env <environment>",
341
- "target environment",
373
+ "Target environment.",
342
374
  argParser(EnvSchema),
343
375
  "production",
344
376
  )
345
- .option("-b, --base <base>", "base directory for config and data", ".");
377
+ .option("-b, --base <base>", "base directory for config and data.", ".");
378
+
379
+ function makeDefaultMessage(
380
+ optionName: keyof typeof DEPLOY_OPTIONS_NEW_SERVER_DEFAULTS,
381
+ ): string {
382
+ return `Defaults to '${DEPLOY_OPTIONS_NEW_SERVER_DEFAULTS[optionName]}' for new servers.`;
383
+ }
346
384
 
347
385
  program
348
386
  .command("deploy")
349
387
  .description("Create or update a hosted server.")
350
- .option("-n, --name <name>", "Name of the hosted server")
388
+ .option(
389
+ "-n, --name <name>",
390
+ "Name of the hosted server. Required for new servers.",
391
+ )
392
+ .option(
393
+ "-t, --transport <transport>",
394
+ `Transport (stdio or http). ${makeDefaultMessage("transport")}`,
395
+ argParser(TransportSchema),
396
+ )
351
397
  .option(
352
398
  "--startup-command <command>",
353
- "Command that runs on hosted container to start the server (runs in bash).",
399
+ `Command that runs on hosted container to start the server (runs in bash). ${makeDefaultMessage("startupCommand")}`,
354
400
  )
355
401
  .option(
356
402
  "--mnt-data-dir <directory>",
357
- "Directory to copy to /mnt on the server.",
403
+ `Directory to copy to /mnt on the server. ${makeDefaultMessage("mntDataDir")}`,
358
404
  )
359
405
  .action(async (options) => {
360
406
  const { env, base } = program.opts();