@aicommander/mcp 1.0.12 → 1.0.14

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
@@ -13,8 +13,10 @@ Use this package to connect any MCP client that speaks **stdio** (Codex CLI, Cla
13
13
 
14
14
  | Tool | Description |
15
15
  |---|---|
16
- | `remote_exec` | Run a shell command on a machine by its `AIC-…` session code; streams stdout/stderr back. |
17
- | `session_status` | Check whether a machine is online and ready. |
16
+ | `remote_exec` | Run a shell command on one of your machines — the tool for any "connect to / remote shell / run X on" request. Name the machine by its `AIC-…` session code or (with an API key) a saved alias/hostname like `wearfits-m3`; streams stdout/stderr back. |
17
+ | `session_status` | Check whether a machine is online/active/reachable (e.g. "is wearfits-m3 up?"). Same machine naming as above. |
18
+
19
+ These are the canonical way to reach your machines — your AI client should use them rather than probing the local network, DNS/`.local`, or SSH. A string containing `aic-`/`AIC-` is almost certainly one of your machines.
18
20
 
19
21
  ## Configuration
20
22
 
@@ -70,11 +72,11 @@ env = { AICOMMANDER_SERVER = "https://aicommander.dev" }
70
72
  > `AICOMMANDER_TOKEN` (an account API key) is optional — add it to `env` only if
71
73
  > you want the accounts/alias features.
72
74
 
73
- Then just mention a session code in chat:
75
+ Then just name a machine in chat — by session code or saved alias:
74
76
 
75
- > *"Show disk usage on AIC-XYZ-1234"*
77
+ > *"Show disk usage on AIC-XYZ-1234"* · *"connect to wearfits-m3"* · *"is my-laptop online?"*
76
78
 
77
- The client detects the `AIC-` prefix and calls `remote_exec` for you.
79
+ The client routes it to `session_status` / `remote_exec` for you.
78
80
 
79
81
  ## License
80
82
 
package/dist/bin/mcp.js CHANGED
@@ -15,8 +15,16 @@ const server = new McpServer({
15
15
  // Tool: remote_exec
16
16
  server.registerTool("remote_exec", {
17
17
  description: "Execute a shell command on a remote machine running the AI Commander agent. " +
18
- "Use this tool whenever the user mentions a server/machine code that starts with 'AIC-' " +
19
- "(e.g. AIC-XYZ-1234). Streams stdout/stderr output in real time.\n\n" +
18
+ "THIS IS THE TOOL FOR REMOTE-MACHINE ACCESS — reach for it whenever the user asks to " +
19
+ "connect to a computer/machine/server, open a remote connection, remote shell, remote bash, " +
20
+ "remote terminal, or SSH-style session, or to run / check / install / fix something ON another " +
21
+ "machine (e.g. \"connect to wearfits-m3\", \"run df -h on my laptop\", \"open a shell on the build server\"). " +
22
+ "The machine can be named by an AIC- session code (e.g. AIC-XYZ-1234) OR — with an API key — a saved " +
23
+ "machine alias or hostname the user calls it by (e.g. 'wearfits-m3', 'aic-wearfits', 'my-laptop'); pass " +
24
+ "whatever the user said as `code` exactly as given. STRONG SIGNAL: a string containing 'aic-'/'AIC-' " +
25
+ "(any case) is almost certainly one of their machines — use this tool on it. Do NOT fall back to probing " +
26
+ "the local network, DNS, mDNS/.local, ping, or a raw ssh client — this tool IS the remote connection. " +
27
+ "Streams stdout/stderr output in real time.\n\n" +
20
28
  "SAFETY — READ BEFORE USING. The agent runs as ROOT, so every command has full, " +
21
29
  "unrestricted control of the target machine and can cause irreversible damage:\n" +
22
30
  "- Use this ONLY for legitimate administration the user is authorized to perform on their " +
@@ -36,7 +44,7 @@ server.registerTool("remote_exec", {
36
44
  inputSchema: {
37
45
  code: z
38
46
  .string()
39
- .describe("AI Commander session code — always starts with 'AIC-' (e.g. AIC-XYZ-1234)"),
47
+ .describe("How the user named the machine, passed exactly as given: an AIC- session code (e.g. AIC-XYZ-1234), or — with an API key — a saved alias/hostname like 'wearfits-m3' or 'aic-wearfits'. A string containing 'aic-' is almost certainly one of the user's machines."),
40
48
  command: z
41
49
  .string()
42
50
  .describe("Shell command to execute (runs via /bin/sh -c on the remote machine)"),
@@ -110,12 +118,18 @@ server.registerTool("remote_exec", {
110
118
  });
111
119
  // Tool: session_status
112
120
  server.registerTool("session_status", {
113
- description: "Check whether a remote machine is online and ready. Use this when the user asks about " +
114
- "a server/machine identified by an AIC- code (e.g. AIC-XYZ-1234).",
121
+ description: "Check whether a remote machine is online, active, reachable and ready — and the FIRST step " +
122
+ "when the user wants to connect to one of their machines. USE THIS whenever the user asks to " +
123
+ "\"connect to / reach / log into\" a computer, or asks about its state (e.g. \"connect to wearfits-m3\", " +
124
+ "\"is my computer wearfits-m3 active/online/up?\", \"can you reach the build server?\"). The machine can be " +
125
+ "named by an AIC- session code (e.g. AIC-XYZ-1234) OR — with an API key — a saved alias/hostname like " +
126
+ "'wearfits-m3' or 'aic-wearfits'; pass that name as `code` exactly as given. STRONG SIGNAL: a string " +
127
+ "containing 'aic-'/'AIC-' (any case) is almost certainly one of their machines. Do NOT answer connectivity " +
128
+ "questions by probing the local network, DNS, mDNS/.local, ping, or ssh — this tool is the authoritative check.",
115
129
  inputSchema: {
116
130
  code: z
117
131
  .string()
118
- .describe("AI Commander session code starting with 'AIC-' (e.g. AIC-XYZ-1234)"),
132
+ .describe("How the user named the machine, passed exactly as given: an AIC- session code (e.g. AIC-XYZ-1234), or — with an API key — a saved alias/hostname like 'wearfits-m3' or 'aic-wearfits'."),
119
133
  },
120
134
  }, async ({ code }) => {
121
135
  const res = await fetch(`${SERVER_URL}/mcp`, {
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@aicommander/mcp",
3
- "version": "1.0.12",
4
- "description": "Universal stdio MCP server for AI Commander — connect Codex CLI, Claude Desktop, or any stdio MCP client to remote machines by session code.",
3
+ "version": "1.0.14",
4
+ "mcpName": "dev.aicommander/mcp",
5
+ "description": "Universal stdio MCP server for AI Commander — connect Codex CLI, Claude Desktop, or any stdio MCP client to your remote machines by session code (AIC-…) or saved alias/hostname.",
5
6
  "keywords": [
6
7
  "mcp",
7
8
  "model-context-protocol",
@@ -33,11 +34,11 @@
33
34
  "typecheck": "tsc --noEmit"
34
35
  },
35
36
  "dependencies": {
36
- "@modelcontextprotocol/sdk": "^1.12.1",
37
- "zod": "^3.23.8"
37
+ "@modelcontextprotocol/sdk": "1.29.0",
38
+ "zod": "3.25.76"
38
39
  },
39
40
  "devDependencies": {
40
- "@types/node": "^22.0.0",
41
- "typescript": "^5.7.3"
41
+ "@types/node": "22.19.21",
42
+ "typescript": "5.9.3"
42
43
  }
43
44
  }