@ellery/terminal-mcp 0.2.2 → 0.3.0

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 +151 -5
  2. package/dist/index.js +51 -1
  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 +4 -1
  62. package/sandbox-permissions.png +0 -0
package/README.md CHANGED
@@ -28,7 +28,9 @@ curl -fsSL https://raw.githubusercontent.com/elleryfamilia/terminal-mcp/main/ins
28
28
  - **Cross-Platform PTY**: Native pseudo-terminal support via node-pty (macOS, Linux, Windows)
29
29
  - **MCP Protocol**: Implements Model Context Protocol for AI assistant integration
30
30
  - **Session Recording**: Record terminal sessions to asciicast format for playback with asciinema
31
- - **Simple API**: Six intuitive tools for complete terminal control
31
+ - **Simple API**: Nine tools covering input, observation, recording, and session lifecycle
32
+ - **Headless Mode**: Run as a standalone MCP server without a TTY — ideal for CI, containers, and non-interactive environments
33
+ - **Multi-Session**: Run multiple isolated terminal sessions in one process, addressed by `sessionId`
32
34
  - **Sandbox Mode**: Optional security restrictions for filesystem and network access
33
35
 
34
36
  ## Building from Source
@@ -76,6 +78,7 @@ Options:
76
78
  --cols <number> Terminal width in columns (default: 120)
77
79
  --rows <number> Terminal height in rows (default: 40)
78
80
  --shell <path> Shell to use (default: $SHELL or bash)
81
+ --headless Run in headless mode (embedded PTY + MCP over stdio, no TTY needed)
79
82
  --sandbox Enable sandbox mode (restricts filesystem/network)
80
83
  --sandbox-config <path> Load sandbox config from JSON file
81
84
  --version, -v Show version number
@@ -89,10 +92,60 @@ Recording Options:
89
92
  --idle-time-limit <sec> Max idle time between events (default: 2s)
90
93
  --max-duration <sec> Max recording duration (default: 3600s)
91
94
  --inactivity-timeout <sec> Stop after no output (default: 600s)
95
+
96
+ Multi-Session Options:
97
+ --max-sessions <n> Max concurrent sessions (default: 5)
98
+ --session-idle-timeout <sec> Idle non-default sessions are auto-destroyed
99
+ after this period (default: 600s)
100
+ ```
101
+
102
+ ## Headless Mode
103
+
104
+ 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.
105
+
106
+ **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.
107
+
108
+ ### When to use headless mode
109
+
110
+ - **CI/CD pipelines** — no TTY available
111
+ - **Docker containers** — no interactive shell to run alongside
112
+ - **Remote/cloud environments** — MCP servers spawned by automation
113
+ - **Simplified setup** — single process, no socket coordination needed
114
+
115
+ ### Configuration
116
+
117
+ ```json
118
+ {
119
+ "mcpServers": {
120
+ "terminal": {
121
+ "command": "terminal-mcp",
122
+ "args": ["--headless", "--cols", "120", "--rows", "40"]
123
+ }
124
+ }
125
+ }
126
+ ```
127
+
128
+ ### How it works
129
+
130
+ ```
131
+ MCP Client (Claude Code, etc.)
132
+ │ STDIO (JSON-RPC)
133
+
134
+ terminal-mcp --headless
135
+ ├── MCP Server (stdio transport)
136
+ ├── Terminal Emulator (@xterm/headless)
137
+ └── Embedded PTY (node-pty)
138
+
139
+
140
+ Shell Process (bash, zsh, etc.)
92
141
  ```
93
142
 
143
+ 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.
144
+
94
145
  ## MCP Tools
95
146
 
147
+ 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.
148
+
96
149
  ### `type`
97
150
  Send text input to the terminal.
98
151
 
@@ -137,15 +190,25 @@ Get the terminal buffer as plain text.
137
190
  ```
138
191
 
139
192
  ### `takeScreenshot`
140
- Capture the terminal state with cursor position and dimensions.
193
+ Capture the terminal state. Supports three output formats:
194
+
195
+ | Format | Description |
196
+ |--------|-------------|
197
+ | `text` (default) | JSON with plain text content, cursor position, and dimensions |
198
+ | `ansi` | JSON with ANSI color escape codes preserved in the content field |
199
+ | `png` | Color screenshot as a PNG image (requires `@resvg/resvg-js`) |
141
200
 
142
201
  ```json
143
202
  {
144
203
  "name": "takeScreenshot",
145
- "arguments": {}
204
+ "arguments": { "format": "text" }
146
205
  }
147
206
  ```
148
207
 
208
+ 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.
209
+
210
+ 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.
211
+
149
212
  ### `startRecording`
150
213
  Start recording terminal output to an asciicast v2 file.
151
214
 
@@ -179,6 +242,62 @@ Stop a recording and finalize the asciicast file.
179
242
  }
180
243
  ```
181
244
 
245
+ ### `createSession`
246
+ Create a new terminal session and return its metadata. Use the returned `sessionId` to target this session in subsequent tool calls.
247
+
248
+ ```json
249
+ {
250
+ "name": "createSession",
251
+ "arguments": {
252
+ "shell": "/bin/zsh",
253
+ "cols": 100,
254
+ "rows": 30
255
+ }
256
+ }
257
+ ```
258
+
259
+ All arguments are optional. Returns:
260
+
261
+ ```json
262
+ {
263
+ "sessionId": "3029d",
264
+ "shell": "/bin/zsh",
265
+ "cols": 100,
266
+ "rows": 30,
267
+ "createdAt": "2026-04-25T12:58:01.072Z",
268
+ "lastActivityAt": "2026-04-25T12:58:01.072Z",
269
+ "isDefault": false
270
+ }
271
+ ```
272
+
273
+ ### `listSessions`
274
+ List all active sessions including the default. Reports configured limits.
275
+
276
+ ```json
277
+ { "name": "listSessions", "arguments": {} }
278
+ ```
279
+
280
+ ### `destroySession`
281
+ Destroy a session by ID. The default session cannot be destroyed.
282
+
283
+ ```json
284
+ {
285
+ "name": "destroySession",
286
+ "arguments": { "sessionId": "3029d" }
287
+ }
288
+ ```
289
+
290
+ ## Multi-Session
291
+
292
+ 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.
293
+
294
+ - The default session is created on first use and cannot be destroyed.
295
+ - Additional sessions are created by `createSession` and tracked until they're destroyed or idle-evicted (`--session-idle-timeout`, default 600s).
296
+ - Concurrent sessions are capped at `--max-sessions` (default 5).
297
+ - An active recording captures output from all sessions in the process.
298
+
299
+ Typical use case: an AI agent driving a long-running build in one session while running diagnostics in another, without command interleaving.
300
+
182
301
  ## Sandbox Mode
183
302
 
184
303
  Run the terminal with restricted filesystem and network access:
@@ -192,6 +311,10 @@ terminal-mcp --sandbox --sandbox-config ~/.terminal-mcp-sandbox.json
192
311
  ```
193
312
 
194
313
  The interactive mode shows a TUI dialog to configure permissions:
314
+
315
+ <p align="center">
316
+ <img src="sandbox-permissions.png" alt="Sandbox Permissions Dialog" width="400">
317
+ </p>
195
318
  - **Read/Write**: Full access (current directory, /tmp, caches)
196
319
  - **Read-Only**: Can read but not modify (home directory)
197
320
  - **Blocked**: No access (SSH keys, cloud credentials, auth tokens)
@@ -278,19 +401,42 @@ This enables AI-driven workflows like "record this debugging session" or "captur
278
401
 
279
402
  ## Architecture
280
403
 
404
+ Terminal MCP has three operating modes:
405
+
406
+ | Mode | Flag | Stdin | Description |
407
+ |------|------|-------|-------------|
408
+ | **Interactive** | *(default)* | TTY | User gets a shell; AI connects via Unix socket |
409
+ | **Client** | *(default)* | non-TTY | Connects to an interactive session's socket, serves MCP over stdio |
410
+ | **Headless** | `--headless` | any | Self-contained: embedded PTY + MCP server over stdio |
411
+
412
+ ### Headless mode (recommended for MCP configs)
413
+
281
414
  ```
282
415
  MCP Client (Claude Code, etc.)
283
416
  │ STDIO (JSON-RPC)
284
417
 
285
- Terminal MCP Server (Node.js)
418
+ terminal-mcp --headless
286
419
  ├── MCP SDK (@modelcontextprotocol/sdk)
287
420
  ├── Terminal Emulator (@xterm/headless)
288
- └── PTY Manager (node-pty)
421
+ └── Embedded PTY (node-pty)
289
422
 
290
423
 
291
424
  Shell Process (bash, zsh, etc.)
292
425
  ```
293
426
 
427
+ ### Interactive + Client mode (two-process)
428
+
429
+ ```
430
+ terminal-mcp (interactive, in your terminal)
431
+ ├── User shell (stdin/stdout)
432
+ └── Unix socket server (/tmp/terminal-mcp.sock)
433
+
434
+ │ JSON-RPC over socket
435
+
436
+ terminal-mcp (client, spawned by MCP client)
437
+ └── MCP server (stdio transport)
438
+ ```
439
+
294
440
  ## Example Session
295
441
 
296
442
  ```bash
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import * as fs from "fs";
3
3
  import { createRequire } from "module";
4
+ import { startServer } from "./server.js";
4
5
  import { startMcpClientMode } from "./client.js";
5
6
  import { TerminalManager } from "./terminal/index.js";
6
7
  import { createToolProxyServer } from "./transport/index.js";
@@ -42,6 +43,9 @@ for (let i = 0; i < args.length; i++) {
42
43
  i++;
43
44
  }
44
45
  break;
46
+ case "--headless":
47
+ options.headless = true;
48
+ break;
45
49
  case "--sandbox":
46
50
  options.sandbox = true;
47
51
  break;
@@ -96,6 +100,18 @@ for (let i = 0; i < args.length; i++) {
96
100
  i++;
97
101
  }
98
102
  break;
103
+ case "--max-sessions":
104
+ if (next) {
105
+ options.maxSessions = parseInt(next, 10);
106
+ i++;
107
+ }
108
+ break;
109
+ case "--session-idle-timeout":
110
+ if (next) {
111
+ options.sessionIdleTimeout = parseFloat(next);
112
+ i++;
113
+ }
114
+ break;
99
115
  case "--version":
100
116
  case "-v":
101
117
  console.log(`terminal-mcp v${version}`);
@@ -112,8 +128,11 @@ Options:
112
128
  --rows <number> Terminal height in rows (default: auto or 40)
113
129
  --shell <path> Shell to use (default: $SHELL or bash)
114
130
  --socket <path> Unix socket path for MCP (default: ${DEFAULT_SOCKET_PATH})
131
+ --headless Run in headless mode (MCP server with embedded terminal, no TTY needed)
115
132
  --sandbox Enable sandbox mode (restricts filesystem/network access)
116
133
  --sandbox-config <path> Load sandbox config from JSON file
134
+ --max-sessions <n> Max concurrent terminal sessions (default: 5)
135
+ --session-idle-timeout <sec> Idle non-default sessions auto-destroy after this (default: 600)
117
136
  --version, -v Show version number
118
137
  --help, -h Show this help message
119
138
 
@@ -138,6 +157,7 @@ Environment Variables:
138
157
  TERMINAL_MCP_RECORD_DIR Default recording output directory
139
158
 
140
159
  Mode Detection:
160
+ - If --headless: Headless mode (embedded PTY + MCP server over stdio)
141
161
  - If stdin is a TTY: Interactive mode (gives you a shell, exposes socket)
142
162
  - If stdin is not a TTY: MCP client mode (connects to socket, serves MCP)
143
163
 
@@ -171,6 +191,23 @@ Sandbox Mode:
171
191
  }
172
192
  }
173
193
 
194
+ Headless Mode (no TTY required, for CI/containers/MCP servers):
195
+ terminal-mcp --headless
196
+ terminal-mcp --headless --cols 120 --rows 40
197
+
198
+ Spawns a PTY shell internally and serves MCP directly over stdio.
199
+ No separate interactive session or socket needed.
200
+
201
+ MCP client config for headless:
202
+ {
203
+ "mcpServers": {
204
+ "terminal": {
205
+ "command": "terminal-mcp",
206
+ "args": ["--headless", "--cols", "120", "--rows", "40"]
207
+ }
208
+ }
209
+ }
210
+
174
211
  MCP Client Mode (add to your MCP client config):
175
212
  {
176
213
  "mcpServers": {
@@ -193,7 +230,18 @@ async function main() {
193
230
  'To use MCP tools, configure your MCP client to connect to this session.');
194
231
  process.exit(1);
195
232
  }
196
- if (isInteractive) {
233
+ if (options.headless) {
234
+ // Headless mode: Spawn PTY internally, serve MCP directly over stdio
235
+ // No TTY or socket needed
236
+ await startServer({
237
+ cols: options.cols,
238
+ rows: options.rows,
239
+ shell: options.shell,
240
+ maxSessions: options.maxSessions,
241
+ sessionIdleTimeout: options.sessionIdleTimeout,
242
+ });
243
+ }
244
+ else if (isInteractive) {
197
245
  // Interactive mode: Shell on stdin/stdout, tool proxy on Unix socket
198
246
  await startInteractiveMode(socketPath);
199
247
  }
@@ -298,6 +346,8 @@ async function startInteractiveMode(socketPath) {
298
346
  idleTimeLimit: options.idleTimeLimit,
299
347
  maxDuration: options.maxDuration,
300
348
  inactivityTimeout: options.inactivityTimeout,
349
+ maxSessions: options.maxSessions,
350
+ sessionIdleTimeout: options.sessionIdleTimeout,
301
351
  });
302
352
  // Get the session and set up interactive I/O
303
353
  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"}