@ellery/terminal-mcp 0.2.2 → 0.3.1

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.
Files changed (62) hide show
  1. package/README.md +159 -5
  2. package/dist/index.js +63 -2
  3. package/dist/index.js.map +1 -1
  4. package/dist/prompts/index.d.ts.map +1 -1
  5. package/dist/prompts/index.js +8 -0
  6. package/dist/prompts/index.js.map +1 -1
  7. package/dist/server.d.ts +2 -3
  8. package/dist/server.d.ts.map +1 -1
  9. package/dist/server.js +21 -0
  10. package/dist/server.js.map +1 -1
  11. package/dist/terminal/index.d.ts +1 -1
  12. package/dist/terminal/index.d.ts.map +1 -1
  13. package/dist/terminal/manager.d.ts +66 -63
  14. package/dist/terminal/manager.d.ts.map +1 -1
  15. package/dist/terminal/manager.js +255 -101
  16. package/dist/terminal/manager.js.map +1 -1
  17. package/dist/terminal/session.d.ts +13 -0
  18. package/dist/terminal/session.d.ts.map +1 -1
  19. package/dist/terminal/session.js +116 -0
  20. package/dist/terminal/session.js.map +1 -1
  21. package/dist/tools/createSession.d.ts +44 -0
  22. package/dist/tools/createSession.d.ts.map +1 -0
  23. package/dist/tools/createSession.js +41 -0
  24. package/dist/tools/createSession.js.map +1 -0
  25. package/dist/tools/definitions.d.ts.map +1 -1
  26. package/dist/tools/definitions.js +8 -2
  27. package/dist/tools/definitions.js.map +1 -1
  28. package/dist/tools/destroySession.d.ts +31 -0
  29. package/dist/tools/destroySession.d.ts.map +1 -0
  30. package/dist/tools/destroySession.js +32 -0
  31. package/dist/tools/destroySession.js.map +1 -0
  32. package/dist/tools/getContent.d.ts +7 -0
  33. package/dist/tools/getContent.d.ts.map +1 -1
  34. package/dist/tools/getContent.js +8 -3
  35. package/dist/tools/getContent.js.map +1 -1
  36. package/dist/tools/index.d.ts.map +1 -1
  37. package/dist/tools/index.js +20 -1
  38. package/dist/tools/index.js.map +1 -1
  39. package/dist/tools/listSessions.d.ts +19 -0
  40. package/dist/tools/listSessions.d.ts.map +1 -0
  41. package/dist/tools/listSessions.js +23 -0
  42. package/dist/tools/listSessions.js.map +1 -0
  43. package/dist/tools/screenshot.d.ts +26 -3
  44. package/dist/tools/screenshot.d.ts.map +1 -1
  45. package/dist/tools/screenshot.js +55 -5
  46. package/dist/tools/screenshot.js.map +1 -1
  47. package/dist/tools/sendKey.d.ts +7 -0
  48. package/dist/tools/sendKey.d.ts.map +1 -1
  49. package/dist/tools/sendKey.js +7 -2
  50. package/dist/tools/sendKey.js.map +1 -1
  51. package/dist/tools/startRecording.js +1 -1
  52. package/dist/tools/startRecording.js.map +1 -1
  53. package/dist/tools/type.d.ts +7 -0
  54. package/dist/tools/type.d.ts.map +1 -1
  55. package/dist/tools/type.js +7 -2
  56. package/dist/tools/type.js.map +1 -1
  57. package/dist/utils/render.d.ts +21 -0
  58. package/dist/utils/render.d.ts.map +1 -0
  59. package/dist/utils/render.js +162 -0
  60. package/dist/utils/render.js.map +1 -0
  61. package/package.json +6 -1
  62. package/sandbox-permissions.png +0 -0
package/README.md CHANGED
@@ -22,13 +22,23 @@ Or via install script:
22
22
  curl -fsSL https://raw.githubusercontent.com/elleryfamilia/terminal-mcp/main/install.sh | bash
23
23
  ```
24
24
 
25
+ ### Upgrading
26
+
27
+ ```bash
28
+ npm install -g @ellery/terminal-mcp@latest
29
+ ```
30
+
31
+ Interactive mode will print a banner on next launch when a newer release is available — `terminal-mcp` checks the npm registry once per day and caches the result. Headless and MCP-client modes never check or print anything (so MCP stdio stays clean). To opt out entirely, set `NO_UPDATE_NOTIFIER=1` or pass `--no-update-notifier`.
32
+
25
33
  ## Features
26
34
 
27
35
  - **Full Terminal Emulation**: Uses xterm.js headless for accurate VT100/ANSI emulation
28
36
  - **Cross-Platform PTY**: Native pseudo-terminal support via node-pty (macOS, Linux, Windows)
29
37
  - **MCP Protocol**: Implements Model Context Protocol for AI assistant integration
30
38
  - **Session Recording**: Record terminal sessions to asciicast format for playback with asciinema
31
- - **Simple API**: Six intuitive tools for complete terminal control
39
+ - **Simple API**: Nine tools covering input, observation, recording, and session lifecycle
40
+ - **Headless Mode**: Run as a standalone MCP server without a TTY — ideal for CI, containers, and non-interactive environments
41
+ - **Multi-Session**: Run multiple isolated terminal sessions in one process, addressed by `sessionId`
32
42
  - **Sandbox Mode**: Optional security restrictions for filesystem and network access
33
43
 
34
44
  ## Building from Source
@@ -76,6 +86,7 @@ Options:
76
86
  --cols <number> Terminal width in columns (default: 120)
77
87
  --rows <number> Terminal height in rows (default: 40)
78
88
  --shell <path> Shell to use (default: $SHELL or bash)
89
+ --headless Run in headless mode (embedded PTY + MCP over stdio, no TTY needed)
79
90
  --sandbox Enable sandbox mode (restricts filesystem/network)
80
91
  --sandbox-config <path> Load sandbox config from JSON file
81
92
  --version, -v Show version number
@@ -89,10 +100,60 @@ Recording Options:
89
100
  --idle-time-limit <sec> Max idle time between events (default: 2s)
90
101
  --max-duration <sec> Max recording duration (default: 3600s)
91
102
  --inactivity-timeout <sec> Stop after no output (default: 600s)
103
+
104
+ Multi-Session Options:
105
+ --max-sessions <n> Max concurrent sessions (default: 5)
106
+ --session-idle-timeout <sec> Idle non-default sessions are auto-destroyed
107
+ after this period (default: 600s)
92
108
  ```
93
109
 
110
+ ## Headless Mode
111
+
112
+ By default, Terminal MCP uses a **dual-process architecture**: you run `terminal-mcp` in an interactive terminal (which creates a Unix socket), then your MCP client spawns a second instance that connects to that socket. This requires a TTY.
113
+
114
+ **Headless mode** (`--headless`) eliminates this requirement by spawning an embedded PTY internally and serving MCP directly over stdio in a single process. No interactive terminal session, no socket — just a self-contained MCP server with a built-in terminal.
115
+
116
+ ### When to use headless mode
117
+
118
+ - **CI/CD pipelines** — no TTY available
119
+ - **Docker containers** — no interactive shell to run alongside
120
+ - **Remote/cloud environments** — MCP servers spawned by automation
121
+ - **Simplified setup** — single process, no socket coordination needed
122
+
123
+ ### Configuration
124
+
125
+ ```json
126
+ {
127
+ "mcpServers": {
128
+ "terminal": {
129
+ "command": "terminal-mcp",
130
+ "args": ["--headless", "--cols", "120", "--rows", "40"]
131
+ }
132
+ }
133
+ }
134
+ ```
135
+
136
+ ### How it works
137
+
138
+ ```
139
+ MCP Client (Claude Code, etc.)
140
+ │ STDIO (JSON-RPC)
141
+
142
+ terminal-mcp --headless
143
+ ├── MCP Server (stdio transport)
144
+ ├── Terminal Emulator (@xterm/headless)
145
+ └── Embedded PTY (node-pty)
146
+
147
+
148
+ Shell Process (bash, zsh, etc.)
149
+ ```
150
+
151
+ In headless mode, the terminal session is initialized eagerly at startup, so all tools (`type`, `sendKey`, `getContent`, `takeScreenshot`, `startRecording`, `stopRecording`, `createSession`, `listSessions`, `destroySession`) are available immediately.
152
+
94
153
  ## MCP Tools
95
154
 
155
+ All input/output tools (`type`, `sendKey`, `getContent`, `takeScreenshot`) accept an optional `sessionId` argument. Omit it to target the default session; pass the ID returned by `createSession` to drive a specific session.
156
+
96
157
  ### `type`
97
158
  Send text input to the terminal.
98
159
 
@@ -137,15 +198,25 @@ Get the terminal buffer as plain text.
137
198
  ```
138
199
 
139
200
  ### `takeScreenshot`
140
- Capture the terminal state with cursor position and dimensions.
201
+ Capture the terminal state. Supports three output formats:
202
+
203
+ | Format | Description |
204
+ |--------|-------------|
205
+ | `text` (default) | JSON with plain text content, cursor position, and dimensions |
206
+ | `ansi` | JSON with ANSI color escape codes preserved in the content field |
207
+ | `png` | Color screenshot as a PNG image (requires `@resvg/resvg-js`) |
141
208
 
142
209
  ```json
143
210
  {
144
211
  "name": "takeScreenshot",
145
- "arguments": {}
212
+ "arguments": { "format": "text" }
146
213
  }
147
214
  ```
148
215
 
216
+ The `ansi` format reconstructs SGR escape sequences from the terminal's cell buffer, preserving 16-color, 256-color, and 24-bit truecolor attributes along with bold, dim, italic, and underline styles.
217
+
218
+ The `png` format returns an MCP `image` content block with base64-encoded PNG data, rendered with the One Dark color theme and macOS-style window chrome.
219
+
149
220
  ### `startRecording`
150
221
  Start recording terminal output to an asciicast v2 file.
151
222
 
@@ -179,6 +250,62 @@ Stop a recording and finalize the asciicast file.
179
250
  }
180
251
  ```
181
252
 
253
+ ### `createSession`
254
+ Create a new terminal session and return its metadata. Use the returned `sessionId` to target this session in subsequent tool calls.
255
+
256
+ ```json
257
+ {
258
+ "name": "createSession",
259
+ "arguments": {
260
+ "shell": "/bin/zsh",
261
+ "cols": 100,
262
+ "rows": 30
263
+ }
264
+ }
265
+ ```
266
+
267
+ All arguments are optional. Returns:
268
+
269
+ ```json
270
+ {
271
+ "sessionId": "3029d",
272
+ "shell": "/bin/zsh",
273
+ "cols": 100,
274
+ "rows": 30,
275
+ "createdAt": "2026-04-25T12:58:01.072Z",
276
+ "lastActivityAt": "2026-04-25T12:58:01.072Z",
277
+ "isDefault": false
278
+ }
279
+ ```
280
+
281
+ ### `listSessions`
282
+ List all active sessions including the default. Reports configured limits.
283
+
284
+ ```json
285
+ { "name": "listSessions", "arguments": {} }
286
+ ```
287
+
288
+ ### `destroySession`
289
+ Destroy a session by ID. The default session cannot be destroyed.
290
+
291
+ ```json
292
+ {
293
+ "name": "destroySession",
294
+ "arguments": { "sessionId": "3029d" }
295
+ }
296
+ ```
297
+
298
+ ## Multi-Session
299
+
300
+ By default, every tool call without a `sessionId` targets a single auto-created **default session** — the same behavior the project has always had. Pass `sessionId` to drive multiple isolated PTYs from one process.
301
+
302
+ - The default session is created on first use and cannot be destroyed.
303
+ - Additional sessions are created by `createSession` and tracked until they're destroyed or idle-evicted (`--session-idle-timeout`, default 600s).
304
+ - Concurrent sessions are capped at `--max-sessions` (default 5).
305
+ - An active recording captures output from all sessions in the process.
306
+
307
+ Typical use case: an AI agent driving a long-running build in one session while running diagnostics in another, without command interleaving.
308
+
182
309
  ## Sandbox Mode
183
310
 
184
311
  Run the terminal with restricted filesystem and network access:
@@ -192,6 +319,10 @@ terminal-mcp --sandbox --sandbox-config ~/.terminal-mcp-sandbox.json
192
319
  ```
193
320
 
194
321
  The interactive mode shows a TUI dialog to configure permissions:
322
+
323
+ <p align="center">
324
+ <img src="sandbox-permissions.png" alt="Sandbox Permissions Dialog" width="400">
325
+ </p>
195
326
  - **Read/Write**: Full access (current directory, /tmp, caches)
196
327
  - **Read-Only**: Can read but not modify (home directory)
197
328
  - **Blocked**: No access (SSH keys, cloud credentials, auth tokens)
@@ -278,19 +409,42 @@ This enables AI-driven workflows like "record this debugging session" or "captur
278
409
 
279
410
  ## Architecture
280
411
 
412
+ Terminal MCP has three operating modes:
413
+
414
+ | Mode | Flag | Stdin | Description |
415
+ |------|------|-------|-------------|
416
+ | **Interactive** | *(default)* | TTY | User gets a shell; AI connects via Unix socket |
417
+ | **Client** | *(default)* | non-TTY | Connects to an interactive session's socket, serves MCP over stdio |
418
+ | **Headless** | `--headless` | any | Self-contained: embedded PTY + MCP server over stdio |
419
+
420
+ ### Headless mode (recommended for MCP configs)
421
+
281
422
  ```
282
423
  MCP Client (Claude Code, etc.)
283
424
  │ STDIO (JSON-RPC)
284
425
 
285
- Terminal MCP Server (Node.js)
426
+ terminal-mcp --headless
286
427
  ├── MCP SDK (@modelcontextprotocol/sdk)
287
428
  ├── Terminal Emulator (@xterm/headless)
288
- └── PTY Manager (node-pty)
429
+ └── Embedded PTY (node-pty)
289
430
 
290
431
 
291
432
  Shell Process (bash, zsh, etc.)
292
433
  ```
293
434
 
435
+ ### Interactive + Client mode (two-process)
436
+
437
+ ```
438
+ terminal-mcp (interactive, in your terminal)
439
+ ├── User shell (stdin/stdout)
440
+ └── Unix socket server (/tmp/terminal-mcp.sock)
441
+
442
+ │ JSON-RPC over socket
443
+
444
+ terminal-mcp (client, spawned by MCP client)
445
+ └── MCP server (stdio transport)
446
+ ```
447
+
294
448
  ## Example Session
295
449
 
296
450
  ```bash
package/dist/index.js CHANGED
@@ -1,6 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import * as fs from "fs";
3
3
  import { createRequire } from "module";
4
+ import updateNotifier from "update-notifier";
5
+ import { startServer } from "./server.js";
4
6
  import { startMcpClientMode } from "./client.js";
5
7
  import { TerminalManager } from "./terminal/index.js";
6
8
  import { createToolProxyServer } from "./transport/index.js";
@@ -8,7 +10,8 @@ import { getBanner } from "./ui/index.js";
8
10
  import { getDefaultSocketPath, getDefaultShell } from "./utils/platform.js";
9
11
  import { SandboxController, loadConfigFromFile, promptForPermissions, } from "./sandbox/index.js";
10
12
  const require = createRequire(import.meta.url);
11
- const { version } = require("../package.json");
13
+ const pkg = require("../package.json");
14
+ const { version } = pkg;
12
15
  // Default socket path
13
16
  const DEFAULT_SOCKET_PATH = getDefaultSocketPath();
14
17
  // Parse command line arguments
@@ -42,6 +45,9 @@ for (let i = 0; i < args.length; i++) {
42
45
  i++;
43
46
  }
44
47
  break;
48
+ case "--headless":
49
+ options.headless = true;
50
+ break;
45
51
  case "--sandbox":
46
52
  options.sandbox = true;
47
53
  break;
@@ -96,6 +102,18 @@ for (let i = 0; i < args.length; i++) {
96
102
  i++;
97
103
  }
98
104
  break;
105
+ case "--max-sessions":
106
+ if (next) {
107
+ options.maxSessions = parseInt(next, 10);
108
+ i++;
109
+ }
110
+ break;
111
+ case "--session-idle-timeout":
112
+ if (next) {
113
+ options.sessionIdleTimeout = parseFloat(next);
114
+ i++;
115
+ }
116
+ break;
99
117
  case "--version":
100
118
  case "-v":
101
119
  console.log(`terminal-mcp v${version}`);
@@ -112,8 +130,11 @@ Options:
112
130
  --rows <number> Terminal height in rows (default: auto or 40)
113
131
  --shell <path> Shell to use (default: $SHELL or bash)
114
132
  --socket <path> Unix socket path for MCP (default: ${DEFAULT_SOCKET_PATH})
133
+ --headless Run in headless mode (MCP server with embedded terminal, no TTY needed)
115
134
  --sandbox Enable sandbox mode (restricts filesystem/network access)
116
135
  --sandbox-config <path> Load sandbox config from JSON file
136
+ --max-sessions <n> Max concurrent terminal sessions (default: 5)
137
+ --session-idle-timeout <sec> Idle non-default sessions auto-destroy after this (default: 600)
117
138
  --version, -v Show version number
118
139
  --help, -h Show this help message
119
140
 
@@ -138,6 +159,7 @@ Environment Variables:
138
159
  TERMINAL_MCP_RECORD_DIR Default recording output directory
139
160
 
140
161
  Mode Detection:
162
+ - If --headless: Headless mode (embedded PTY + MCP server over stdio)
141
163
  - If stdin is a TTY: Interactive mode (gives you a shell, exposes socket)
142
164
  - If stdin is not a TTY: MCP client mode (connects to socket, serves MCP)
143
165
 
@@ -171,6 +193,23 @@ Sandbox Mode:
171
193
  }
172
194
  }
173
195
 
196
+ Headless Mode (no TTY required, for CI/containers/MCP servers):
197
+ terminal-mcp --headless
198
+ terminal-mcp --headless --cols 120 --rows 40
199
+
200
+ Spawns a PTY shell internally and serves MCP directly over stdio.
201
+ No separate interactive session or socket needed.
202
+
203
+ MCP client config for headless:
204
+ {
205
+ "mcpServers": {
206
+ "terminal": {
207
+ "command": "terminal-mcp",
208
+ "args": ["--headless", "--cols", "120", "--rows", "40"]
209
+ }
210
+ }
211
+ }
212
+
174
213
  MCP Client Mode (add to your MCP client config):
175
214
  {
176
215
  "mcpServers": {
@@ -193,7 +232,18 @@ async function main() {
193
232
  'To use MCP tools, configure your MCP client to connect to this session.');
194
233
  process.exit(1);
195
234
  }
196
- if (isInteractive) {
235
+ if (options.headless) {
236
+ // Headless mode: Spawn PTY internally, serve MCP directly over stdio
237
+ // No TTY or socket needed
238
+ await startServer({
239
+ cols: options.cols,
240
+ rows: options.rows,
241
+ shell: options.shell,
242
+ maxSessions: options.maxSessions,
243
+ sessionIdleTimeout: options.sessionIdleTimeout,
244
+ });
245
+ }
246
+ else if (isInteractive) {
197
247
  // Interactive mode: Shell on stdin/stdout, tool proxy on Unix socket
198
248
  await startInteractiveMode(socketPath);
199
249
  }
@@ -203,6 +253,15 @@ async function main() {
203
253
  }
204
254
  }
205
255
  async function startInteractiveMode(socketPath) {
256
+ // Throttled update check (once per day). Prints to stderr in the user's
257
+ // terminal, never in headless / MCP-client mode where it would corrupt
258
+ // JSON-RPC over stdio.
259
+ try {
260
+ updateNotifier({ pkg }).notify({ defer: false });
261
+ }
262
+ catch {
263
+ // Never let an update check break startup.
264
+ }
206
265
  // Get terminal size from environment or use defaults
207
266
  const cols = options.cols ?? (process.stdout.columns || 120);
208
267
  const rows = options.rows ?? (process.stdout.rows || 40);
@@ -298,6 +357,8 @@ async function startInteractiveMode(socketPath) {
298
357
  idleTimeLimit: options.idleTimeLimit,
299
358
  maxDuration: options.maxDuration,
300
359
  inactivityTimeout: options.inactivityTimeout,
360
+ maxSessions: options.maxSessions,
361
+ sessionIdleTimeout: options.sessionIdleTimeout,
301
362
  });
302
363
  // Get the session and set up interactive I/O
303
364
  const session = await manager.initSession();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AA+DnE,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAwBpD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAuEnE,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAwBpD"}
@@ -4,6 +4,14 @@ const TOOL_USAGE_PROMPT = `# Terminal MCP Tool Usage Guide
4
4
  ## Overview
5
5
  This MCP server provides tools to interact with a terminal emulator. Use these tools to execute commands and read output.
6
6
 
7
+ ## When to prefer this server
8
+ Prefer terminal-mcp over plain non-interactive shell tools whenever the command:
9
+ - needs sudo or otherwise prompts for a password (the human can type it interactively into this PTY)
10
+ - prompts the user for input during execution (ssh login, git push over HTTPS, npm login, etc.)
11
+ - runs a TUI (vim, nano, less, more, htop, top, man, kubectl edit, gh pr create)
12
+ - needs line-buffered TTY behavior (colors, progress bars, fzf, watch)
13
+ - must be observed while still running (long-running build, server, REPL)
14
+
7
15
  ## Tools
8
16
 
9
17
  ### type
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAE5C,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDzB,CAAC;AAEF,MAAM,OAAO,GAAG;IACd;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,uDAAuD;KACrE;CACF,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,MAAM,CAAC,iBAAiB,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAC9D,OAAO;KACR,CAAC,CAAC,CAAC;IAEJ,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACjE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAEhC,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1B,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAe;wBACrB,OAAO,EAAE;4BACP,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,iBAAiB;yBACxB;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAE5C,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDzB,CAAC;AAEF,MAAM,OAAO,GAAG;IACd;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,uDAAuD;KACrE;CACF,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,MAAM,CAAC,iBAAiB,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAC9D,OAAO;KACR,CAAC,CAAC,CAAC;IAEJ,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACjE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAEhC,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1B,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAe;wBACrB,OAAO,EAAE;4BACP,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,iBAAiB;yBACxB;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC"}
package/dist/server.d.ts CHANGED
@@ -5,10 +5,9 @@ export interface ServerOptions {
5
5
  cols?: number;
6
6
  rows?: number;
7
7
  shell?: string;
8
+ maxSessions?: number;
9
+ sessionIdleTimeout?: number;
8
10
  }
9
- /**
10
- * Create and configure the MCP server with an existing terminal manager
11
- */
12
11
  export declare function createServerWithManager(manager: TerminalManager): Server;
13
12
  /**
14
13
  * Create and configure the MCP server with a new terminal manager
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAKtD,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAkBxE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,aAAkB,GAAG;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,eAAe,CAAC;CAC1B,CAUA;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvF;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB5E"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAKtD,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAsBD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAmBxE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,aAAkB,GAAG;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,eAAe,CAAC;CAC1B,CAYA;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvF;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB5E"}
package/dist/server.js CHANGED
@@ -7,6 +7,22 @@ import { registerPrompts } from "./prompts/index.js";
7
7
  /**
8
8
  * Create and configure the MCP server with an existing terminal manager
9
9
  */
10
+ const SERVER_INSTRUCTIONS = `Terminal MCP exposes a real PTY-backed shell to AI assistants.
11
+
12
+ Prefer this server over plain non-interactive shell tools whenever the command:
13
+ - needs sudo or otherwise prompts for a password (the human user can type it interactively)
14
+ - prompts the user for input mid-execution (ssh login, git push over HTTPS, npm login, etc.)
15
+ - runs a TUI program (vim, nano, less, more, htop, top, man, kubectl edit, gh pr create)
16
+ - requires line-buffered TTY behavior (color output, progress bars, fzf, watch)
17
+ - needs to be observed while still running (long-running build, server, REPL)
18
+
19
+ Workflow: type(<command>), sendKey('Enter'), then getContent() to read the result.
20
+ For long-running interactive programs, sendKey for navigation and takeScreenshot to
21
+ inspect cursor position and TUI state.
22
+
23
+ Multi-session: omit sessionId to drive the default session, or call createSession to
24
+ get a new isolated PTY for parallel work (e.g. a build in one session, diagnostics in
25
+ another). The default session cannot be destroyed.`;
10
26
  export function createServerWithManager(manager) {
11
27
  const server = new Server({
12
28
  name: "terminal-mcp",
@@ -16,6 +32,7 @@ export function createServerWithManager(manager) {
16
32
  tools: {},
17
33
  prompts: {},
18
34
  },
35
+ instructions: SERVER_INSTRUCTIONS,
19
36
  });
20
37
  registerTools(server, manager);
21
38
  registerPrompts(server);
@@ -29,6 +46,8 @@ export function createServer(options = {}) {
29
46
  cols: options.cols,
30
47
  rows: options.rows,
31
48
  shell: options.shell,
49
+ maxSessions: options.maxSessions,
50
+ sessionIdleTimeout: options.sessionIdleTimeout,
32
51
  });
33
52
  const server = createServerWithManager(manager);
34
53
  return { server, manager };
@@ -44,6 +63,8 @@ export async function connectServer(server, transport) {
44
63
  */
45
64
  export async function startServer(options = {}) {
46
65
  const { server, manager } = createServer(options);
66
+ // Eagerly initialize the terminal session so tools can use it immediately
67
+ await manager.initSession();
47
68
  const transport = new StdioServerTransport();
48
69
  // Handle graceful shutdown
49
70
  process.on("SIGINT", () => {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAQrD;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAwB;IAC9D,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;QACE,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,OAAO;KACjB,EACD;QACE,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;SACZ;KACF,CACF,CAAC;IAEF,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,eAAe,CAAC,MAAM,CAAC,CAAC;IAExB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,UAAyB,EAAE;IAItD,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC;QAClC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAEhD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAc,EAAE,SAAoB;IACtE,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAAyB,EAAE;IAC3D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAE7C,2BAA2B;IAC3B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACzB,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAUrD;;GAEG;AACH,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;mDAeuB,CAAC;AAEpD,MAAM,UAAU,uBAAuB,CAAC,OAAwB;IAC9D,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;QACE,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,OAAO;KACjB,EACD;QACE,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;SACZ;QACD,YAAY,EAAE,mBAAmB;KAClC,CACF,CAAC;IAEF,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,eAAe,CAAC,MAAM,CAAC,CAAC;IAExB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,UAAyB,EAAE;IAItD,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC;QAClC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;KAC/C,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAEhD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAc,EAAE,SAAoB;IACtE,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAAyB,EAAE;IAC3D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAElD,0EAA0E;IAC1E,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC;IAE5B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAE7C,2BAA2B;IAC3B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACzB,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export { TerminalSession } from "./session.js";
2
2
  export type { TerminalSessionOptions, ScreenshotResult } from "./session.js";
3
3
  export { TerminalManager } from "./manager.js";
4
- export type { TerminalManagerOptions } from "./manager.js";
4
+ export type { TerminalManagerOptions, CreateSessionOptions, SessionMetadata, } from "./manager.js";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/terminal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/terminal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EACV,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,GAChB,MAAM,cAAc,CAAC"}