@standardbeagle/mcp-tui 0.4.0 → 0.6.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.
@@ -0,0 +1,363 @@
1
+ # MCP Configuration Reference
2
+
3
+ This document provides a comprehensive reference for MCP configuration patterns, including examples from various MCP clients and servers.
4
+
5
+ ## Table of Contents
6
+ - [Configuration Formats](#configuration-formats)
7
+ - [MCP-TUI Configuration](#mcp-tui-configuration)
8
+ - [Claude Desktop Configuration](#claude-desktop-configuration)
9
+ - [Transport Types](#transport-types)
10
+ - [Common Patterns](#common-patterns)
11
+
12
+ ## Configuration Formats
13
+
14
+ MCP configurations can be written in JSON or YAML format. The examples in this directory demonstrate both.
15
+
16
+ ### File Locations
17
+
18
+ MCP-TUI searches for configuration files in this order:
19
+
20
+ 1. **Command-line specified**: `--config path/to/config.json`
21
+ 2. **Project-local**: `.mcp.json`, `.claude.json` in current directory
22
+ 3. **User config**: `~/.config/mcp-tui/connections.json` (saved connections format)
23
+ 4. **Claude Desktop**:
24
+ - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
25
+ - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
26
+ - Linux: `~/.config/Claude/claude_desktop_config.json`
27
+ 5. **VS Code workspace**: `.vscode/mcp.json`
28
+
29
+ ## MCP-TUI Configuration
30
+
31
+ MCP-TUI supports two configuration approaches:
32
+
33
+ 1. **Unified Configuration**: Comprehensive structure for advanced features
34
+ 2. **Saved Connections**: Simplified format for managing multiple servers
35
+
36
+ ### Saved Connections Format (Recommended)
37
+
38
+ The saved connections format provides an intuitive way to manage multiple MCP servers with features like auto-connect, recent connections, and visual organization:
39
+
40
+ ```json
41
+ {
42
+ "version": "1.0",
43
+ "defaultServer": "filesystem",
44
+ "servers": {
45
+ "filesystem": {
46
+ "id": "filesystem",
47
+ "name": "Local Filesystem",
48
+ "description": "Access local files and directories",
49
+ "icon": "📁",
50
+ "transport": "stdio",
51
+ "command": "npx",
52
+ "args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user"],
53
+ "success": false,
54
+ "tags": ["local", "files"],
55
+ "lastUsed": "2025-01-12T10:30:00Z"
56
+ }
57
+ },
58
+ "recentConnections": [
59
+ {
60
+ "serverId": "filesystem",
61
+ "lastUsed": "2025-01-12T10:30:00Z",
62
+ "success": true
63
+ }
64
+ ]
65
+ }
66
+ ```
67
+
68
+ Key features:
69
+ - **Auto-connect**: Set `defaultServer` or configure single server for automatic connection
70
+ - **Visual organization**: Icons, names, descriptions, and tags for easy identification
71
+ - **Recent connections**: Tracks usage history and success status
72
+ - **Environment variables**: Supports `${env:VAR_NAME}` substitution
73
+
74
+ ### Unified Configuration
75
+
76
+ MCP-TUI uses a comprehensive configuration structure that supports multiple aspects of MCP client behavior.
77
+
78
+ ### Basic Structure
79
+
80
+ ```json
81
+ {
82
+ "connection": {
83
+ "type": "stdio|sse|http|streamable-http",
84
+ "command": "command-to-execute",
85
+ "args": ["arg1", "arg2"],
86
+ "url": "http://server-url",
87
+ "headers": {"Header": "Value"}
88
+ },
89
+ "transport": {
90
+ "http": { /* HTTP-specific settings */ },
91
+ "stdio": { /* STDIO-specific settings */ },
92
+ "sse": { /* SSE-specific settings */ }
93
+ },
94
+ "session": { /* Session management settings */ },
95
+ "error_handling": { /* Error handling configuration */ },
96
+ "debug": { /* Debug and logging settings */ },
97
+ "cli": { /* CLI-specific settings */ }
98
+ }
99
+ ```
100
+
101
+ ### Complete Example
102
+
103
+ See `mcp-config.json` and `mcp-config.yaml` for complete configuration examples.
104
+
105
+ ## Claude Desktop Configuration
106
+
107
+ Claude Desktop uses a simpler configuration format focused on server definitions.
108
+
109
+ ### Structure
110
+
111
+ ```json
112
+ {
113
+ "mcpServers": {
114
+ "server-name": {
115
+ "command": "executable",
116
+ "args": ["arg1", "arg2"],
117
+ "env": {
118
+ "ENV_VAR": "value"
119
+ }
120
+ }
121
+ }
122
+ }
123
+ ```
124
+
125
+ ### Multiple Servers Example
126
+
127
+ See `claude-desktop-config.json` for an example with multiple server configurations.
128
+
129
+ ## Transport Types
130
+
131
+ ### STDIO Transport
132
+
133
+ Most common for local MCP servers. The server communicates via standard input/output.
134
+
135
+ ```json
136
+ {
137
+ "type": "stdio",
138
+ "command": "npx",
139
+ "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"]
140
+ }
141
+ ```
142
+
143
+ ### HTTP Transport
144
+
145
+ For REST API-style MCP servers with request/response pattern.
146
+
147
+ ```json
148
+ {
149
+ "type": "http",
150
+ "url": "http://localhost:8080/mcp",
151
+ "headers": {
152
+ "Authorization": "Bearer token"
153
+ }
154
+ }
155
+ ```
156
+
157
+ ### SSE Transport
158
+
159
+ For servers using Server-Sent Events for real-time communication.
160
+
161
+ ```json
162
+ {
163
+ "type": "sse",
164
+ "url": "http://localhost:3000/sse",
165
+ "headers": {
166
+ "X-API-Key": "api-key"
167
+ }
168
+ }
169
+ ```
170
+
171
+ ### Streamable HTTP Transport
172
+
173
+ For servers supporting streaming HTTP responses.
174
+
175
+ ```json
176
+ {
177
+ "type": "streamable-http",
178
+ "url": "http://localhost:8080/mcp/stream"
179
+ }
180
+ ```
181
+
182
+ ## Common Patterns
183
+
184
+ ### Environment Variable Substitution
185
+
186
+ Many configurations support environment variable substitution using `${VAR_NAME}` syntax:
187
+
188
+ ```json
189
+ {
190
+ "headers": {
191
+ "Authorization": "Bearer ${API_TOKEN}",
192
+ "X-API-Key": "${API_KEY}"
193
+ }
194
+ }
195
+ ```
196
+
197
+ ### Timeout Configuration
198
+
199
+ Standard timeout values in Go duration format:
200
+ - `30s` - 30 seconds
201
+ - `5m` - 5 minutes
202
+ - `1h30m` - 1 hour 30 minutes
203
+
204
+ ### Security Settings
205
+
206
+ ```json
207
+ {
208
+ "connection": {
209
+ "deny_unsafe_commands": true,
210
+ "allowed_commands": ["npx", "node", "python"]
211
+ },
212
+ "transport": {
213
+ "http": {
214
+ "tls_min_version": "1.2",
215
+ "tls_insecure_skip_verify": false
216
+ }
217
+ }
218
+ }
219
+ ```
220
+
221
+ ### Debug Configuration
222
+
223
+ ```json
224
+ {
225
+ "debug": {
226
+ "enabled": true,
227
+ "log_level": "debug",
228
+ "http_debugging": true,
229
+ "event_tracing": true
230
+ }
231
+ }
232
+ ```
233
+
234
+ ## Server-Specific Examples
235
+
236
+ ### Official MCP Servers
237
+
238
+ 1. **Everything Server** (test server with all capabilities):
239
+ ```json
240
+ {
241
+ "command": "npx",
242
+ "args": ["-y", "@modelcontextprotocol/server-everything", "stdio"]
243
+ }
244
+ ```
245
+
246
+ 2. **Filesystem Server**:
247
+ ```json
248
+ {
249
+ "command": "npx",
250
+ "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path1", "/path2"]
251
+ }
252
+ ```
253
+
254
+ 3. **SQLite Server**:
255
+ ```json
256
+ {
257
+ "command": "npx",
258
+ "args": ["mcp-server-sqlite", "--db-path", "/path/to/database.db"]
259
+ }
260
+ ```
261
+
262
+ ### Custom Servers
263
+
264
+ 1. **Python Server**:
265
+ ```json
266
+ {
267
+ "command": "python",
268
+ "args": ["server.py", "--port", "3000"],
269
+ "env": {
270
+ "PYTHONPATH": "/path/to/modules"
271
+ }
272
+ }
273
+ ```
274
+
275
+ 2. **Node.js Server**:
276
+ ```json
277
+ {
278
+ "command": "node",
279
+ "args": ["dist/index.js"],
280
+ "env": {
281
+ "NODE_ENV": "production"
282
+ }
283
+ }
284
+ ```
285
+
286
+ 3. **Docker Container**:
287
+ ```json
288
+ {
289
+ "command": "docker",
290
+ "args": ["run", "-i", "--rm", "my-mcp-server:latest"]
291
+ }
292
+ ```
293
+
294
+ ## Best Practices
295
+
296
+ 1. **Use absolute paths** for file references and commands when possible
297
+ 2. **Set appropriate timeouts** based on your server's response times
298
+ 3. **Enable debug logging** during development
299
+ 4. **Use environment variables** for sensitive data like API keys
300
+ 5. **Validate commands** with `deny_unsafe_commands: true` for security
301
+ 6. **Configure health checks** for production deployments
302
+ 7. **Set up proper error handling** with retry logic for network transports
303
+
304
+ ## Validation
305
+
306
+ MCP-TUI includes configuration validation. Common validation rules:
307
+
308
+ - Transport type must be one of: `stdio`, `sse`, `http`, `streamable-http`
309
+ - Timeouts must be positive durations
310
+ - Buffer sizes must be at least 1024 bytes
311
+ - Log levels must be one of: `debug`, `info`, `warn`, `error`
312
+ - Backoff strategies must be one of: `none`, `linear`, `exponential`
313
+
314
+ ## Migration from Other Clients
315
+
316
+ ### From Claude Desktop to MCP-TUI
317
+
318
+ Claude Desktop configuration:
319
+ ```json
320
+ {
321
+ "mcpServers": {
322
+ "myserver": {
323
+ "command": "node",
324
+ "args": ["server.js"]
325
+ }
326
+ }
327
+ }
328
+ ```
329
+
330
+ Equivalent MCP-TUI configuration:
331
+ ```json
332
+ {
333
+ "connection": {
334
+ "type": "stdio",
335
+ "command": "node",
336
+ "args": ["server.js"]
337
+ }
338
+ }
339
+ ```
340
+
341
+ ## Example Files in This Directory
342
+
343
+ ### Saved Connections Format
344
+ - `single-server-config.json` - Simple auto-connect setup
345
+ - `development-preset.json` - Common development tools
346
+ - `multi-transport-config.json` - All transport types with saved connections
347
+ - `production-setup.json` - Production environment configuration
348
+
349
+ ### Unified Configuration Format
350
+ - `mcp-config.json` - Basic MCP-TUI configuration
351
+ - `mcp-config.yaml` - Same configuration in YAML format
352
+ - `multi-server-config.json` - Multiple servers with different transports
353
+ - `transport-examples.json` - Examples for each transport type
354
+
355
+ ### Compatibility Formats
356
+ - `claude-desktop-config.json` - Claude Desktop multi-server example
357
+
358
+ ### Quick Start
359
+
360
+ 1. **Copy a preset**: Use `development-preset.json` as a starting point
361
+ 2. **Auto-connect setup**: Copy `single-server-config.json` for immediate connection
362
+ 3. **Multi-environment**: Use `production-setup.json` for complex setups
363
+ 4. **All features**: Check `multi-transport-config.json` for comprehensive example
@@ -0,0 +1,66 @@
1
+ {
2
+ "mcpServers": {
3
+ "filesystem": {
4
+ "command": "npx",
5
+ "args": [
6
+ "-y",
7
+ "@modelcontextprotocol/server-filesystem",
8
+ "/Users/username/Desktop",
9
+ "/Users/username/Downloads"
10
+ ]
11
+ },
12
+ "weather": {
13
+ "command": "uv",
14
+ "args": [
15
+ "--directory",
16
+ "/path/to/weather",
17
+ "run",
18
+ "weather.py"
19
+ ]
20
+ },
21
+ "github": {
22
+ "command": "node",
23
+ "args": [
24
+ "/path/to/github/dist/index.js"
25
+ ],
26
+ "env": {
27
+ "GITHUB_PERSONAL_ACCESS_TOKEN": "your_github_pat_here"
28
+ }
29
+ },
30
+ "sqlite": {
31
+ "command": "npx",
32
+ "args": [
33
+ "mcp-server-sqlite",
34
+ "--db-path",
35
+ "/path/to/database.db"
36
+ ]
37
+ },
38
+ "puppeteer": {
39
+ "command": "npx",
40
+ "args": [
41
+ "-y",
42
+ "@modelcontextprotocol/server-puppeteer"
43
+ ]
44
+ },
45
+ "postgres": {
46
+ "command": "npx",
47
+ "args": [
48
+ "-y",
49
+ "@modelcontextprotocol/server-postgres",
50
+ "postgresql://localhost/mydb"
51
+ ]
52
+ },
53
+ "custom-local": {
54
+ "command": "python",
55
+ "args": [
56
+ "/path/to/custom/server.py",
57
+ "--port",
58
+ "3000"
59
+ ],
60
+ "env": {
61
+ "API_KEY": "your-api-key",
62
+ "DEBUG": "true"
63
+ }
64
+ }
65
+ }
66
+ }
@@ -0,0 +1,50 @@
1
+ {
2
+ "version": "1.0",
3
+ "defaultServer": "everything",
4
+ "servers": {
5
+ "everything": {
6
+ "id": "everything",
7
+ "name": "Everything Server",
8
+ "description": "Official MCP server with all features for testing",
9
+ "icon": "🌟",
10
+ "transport": "stdio",
11
+ "command": "npx",
12
+ "args": ["-y", "@modelcontextprotocol/server-everything", "stdio"],
13
+ "success": false,
14
+ "tags": ["testing", "development"]
15
+ },
16
+ "filesystem-home": {
17
+ "id": "filesystem-home",
18
+ "name": "Home Directory",
19
+ "description": "Access your home directory files",
20
+ "icon": "🏠",
21
+ "transport": "stdio",
22
+ "command": "npx",
23
+ "args": ["-y", "@modelcontextprotocol/server-filesystem", "~"],
24
+ "success": false,
25
+ "tags": ["filesystem", "home"]
26
+ },
27
+ "filesystem-workspace": {
28
+ "id": "filesystem-workspace",
29
+ "name": "Workspace Files",
30
+ "description": "Access current workspace directory",
31
+ "icon": "💼",
32
+ "transport": "stdio",
33
+ "command": "npx",
34
+ "args": ["-y", "@modelcontextprotocol/server-filesystem", "."],
35
+ "success": false,
36
+ "tags": ["filesystem", "workspace"]
37
+ },
38
+ "sqlite-local": {
39
+ "id": "sqlite-local",
40
+ "name": "Local SQLite DB",
41
+ "description": "Local SQLite database access",
42
+ "icon": "🗄️",
43
+ "transport": "stdio",
44
+ "command": "npx",
45
+ "args": ["-y", "@modelcontextprotocol/server-sqlite", "./database.db"],
46
+ "success": false,
47
+ "tags": ["database", "sqlite"]
48
+ }
49
+ }
50
+ }
@@ -0,0 +1,83 @@
1
+ {
2
+ "connection": {
3
+ "type": "stdio",
4
+ "command": "npx",
5
+ "args": [
6
+ "-y",
7
+ "@modelcontextprotocol/server-everything",
8
+ "stdio"
9
+ ],
10
+ "connection_timeout": "30s",
11
+ "request_timeout": "30s",
12
+ "health_check_timeout": "5s",
13
+ "deny_unsafe_commands": true
14
+ },
15
+ "transport": {
16
+ "http": {
17
+ "timeout": "30s",
18
+ "max_idle_conns": 100,
19
+ "max_idle_conns_per_host": 10,
20
+ "idle_conn_timeout": "90s",
21
+ "tls_min_version": "1.2",
22
+ "user_agent": "mcp-tui/0.1.0"
23
+ },
24
+ "stdio": {
25
+ "command_validation": true,
26
+ "max_processes": 10,
27
+ "process_timeout": "300s",
28
+ "kill_timeout": "10s"
29
+ },
30
+ "sse": {
31
+ "reconnect_interval": "5s",
32
+ "max_reconnect_attempts": 5,
33
+ "buffer_size": 8192,
34
+ "read_timeout": "30s",
35
+ "write_timeout": "10s"
36
+ }
37
+ },
38
+ "session": {
39
+ "health_check_interval": "30s",
40
+ "health_check_timeout": "5s",
41
+ "max_reconnect_attempts": 3,
42
+ "reconnect_delay": "2s",
43
+ "reconnect_backoff": "exponential",
44
+ "max_reconnect_delay": "60s",
45
+ "enable_persistence": false,
46
+ "persistence_interval": "60s"
47
+ },
48
+ "error_handling": {
49
+ "enable_classification": true,
50
+ "user_friendly_messages": true,
51
+ "max_error_history": 1000,
52
+ "error_reporting": false,
53
+ "enable_retry": true,
54
+ "max_retry_attempts": 3,
55
+ "retry_delay": "1s",
56
+ "retry_backoff": "exponential"
57
+ },
58
+ "debug": {
59
+ "enabled": false,
60
+ "log_level": "info",
61
+ "event_tracing": false,
62
+ "max_traced_events": 1000,
63
+ "http_debugging": false,
64
+ "http_trace_body": false,
65
+ "http_trace_headers": false,
66
+ "pretty_print": true,
67
+ "colored_output": true,
68
+ "timestamp_format": "2006-01-02T15:04:05Z07:00",
69
+ "export_events": false,
70
+ "export_format": "json"
71
+ },
72
+ "cli": {
73
+ "output_format": "table",
74
+ "quiet_mode": false,
75
+ "verbose_mode": false,
76
+ "no_color": false,
77
+ "show_progress": true,
78
+ "progress_style": "bar",
79
+ "enable_clipboard": true,
80
+ "enable_paging": true,
81
+ "page_size": 25
82
+ }
83
+ }
@@ -0,0 +1,78 @@
1
+ connection:
2
+ type: stdio
3
+ command: npx
4
+ args:
5
+ - "-y"
6
+ - "@modelcontextprotocol/server-everything"
7
+ - "stdio"
8
+ connection_timeout: 30s
9
+ request_timeout: 30s
10
+ health_check_timeout: 5s
11
+ deny_unsafe_commands: true
12
+
13
+ transport:
14
+ http:
15
+ timeout: 30s
16
+ max_idle_conns: 100
17
+ max_idle_conns_per_host: 10
18
+ idle_conn_timeout: 90s
19
+ tls_min_version: "1.2"
20
+ user_agent: "mcp-tui/0.1.0"
21
+
22
+ stdio:
23
+ command_validation: true
24
+ max_processes: 10
25
+ process_timeout: 300s
26
+ kill_timeout: 10s
27
+
28
+ sse:
29
+ reconnect_interval: 5s
30
+ max_reconnect_attempts: 5
31
+ buffer_size: 8192
32
+ read_timeout: 30s
33
+ write_timeout: 10s
34
+
35
+ session:
36
+ health_check_interval: 30s
37
+ health_check_timeout: 5s
38
+ max_reconnect_attempts: 3
39
+ reconnect_delay: 2s
40
+ reconnect_backoff: exponential
41
+ max_reconnect_delay: 60s
42
+ enable_persistence: false
43
+ persistence_interval: 60s
44
+
45
+ error_handling:
46
+ enable_classification: true
47
+ user_friendly_messages: true
48
+ max_error_history: 1000
49
+ error_reporting: false
50
+ enable_retry: true
51
+ max_retry_attempts: 3
52
+ retry_delay: 1s
53
+ retry_backoff: exponential
54
+
55
+ debug:
56
+ enabled: false
57
+ log_level: info
58
+ event_tracing: false
59
+ max_traced_events: 1000
60
+ http_debugging: false
61
+ http_trace_body: false
62
+ http_trace_headers: false
63
+ pretty_print: true
64
+ colored_output: true
65
+ timestamp_format: "2006-01-02T15:04:05Z07:00"
66
+ export_events: false
67
+ export_format: json
68
+
69
+ cli:
70
+ output_format: table
71
+ quiet_mode: false
72
+ verbose_mode: false
73
+ no_color: false
74
+ show_progress: true
75
+ progress_style: bar
76
+ enable_clipboard: true
77
+ enable_paging: true
78
+ page_size: 25