@velixir/mcp 0.1.0 → 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 CHANGED
@@ -1,10 +1,10 @@
1
1
  # @velixir/mcp
2
2
 
3
- Deploy web apps in **any language** to [Velixir](https://velixir.net), the European cloud, straight from your AI agent. One tool, `deploy`: point it at a source directory, and it packs the code, builds it with no Dockerfile, and returns a live URL plus a claim link the human opens to keep the app on a free, card-free account. No Velixir account is needed to deploy.
3
+ Deploy web apps in **any language** to [velixir](https://velixir.net), the European cloud, straight from your AI agent. One tool, `deploy`: point it at a source directory, and it packs the code, builds it with no Dockerfile, and returns a live URL plus a claim link the human opens to keep the app on a free, card-free account. No velixir account is needed to deploy.
4
4
 
5
5
  ## Why
6
6
 
7
- The agent generated a real backend. Now it has to run somewhere. Velixir runs real apps in Node, Python, Go, Ruby, PHP, Java, Elixir, Rust, .NET, and more, with managed Postgres and Valkey, in the EU, with no egress fees. This server lets an agent one-shot deploy the app it just built, then hand the user a link to keep it.
7
+ The agent generated a real backend. Now it has to run somewhere. velixir runs real apps in Node, Python, Go, Ruby, PHP, Java, Elixir, Rust, .NET, and more, with managed Postgres and Valkey, in the EU, with no egress fees. This server lets an agent one-shot deploy the app it just built, then hand the user a link to keep it.
8
8
 
9
9
  ## Use it
10
10
 
@@ -40,6 +40,7 @@ Point the editor's MCP settings at the same command (`npx -y @velixir/mcp`).
40
40
  | `directory` | yes | Absolute path to the app's source directory. |
41
41
  | `name` | no | Short name for the app; becomes part of the URL. |
42
42
  | `language` | no | node, python, go, ruby, php, java, elixir, rust, dotnet, deno, fsharp. Auto-detected if omitted. |
43
+ | `port` | no | Only if the app hard-codes a port instead of reading the `PORT` env var. |
43
44
 
44
45
  It returns the live URL, a claim URL (give this to the user), when the claim window closes, and a status URL to poll.
45
46
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@velixir/mcp",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Deploy web apps in any language to Velixir (the European cloud) straight from your AI agent. One tool: point it at a directory, get back a live URL and a claim link.",
5
5
  "type": "module",
6
6
  "bin": {
package/src/index.js CHANGED
@@ -60,8 +60,13 @@ server.tool(
60
60
  .string()
61
61
  .optional()
62
62
  .describe("Primary language (node, python, go, ruby, php, java, elixir, rust, dotnet, deno, fsharp). Auto-detected from the source if omitted."),
63
+ port: z
64
+ .number()
65
+ .int()
66
+ .optional()
67
+ .describe("The port the app listens on. Only needed if the app hard-codes a port instead of reading the PORT environment variable. Leave unset and have the app read PORT (default 8080)."),
63
68
  },
64
- async ({ directory, name, language }) => {
69
+ async ({ directory, name, language, port }) => {
65
70
  const dir = path.resolve(directory);
66
71
  const stat = await fs.stat(dir).catch(() => null);
67
72
  if (!stat || !stat.isDirectory()) {
@@ -79,6 +84,7 @@ server.tool(
79
84
  form.append("source", new Blob([tar], { type: "application/gzip" }), "source.tar.gz");
80
85
  if (name) form.append("name", name);
81
86
  if (language) form.append("language", language);
87
+ if (port != null) form.append("port", String(port));
82
88
 
83
89
  let res, body;
84
90
  try {