mcp-ssh-vps 0.4.1__py3-none-any.whl

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 (47) hide show
  1. mcp_ssh_vps-0.4.1.dist-info/METADATA +482 -0
  2. mcp_ssh_vps-0.4.1.dist-info/RECORD +47 -0
  3. mcp_ssh_vps-0.4.1.dist-info/WHEEL +5 -0
  4. mcp_ssh_vps-0.4.1.dist-info/entry_points.txt +4 -0
  5. mcp_ssh_vps-0.4.1.dist-info/licenses/LICENSE +21 -0
  6. mcp_ssh_vps-0.4.1.dist-info/top_level.txt +1 -0
  7. sshmcp/__init__.py +3 -0
  8. sshmcp/cli.py +473 -0
  9. sshmcp/config.py +155 -0
  10. sshmcp/core/__init__.py +5 -0
  11. sshmcp/core/container.py +291 -0
  12. sshmcp/models/__init__.py +15 -0
  13. sshmcp/models/command.py +69 -0
  14. sshmcp/models/file.py +102 -0
  15. sshmcp/models/machine.py +139 -0
  16. sshmcp/monitoring/__init__.py +0 -0
  17. sshmcp/monitoring/alerts.py +464 -0
  18. sshmcp/prompts/__init__.py +7 -0
  19. sshmcp/prompts/backup.py +151 -0
  20. sshmcp/prompts/deploy.py +115 -0
  21. sshmcp/prompts/monitor.py +146 -0
  22. sshmcp/resources/__init__.py +7 -0
  23. sshmcp/resources/logs.py +99 -0
  24. sshmcp/resources/metrics.py +204 -0
  25. sshmcp/resources/status.py +160 -0
  26. sshmcp/security/__init__.py +7 -0
  27. sshmcp/security/audit.py +314 -0
  28. sshmcp/security/rate_limiter.py +221 -0
  29. sshmcp/security/totp.py +392 -0
  30. sshmcp/security/validator.py +234 -0
  31. sshmcp/security/whitelist.py +169 -0
  32. sshmcp/server.py +632 -0
  33. sshmcp/ssh/__init__.py +6 -0
  34. sshmcp/ssh/async_client.py +247 -0
  35. sshmcp/ssh/client.py +464 -0
  36. sshmcp/ssh/executor.py +79 -0
  37. sshmcp/ssh/forwarding.py +368 -0
  38. sshmcp/ssh/pool.py +343 -0
  39. sshmcp/ssh/shell.py +518 -0
  40. sshmcp/ssh/transfer.py +461 -0
  41. sshmcp/tools/__init__.py +13 -0
  42. sshmcp/tools/commands.py +226 -0
  43. sshmcp/tools/files.py +220 -0
  44. sshmcp/tools/helpers.py +321 -0
  45. sshmcp/tools/history.py +372 -0
  46. sshmcp/tools/processes.py +214 -0
  47. sshmcp/tools/servers.py +484 -0
@@ -0,0 +1,482 @@
1
+ Metadata-Version: 2.4
2
+ Name: mcp-ssh-vps
3
+ Version: 0.4.1
4
+ Summary: MCP server for managing VPS via SSH - gives AI agents secure access to remote servers
5
+ Author-email: LuxVTZ <luxvtz@example.com>
6
+ Maintainer: LuxVTZ
7
+ License: MIT
8
+ Project-URL: Homepage, https://github.com/LuxVTZ/sshmcp
9
+ Project-URL: Documentation, https://github.com/LuxVTZ/sshmcp#readme
10
+ Project-URL: Repository, https://github.com/LuxVTZ/sshmcp
11
+ Project-URL: Issues, https://github.com/LuxVTZ/sshmcp/issues
12
+ Keywords: mcp,ssh,vps,ai,automation,claude,llm,model-context-protocol
13
+ Classifier: Development Status :: 3 - Alpha
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Topic :: System :: Systems Administration
23
+ Requires-Python: >=3.10
24
+ Description-Content-Type: text/markdown
25
+ License-File: LICENSE
26
+ Requires-Dist: mcp>=1.0.0
27
+ Requires-Dist: pydantic>=2.0.0
28
+ Requires-Dist: paramiko>=3.0.0
29
+ Requires-Dist: structlog>=24.0.0
30
+ Requires-Dist: python-dotenv>=1.0.0
31
+ Requires-Dist: click>=8.0.0
32
+ Provides-Extra: dev
33
+ Requires-Dist: pytest>=8.0.0; extra == "dev"
34
+ Requires-Dist: pytest-asyncio>=0.24.0; extra == "dev"
35
+ Requires-Dist: pytest-mock>=3.14.0; extra == "dev"
36
+ Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
37
+ Requires-Dist: black>=24.0.0; extra == "dev"
38
+ Requires-Dist: ruff>=0.8.0; extra == "dev"
39
+ Requires-Dist: mypy>=1.13.0; extra == "dev"
40
+ Provides-Extra: totp
41
+ Requires-Dist: pyotp>=2.9.0; extra == "totp"
42
+ Requires-Dist: qrcode>=7.0; extra == "totp"
43
+ Provides-Extra: docs
44
+ Requires-Dist: mkdocs>=1.5.0; extra == "docs"
45
+ Requires-Dist: mkdocs-material>=9.5.0; extra == "docs"
46
+ Requires-Dist: pymdown-extensions>=10.0.0; extra == "docs"
47
+ Dynamic: license-file
48
+
49
+ <p align="center">
50
+ <img src="https://img.shields.io/pypi/v/mcp-ssh-vps?color=blue&label=PyPI" alt="PyPI">
51
+ <img src="https://img.shields.io/pypi/pyversions/mcp-ssh-vps" alt="Python">
52
+ <img src="https://img.shields.io/github/license/LuxVTZ/sshmcp" alt="License">
53
+ <img src="https://img.shields.io/pypi/dm/mcp-ssh-vps?color=green" alt="Downloads">
54
+ </p>
55
+
56
+ <h1 align="center">🔐 SSH MCP Server</h1>
57
+
58
+ <p align="center">
59
+ <b>Give AI agents secure access to your VPS servers via SSH</b><br>
60
+ Execute commands, transfer files, manage processes — all through Model Context Protocol
61
+ </p>
62
+
63
+ <p align="center">
64
+ <a href="#-quick-start">Quick Start</a> •
65
+ <a href="#-features">Features</a> •
66
+ <a href="#-ide-integration">IDE Integration</a> •
67
+ <a href="#-tools-reference">Tools</a> •
68
+ <a href="#-security">Security</a>
69
+ </p>
70
+
71
+ ---
72
+
73
+ ## 🚀 Quick Start
74
+
75
+ ### Install
76
+
77
+ ```bash
78
+ # Via pip
79
+ pip install mcp-ssh-vps
80
+
81
+ # Via uvx (recommended for MCP)
82
+ uvx mcp-ssh-vps
83
+ ```
84
+
85
+ ### Add Your First Server
86
+
87
+ ```bash
88
+ # Interactive setup
89
+ uvx mcp-ssh-vps --help
90
+
91
+ # Or use the CLI
92
+ sshmcp-cli server add --name prod --host 192.168.1.100 --user deploy
93
+ sshmcp-cli server test prod
94
+ ```
95
+
96
+ ### Connect to Your AI Agent
97
+
98
+ Add to your AI IDE config and start managing servers with natural language!
99
+
100
+ ```
101
+ "Deploy my app to the production server"
102
+ "Check disk space on all servers"
103
+ "Restart nginx on web1 and web2"
104
+ ```
105
+
106
+ ---
107
+
108
+ ## ✨ Features
109
+
110
+ | Feature | Description |
111
+ |---------|-------------|
112
+ | 🖥️ **Execute Commands** | Run any shell command on remote servers |
113
+ | 📁 **File Operations** | Read, write, and list files via SFTP |
114
+ | ⚙️ **Process Management** | Control systemd, pm2, supervisor services |
115
+ | 🏷️ **Server Tags** | Group servers with tags for batch operations |
116
+ | 🔄 **Batch Execution** | Run commands on multiple servers in parallel |
117
+ | 🔒 **Security Profiles** | Strict, moderate, or full access levels |
118
+ | 📝 **Audit Logging** | Track all operations for compliance |
119
+ | 🔑 **SSH Keys & Passwords** | Support for both authentication methods |
120
+
121
+ ---
122
+
123
+ ## 🔌 IDE Integration
124
+
125
+ > **Note:** Config is auto-loaded from `~/.sshmcp/machines.json` by default. No env variables required!
126
+
127
+ ### Claude Code
128
+
129
+ ```bash
130
+ claude mcp add ssh-vps -- uvx mcp-ssh-vps
131
+ ```
132
+
133
+ Or add to `~/.claude.json`:
134
+
135
+ ```json
136
+ {
137
+ "mcpServers": {
138
+ "ssh-vps": {
139
+ "command": "uvx",
140
+ "args": ["mcp-ssh-vps"]
141
+ }
142
+ }
143
+ }
144
+ ```
145
+
146
+ ---
147
+
148
+ ### Factory Droid
149
+
150
+ ```bash
151
+ droid mcp add ssh-vps "uvx mcp-ssh-vps"
152
+ ```
153
+
154
+ Or add to `~/.factory/mcp.json`:
155
+
156
+ ```json
157
+ {
158
+ "mcpServers": {
159
+ "ssh-vps": {
160
+ "command": "uvx",
161
+ "args": ["mcp-ssh-vps"]
162
+ }
163
+ }
164
+ }
165
+ ```
166
+
167
+ ---
168
+
169
+ ### Cursor
170
+
171
+ Add to `~/.cursor/mcp.json`:
172
+
173
+ ```json
174
+ {
175
+ "mcpServers": {
176
+ "ssh-vps": {
177
+ "command": "uvx",
178
+ "args": ["mcp-ssh-vps"]
179
+ }
180
+ }
181
+ }
182
+ ```
183
+
184
+ ---
185
+
186
+ ### Qwen Code
187
+
188
+ ```bash
189
+ qwen mcp add ssh-vps uvx mcp-ssh-vps
190
+ ```
191
+
192
+ Or add to `~/.qwen/settings.json`:
193
+
194
+ ```json
195
+ {
196
+ "mcpServers": {
197
+ "ssh-vps": {
198
+ "command": "uvx",
199
+ "args": ["mcp-ssh-vps"]
200
+ }
201
+ }
202
+ }
203
+ ```
204
+
205
+ ---
206
+
207
+ ### Claude Desktop
208
+
209
+ Add to Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
210
+
211
+ ```json
212
+ {
213
+ "mcpServers": {
214
+ "ssh-vps": {
215
+ "command": "uvx",
216
+ "args": ["mcp-ssh-vps"]
217
+ }
218
+ }
219
+ }
220
+ ```
221
+
222
+ ---
223
+
224
+ ### VS Code + Continue
225
+
226
+ Add to `.continue/config.json`:
227
+
228
+ ```json
229
+ {
230
+ "experimental": {
231
+ "modelContextProtocolServers": [
232
+ {
233
+ "transport": {
234
+ "type": "stdio",
235
+ "command": "uvx",
236
+ "args": ["mcp-ssh-vps"]
237
+ }
238
+ }
239
+ ]
240
+ }
241
+ }
242
+ ```
243
+
244
+ ---
245
+
246
+ ### Windsurf
247
+
248
+ Add to `~/.codeium/windsurf/mcp_config.json`:
249
+
250
+ ```json
251
+ {
252
+ "mcpServers": {
253
+ "ssh-vps": {
254
+ "command": "uvx",
255
+ "args": ["mcp-ssh-vps"]
256
+ }
257
+ }
258
+ }
259
+ ```
260
+
261
+ ---
262
+
263
+ ### OpenAI Codex CLI
264
+
265
+ ```bash
266
+ codex --mcp-config '{"ssh-vps": {"command": "uvx", "args": ["mcp-ssh-vps"]}}'
267
+ ```
268
+
269
+ ---
270
+
271
+ ### Any MCP-Compatible Client
272
+
273
+ Generic stdio configuration:
274
+
275
+ ```json
276
+ {
277
+ "command": "uvx",
278
+ "args": ["mcp-ssh-vps"]
279
+ }
280
+ ```
281
+
282
+ > **Custom config path?** Add `"env": {"SSHMCP_CONFIG_PATH": "/custom/path.json"}`
283
+
284
+ ---
285
+
286
+ ## 🛠️ Tools Reference
287
+
288
+ ### Command Execution
289
+
290
+ | Tool | Description | Example |
291
+ |------|-------------|---------|
292
+ | `execute_command` | Run command on server | `execute_command("prod", "docker ps")` |
293
+ | `execute_on_multiple` | Run on multiple servers | `execute_on_multiple(["*"], "uptime")` |
294
+
295
+ ### Server Management
296
+
297
+ | Tool | Description | Example |
298
+ |------|-------------|---------|
299
+ | `list_servers` | List all servers | `list_servers()` or `list_servers(tag="web")` |
300
+ | `add_server` | Add new server | `add_server("web1", "1.2.3.4", "root")` |
301
+ | `remove_server` | Remove server | `remove_server("old-server")` |
302
+ | `test_connection` | Test SSH connection | `test_connection("prod")` |
303
+
304
+ ### File Operations
305
+
306
+ | Tool | Description | Example |
307
+ |------|-------------|---------|
308
+ | `read_file` | Read remote file | `read_file("prod", "/var/log/app.log")` |
309
+ | `upload_file` | Upload file | `upload_file("prod", "/tmp/script.sh", "#!/bin/bash\n...")` |
310
+ | `list_files` | List directory | `list_files("prod", "/var/log")` |
311
+
312
+ ### Process Management
313
+
314
+ | Tool | Description | Example |
315
+ |------|-------------|---------|
316
+ | `manage_process` | Control services | `manage_process("prod", "restart", "nginx")` |
317
+
318
+ ### Help & Info
319
+
320
+ | Tool | Description | Example |
321
+ |------|-------------|---------|
322
+ | `get_help` | Get documentation | `get_help("examples")` |
323
+ | `get_allowed_commands` | View security config | `get_allowed_commands("prod")` |
324
+ | `get_server_info` | Server details | `get_server_info("prod")` |
325
+
326
+ ---
327
+
328
+ ## 🏷️ Server Tags & Batch Operations
329
+
330
+ ### Add servers with tags
331
+
332
+ ```python
333
+ add_server("web1", "192.168.1.10", "deploy", tags=["production", "web"])
334
+ add_server("web2", "192.168.1.11", "deploy", tags=["production", "web"])
335
+ add_server("db1", "192.168.1.20", "deploy", tags=["production", "database"])
336
+ ```
337
+
338
+ ### Filter by tag
339
+
340
+ ```python
341
+ list_servers(tag="web") # Only web servers
342
+ list_servers(tag="production") # All production servers
343
+ ```
344
+
345
+ ### Execute on tagged servers
346
+
347
+ ```python
348
+ execute_on_multiple(["tag:web"], "nginx -t") # All web servers
349
+ execute_on_multiple(["tag:production"], "uptime") # All production
350
+ execute_on_multiple(["*"], "df -h") # ALL servers
351
+ ```
352
+
353
+ ---
354
+
355
+ ## 🔒 Security
356
+
357
+ ### Security Profiles
358
+
359
+ | Profile | Allowed Commands | Use Case |
360
+ |---------|-----------------|----------|
361
+ | `strict` | `git`, `ls`, `cat`, `df`, `uptime` | Read-only monitoring |
362
+ | `moderate` | + `docker`, `npm`, `systemctl`, `pm2` | Standard DevOps |
363
+ | `full` | All commands (except `rm -rf /`) | Full access |
364
+
365
+ ### Set security level
366
+
367
+ ```python
368
+ add_server("prod", "1.2.3.4", "root", security_level="full")
369
+ ```
370
+
371
+ ### Audit Logging
372
+
373
+ All commands are logged with timestamps, user, and results:
374
+
375
+ ```
376
+ 2024-01-15T10:30:00Z | prod | root | docker ps | exit_code=0 | 150ms
377
+ ```
378
+
379
+ ---
380
+
381
+ ## 📁 Configuration
382
+
383
+ ### Config Location
384
+
385
+ ```
386
+ ~/.sshmcp/machines.json
387
+ ```
388
+
389
+ ### Example Config
390
+
391
+ ```json
392
+ {
393
+ "machines": [
394
+ {
395
+ "name": "production",
396
+ "host": "192.168.1.100",
397
+ "port": 22,
398
+ "user": "deploy",
399
+ "auth": {
400
+ "type": "key",
401
+ "key_path": "~/.ssh/id_rsa"
402
+ },
403
+ "security": {
404
+ "allowed_commands": [".*"],
405
+ "forbidden_commands": [".*rm\\s+-rf\\s+/$"],
406
+ "timeout_seconds": 120
407
+ },
408
+ "tags": ["production", "web"],
409
+ "description": "Main production server"
410
+ }
411
+ ]
412
+ }
413
+ ```
414
+
415
+ ### Environment Variable
416
+
417
+ ```bash
418
+ export SSHMCP_CONFIG_PATH=/custom/path/machines.json
419
+ ```
420
+
421
+ ---
422
+
423
+ ## 📖 Usage Examples
424
+
425
+ ### Check status of all servers
426
+
427
+ ```
428
+ User: Check the status of all my servers
429
+ AI: I'll run uptime on all configured servers...
430
+
431
+ execute_on_multiple(["*"], "uptime && df -h | head -5")
432
+ ```
433
+
434
+ ### Deploy application
435
+
436
+ ```
437
+ User: Deploy the latest code to production
438
+ AI: I'll pull the latest changes and restart the service...
439
+
440
+ execute_command("prod", "cd /app && git pull origin main")
441
+ execute_command("prod", "npm install --production")
442
+ execute_command("prod", "pm2 restart all")
443
+ ```
444
+
445
+ ### Debug server issues
446
+
447
+ ```
448
+ User: Why is the web server slow?
449
+ AI: Let me check system resources and logs...
450
+
451
+ execute_command("web1", "top -bn1 | head -20")
452
+ execute_command("web1", "tail -50 /var/log/nginx/error.log")
453
+ execute_command("web1", "free -m && df -h")
454
+ ```
455
+
456
+ ---
457
+
458
+ ## 🤝 Contributing
459
+
460
+ Contributions are welcome! Please feel free to submit a Pull Request.
461
+
462
+ ```bash
463
+ git clone https://github.com/LuxVTZ/sshmcp.git
464
+ cd sshmcp
465
+ pip install -e ".[dev]"
466
+ pytest
467
+ ```
468
+
469
+ ---
470
+
471
+ ## 📄 License
472
+
473
+ MIT License - see [LICENSE](LICENSE) for details.
474
+
475
+ ---
476
+
477
+ <p align="center">
478
+ Made with ❤️ for the AI agent ecosystem<br>
479
+ <a href="https://pypi.org/project/mcp-ssh-vps/">PyPI</a> •
480
+ <a href="https://github.com/LuxVTZ/sshmcp">GitHub</a> •
481
+ <a href="https://github.com/LuxVTZ/sshmcp/issues">Issues</a>
482
+ </p>
@@ -0,0 +1,47 @@
1
+ mcp_ssh_vps-0.4.1.dist-info/licenses/LICENSE,sha256=ppiqeMeZlSPENPupmFrUYQ4hLLBVSRXCP-d-fce7in4,1072
2
+ sshmcp/__init__.py,sha256=COyOmnYje5IWNGRx6giHMqj_aosq8fy9HskrEwILMb4,83
3
+ sshmcp/cli.py,sha256=gHaKkgBHSN3Zlf3gDMjYqfSxfwYIR_mlGW3yN3R7lPU,13687
4
+ sshmcp/config.py,sha256=AwpjGSrUvZTbhtFzs-xZu2P-bc7SfVWh6GYBu2dLhdk,3924
5
+ sshmcp/server.py,sha256=vVpsN2xBM-gXesaNSGaAII0CjK0HojKkfusLv31YnD0,17363
6
+ sshmcp/core/__init__.py,sha256=AiFSxn9RBB0f_6bBsDP8Y8WDyPgU38W_2SImrkMqQ6s,174
7
+ sshmcp/core/container.py,sha256=83MUkbmI4pI4pcdadUAsUuYU1mKugR20CQnJsGPyvSI,8300
8
+ sshmcp/models/__init__.py,sha256=mSJBlHEiiBlB43IoJiD4ozj4YWpsGe-tJ0ntSACTPgE,386
9
+ sshmcp/models/command.py,sha256=HgEqmgvUsTiGsrWfAXIty9QTxaH366LouM9Eg5jJS7o,2447
10
+ sshmcp/models/file.py,sha256=1uHk9P8SAbDLmA_jwTah7kYfA5gXUYILyliTLonSjng,3600
11
+ sshmcp/models/machine.py,sha256=CmO_JW_hZetSqk73AeoZTPcw0UL9-6Lc5CSo1LwE_VA,4732
12
+ sshmcp/monitoring/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
+ sshmcp/monitoring/alerts.py,sha256=rnpqBWCC2mL7_2kP9m_YKp9rwZb1ADoGBLi1D1mGSSY,14239
14
+ sshmcp/prompts/__init__.py,sha256=-Zf5OF4pXqrJr-y7TmlUBJxHNdvojthhk5KLljeabwI,249
15
+ sshmcp/prompts/backup.py,sha256=FH7KM4Q4WUiPjAaBMY1mjSXCpK84mUcZURgXjmTxp88,4796
16
+ sshmcp/prompts/deploy.py,sha256=NzLDE0I7E0zU1YLZc0VVqyCEFkNErlJnFGX3BNy7Jek,3388
17
+ sshmcp/prompts/monitor.py,sha256=2_XWUt1ciqAcx0uBhwyOAt1pCwzQQ8fG4P812bLx-SA,3452
18
+ sshmcp/resources/__init__.py,sha256=KFrZR23kZ2RT6uHKMVTW5uAjo_aCN3WGSXnRXmEbmsM,234
19
+ sshmcp/resources/logs.py,sha256=dir6kisW9W9vPtwGsUZsqdSALRvN4Bk2t4t9-4BmxAY,2915
20
+ sshmcp/resources/metrics.py,sha256=Al_yIm9y1f8c4oPChYTvffBVs-CzKcrZQm2c0mFtNzo,5756
21
+ sshmcp/resources/status.py,sha256=aHZNm0rdrl2a9zQcppqYAsy1AePVYdVNZXGmhSzZ_XI,4506
22
+ sshmcp/security/__init__.py,sha256=LAqP2FkGXt5CW7qQLfwAzHU83r__hKtgmyXp9No3WlU,311
23
+ sshmcp/security/audit.py,sha256=Jezna19k9OH_DZCoec5tCJpTWTf0TarnP2yco84g-mw,8288
24
+ sshmcp/security/rate_limiter.py,sha256=ddDMfU_mbIgOwz8OKr2XsfcgorDINiAfE1ABGIsj_KY,6372
25
+ sshmcp/security/totp.py,sha256=tO1NhllxWmu4oYqC5pcrCCWzAlXSSRFW5elv-W5SAaQ,10308
26
+ sshmcp/security/validator.py,sha256=8kOkLoLh16SUaKsRI2AN7goWFiQYeBMP-ld-ROny--s,6424
27
+ sshmcp/security/whitelist.py,sha256=yuTvMgxiv-fQ3iSPWxWGJrsTVHFlwAkZOBu2Viz7ht8,4743
28
+ sshmcp/ssh/__init__.py,sha256=Ck8L6zoDtuvjkU-DPV7mqUWTIJDYovg7r-6K6ZcO9wo,188
29
+ sshmcp/ssh/async_client.py,sha256=puiOfPRVsDBxiTR7CHwMPQNnxvqZytOmyCCCydRgBz0,6904
30
+ sshmcp/ssh/client.py,sha256=lfqQ8PSDisSqcP7E2YHHRxv4Xk2MNuuSSKwMQCqlX1w,14226
31
+ sshmcp/ssh/executor.py,sha256=vvEMqMHx-hdxEA3FzbW3Ek2dBWS0C5Ij5RU8NW3Y0PY,1957
32
+ sshmcp/ssh/forwarding.py,sha256=bL-GqWH--oq_fTWhXKjeQyIM_KUuRfON8cRu3knhhYQ,11487
33
+ sshmcp/ssh/pool.py,sha256=5NKlsIH97_b5RGpj0K4bu16flKac2eLBN0ZhsoLYR00,10967
34
+ sshmcp/ssh/shell.py,sha256=cHbqkW6TznP6sQWEZYCp1gLU9UYLqDzjStm1j2wtCMw,14301
35
+ sshmcp/ssh/transfer.py,sha256=2atMkC3oJHmI7Cmrlb-rmTwdxWJxWiPfcOUyJhbcl-I,15052
36
+ sshmcp/tools/__init__.py,sha256=NWHpxtrS6oitZNY9LKz6uY_QZ3gNa9wAaRLjs64GLRg,317
37
+ sshmcp/tools/commands.py,sha256=ork58xsVPj5_uWojT6OXbkJvgldN-0865aFMfmU0Sjw,7135
38
+ sshmcp/tools/files.py,sha256=7ywoi9S9xz-bPOr9NQNSz245zRfJ8A8_UA1zCFCzDvo,6342
39
+ sshmcp/tools/helpers.py,sha256=BA9Qs5nOeAvWG41V7fZSSP1KsfFMPgwBw2ccVWsMD4Q,12004
40
+ sshmcp/tools/history.py,sha256=PGfDYTseTjPHGGs1S2WvCsVPwxAUF213nR0uGQqUGBE,10906
41
+ sshmcp/tools/processes.py,sha256=sGVufPMjgjt0nDwcwTzuSFLVnWVA4HexmS0-w41sMuA,6429
42
+ sshmcp/tools/servers.py,sha256=Gp-vgFJgd30pd_VxvXFiaTr5un1TtYX7g_HGzUsywTg,13842
43
+ mcp_ssh_vps-0.4.1.dist-info/METADATA,sha256=7DRnqSW_bziZwEl1AO0dV6WoEkFf4MGIJHwOex7Korw,10808
44
+ mcp_ssh_vps-0.4.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
45
+ mcp_ssh_vps-0.4.1.dist-info/entry_points.txt,sha256=fU7-NaKaiAoXlyQoLIIKapL4qm9BZByuLjnrOJC-U-8,108
46
+ mcp_ssh_vps-0.4.1.dist-info/top_level.txt,sha256=otSZGi7nsFnamz7vfHqrlwx188M1FsniIEXwNr9H4o4,7
47
+ mcp_ssh_vps-0.4.1.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,4 @@
1
+ [console_scripts]
2
+ mcp-ssh-vps = sshmcp.server:main
3
+ sshmcp = sshmcp.server:main
4
+ sshmcp-cli = sshmcp.cli:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 SSH MCP Project
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1 @@
1
+ sshmcp
sshmcp/__init__.py ADDED
@@ -0,0 +1,3 @@
1
+ """SSH MCP Server - MCP server for managing VPS via SSH."""
2
+
3
+ __version__ = "0.1.0"