mcptoai 0.1.0__tar.gz

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 (38) hide show
  1. mcptoai-0.1.0/LICENSE +21 -0
  2. mcptoai-0.1.0/MANIFEST.in +13 -0
  3. mcptoai-0.1.0/PKG-INFO +476 -0
  4. mcptoai-0.1.0/README.md +437 -0
  5. mcptoai-0.1.0/mcptoai.egg-info/PKG-INFO +476 -0
  6. mcptoai-0.1.0/mcptoai.egg-info/SOURCES.txt +36 -0
  7. mcptoai-0.1.0/mcptoai.egg-info/dependency_links.txt +1 -0
  8. mcptoai-0.1.0/mcptoai.egg-info/entry_points.txt +2 -0
  9. mcptoai-0.1.0/mcptoai.egg-info/requires.txt +14 -0
  10. mcptoai-0.1.0/mcptoai.egg-info/top_level.txt +1 -0
  11. mcptoai-0.1.0/mcptoai_linux/__init__.py +2 -0
  12. mcptoai-0.1.0/mcptoai_linux/__main__.py +4 -0
  13. mcptoai-0.1.0/mcptoai_linux/agent.py +203 -0
  14. mcptoai-0.1.0/mcptoai_linux/auth.py +334 -0
  15. mcptoai-0.1.0/mcptoai_linux/cli.py +850 -0
  16. mcptoai-0.1.0/mcptoai_linux/config.py +109 -0
  17. mcptoai-0.1.0/mcptoai_linux/credential_lock.py +253 -0
  18. mcptoai-0.1.0/mcptoai_linux/discover_cli.py +130 -0
  19. mcptoai-0.1.0/mcptoai_linux/jobs.py +380 -0
  20. mcptoai-0.1.0/mcptoai_linux/mcp_config.py +162 -0
  21. mcptoai-0.1.0/mcptoai_linux/mcp_oauth.py +217 -0
  22. mcptoai-0.1.0/mcptoai_linux/mcp_secrets.py +39 -0
  23. mcptoai-0.1.0/mcptoai_linux/paths.py +10 -0
  24. mcptoai-0.1.0/mcptoai_linux/policy.py +89 -0
  25. mcptoai-0.1.0/mcptoai_linux/provider_probe.py +20 -0
  26. mcptoai-0.1.0/mcptoai_linux/provider_registry.py +29 -0
  27. mcptoai-0.1.0/mcptoai_linux/providers/__init__.py +33 -0
  28. mcptoai-0.1.0/mcptoai_linux/providers/anthropic_provider.py +80 -0
  29. mcptoai-0.1.0/mcptoai_linux/providers/base.py +52 -0
  30. mcptoai-0.1.0/mcptoai_linux/providers/evren_provider.py +70 -0
  31. mcptoai-0.1.0/mcptoai_linux/providers/openai_provider.py +122 -0
  32. mcptoai-0.1.0/mcptoai_linux/relay_client.py +548 -0
  33. mcptoai-0.1.0/mcptoai_linux/secret_store.py +418 -0
  34. mcptoai-0.1.0/mcptoai_linux/service.py +92 -0
  35. mcptoai-0.1.0/mcptoai_linux/tools/__init__.py +5 -0
  36. mcptoai-0.1.0/mcptoai_linux/tools/host_tools.py +573 -0
  37. mcptoai-0.1.0/pyproject.toml +54 -0
  38. mcptoai-0.1.0/setup.cfg +4 -0
mcptoai-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 BKTY LTD
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,13 @@
1
+ include LICENSE
2
+ include README.md
3
+ prune tests
4
+ global-exclude *.py[cod]
5
+ global-exclude __pycache__
6
+ global-exclude .DS_Store
7
+ global-exclude *.bak
8
+ global-exclude *.bak_*
9
+ global-exclude *.old
10
+ global-exclude *.orig
11
+ global-exclude *.tmp
12
+ global-exclude .env
13
+ global-exclude .env.*
mcptoai-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,476 @@
1
+ Metadata-Version: 2.4
2
+ Name: mcptoai
3
+ Version: 0.1.0
4
+ Summary: MCPtoAI for Linux: chat with AI on your server from the web, your phone or the terminal
5
+ Author-email: BKTY LTD <info@bktyconsultancy.co.uk>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://mcptoai.com
8
+ Project-URL: Documentation, https://mcptoai.com/how-it-works/
9
+ Project-URL: Privacy, https://mcptoai.com/privacy/
10
+ Project-URL: Terms, https://mcptoai.com/terms/
11
+ Keywords: mcp,ai,agent,llm,remote,server,cli
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Environment :: Console
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Intended Audience :: System Administrators
16
+ Classifier: Operating System :: POSIX :: Linux
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Topic :: System :: Systems Administration
21
+ Requires-Python: >=3.11
22
+ Description-Content-Type: text/markdown
23
+ License-File: LICENSE
24
+ Requires-Dist: fastmcp==2.14.7
25
+ Requires-Dist: mcp==1.30.0
26
+ Requires-Dist: httpx==0.28.1
27
+ Requires-Dist: websockets==15.0.1
28
+ Requires-Dist: PyJWT[crypto]==2.15.1
29
+ Requires-Dist: cryptography==50.0.2
30
+ Requires-Dist: keyring==25.7.0
31
+ Requires-Dist: python-dotenv==1.2.4
32
+ Requires-Dist: Pillow==12.3.0
33
+ Requires-Dist: pydantic==2.13.5
34
+ Requires-Dist: anyio==4.15.1
35
+ Requires-Dist: openai==3.23.0
36
+ Requires-Dist: anthropic==1.11.0
37
+ Requires-Dist: packaging==26.3
38
+ Dynamic: license-file
39
+
40
+ # MCPtoAI for Linux
41
+
42
+ MCPtoAI connects a Linux machine to AI so you can work with it from the MCPtoAI web app, your phone, or directly from a terminal over SSH.
43
+
44
+ Your AI provider credentials stay on the machine. Filesystem access is workspace-scoped, terminal execution is disabled by default, and actions that require approval remain under your control.
45
+
46
+ ## What you can do
47
+
48
+ - **Remote chat** — use your Linux machine from `app.mcptoai.com` or a phone.
49
+ - **Choose your AI provider and model** — configure provider keys locally and switch models without reinstalling the agent.
50
+ - **Use MCP servers** — connect remote HTTPS Streamable HTTP MCP servers or local stdio MCP servers.
51
+ - **Work with files** — expose a controlled workspace rather than your entire filesystem.
52
+ - **Run long jobs** — follow builds, training jobs, scripts and other background work across chat sessions.
53
+ - **Use the terminal** — `mcptoai chat` works over SSH without opening a browser.
54
+ - **Run continuously** — install a systemd user service, or run MCPtoAI in Docker.
55
+
56
+ ## Requirements
57
+
58
+ For a normal Python installation:
59
+
60
+ - Linux
61
+ - Python 3.11 or newer
62
+ - a logged-in MCPtoAI account
63
+ - an API key for the AI provider you want to use, unless that provider does not require one
64
+
65
+ Docker does not require a host Python installation.
66
+
67
+ ## Install
68
+
69
+ ### pipx — recommended
70
+
71
+ ```bash
72
+ pipx install mcptoai
73
+ ```
74
+
75
+ `pipx` keeps the CLI isolated from system Python packages while still making the `mcptoai` command available globally for your user.
76
+
77
+ ### pip
78
+
79
+ ```bash
80
+ python3 -m pip install mcptoai
81
+ ```
82
+
83
+ ### Check the installation
84
+
85
+ ```bash
86
+ mcptoai --version
87
+ mcptoai --help
88
+ ```
89
+
90
+ ## 60-second quick start
91
+
92
+ Pair the machine:
93
+
94
+ ```bash
95
+ mcptoai login
96
+ ```
97
+
98
+ Save a provider API key. The key is requested through a hidden prompt and is not passed as a command-line argument:
99
+
100
+ ```bash
101
+ mcptoai keys set anthropic
102
+ ```
103
+
104
+ See available models and choose one:
105
+
106
+ ```bash
107
+ mcptoai models anthropic
108
+ mcptoai use anthropic <model-id>
109
+ ```
110
+
111
+ Keep the device connected in the background:
112
+
113
+ ```bash
114
+ mcptoai service install
115
+ ```
116
+
117
+ Verify the setup:
118
+
119
+ ```bash
120
+ mcptoai doctor
121
+ mcptoai status
122
+ ```
123
+
124
+ Then open `https://app.mcptoai.com` and select this Linux device.
125
+
126
+ ## Command reference
127
+
128
+ The CLI has built-in documentation. Start with:
129
+
130
+ ```bash
131
+ mcptoai --help
132
+ ```
133
+
134
+ Every major command also has its own help page:
135
+
136
+ ```bash
137
+ mcptoai login --help
138
+ mcptoai keys --help
139
+ mcptoai models --help
140
+ mcptoai use --help
141
+ mcptoai workspace --help
142
+ mcptoai mcp --help
143
+ mcptoai shell --help
144
+ mcptoai jobs --help
145
+ mcptoai chat --help
146
+ mcptoai service --help
147
+ mcptoai update --help
148
+ mcptoai reset --help
149
+ ```
150
+
151
+ ### Account and diagnostics
152
+
153
+ ```bash
154
+ mcptoai login # pair this machine
155
+ mcptoai logout # disconnect it without deleting local keys/settings
156
+ mcptoai status # current pairing/provider/vault/service/job state
157
+ mcptoai doctor # installation and configuration checks
158
+ ```
159
+
160
+ `mcptoai doctor` returns a non-zero exit status when an important check fails, so it can also be used in scripts and deployment checks.
161
+
162
+ ### Provider keys
163
+
164
+ ```bash
165
+ mcptoai keys list
166
+ mcptoai keys set openai
167
+ mcptoai keys set anthropic
168
+ mcptoai keys remove openai
169
+ ```
170
+
171
+ Provider keys are deliberately **not accepted as command-line arguments**. This reduces accidental exposure through shell history and process listings.
172
+
173
+ ### Models
174
+
175
+ ```bash
176
+ mcptoai models
177
+ mcptoai models openai
178
+ mcptoai use openai <model-id>
179
+ ```
180
+
181
+ `mcptoai models` without a provider uses the currently selected provider.
182
+
183
+ ### Filesystem workspace
184
+
185
+ Show the current scope:
186
+
187
+ ```bash
188
+ mcptoai workspace show
189
+ ```
190
+
191
+ Restrict MCPtoAI file tools to one directory:
192
+
193
+ ```bash
194
+ mcptoai workspace set ~/projects/my-app
195
+ ```
196
+
197
+ Return to the default Desktop/Documents/Downloads scope:
198
+
199
+ ```bash
200
+ mcptoai workspace reset
201
+ ```
202
+
203
+ Changing the workspace restarts the background service if it is running.
204
+
205
+ ## MCP servers
206
+
207
+ List configured MCP servers:
208
+
209
+ ```bash
210
+ mcptoai mcp list
211
+ ```
212
+
213
+ ### Remote HTTPS MCP
214
+
215
+ Add a Streamable HTTP MCP endpoint:
216
+
217
+ ```bash
218
+ mcptoai mcp add-http Cloudflare https://mcp.cloudflare.com/mcp
219
+ ```
220
+
221
+ Remote MCP URLs must use HTTPS. If the service uses OAuth, MCPtoAI starts the authorization flow during tool discovery.
222
+
223
+ ### Local stdio MCP
224
+
225
+ ```bash
226
+ mcptoai mcp add-stdio my-tools /path/to/server --arg value
227
+ ```
228
+
229
+ A local stdio MCP server executes code on this machine with your Linux user permissions. For that reason it must be added locally and requires confirmation.
230
+
231
+ Remove a configured server using the id shown by `mcptoai mcp list`:
232
+
233
+ ```bash
234
+ mcptoai mcp remove mcp-0123456789ab
235
+ ```
236
+
237
+ ## Terminal command permission
238
+
239
+ Terminal execution and long-running jobs are controlled by a local permission:
240
+
241
+ ```bash
242
+ mcptoai shell status
243
+ mcptoai shell on
244
+ mcptoai shell off
245
+ ```
246
+
247
+ Important security properties:
248
+
249
+ - terminal execution is **off by default**;
250
+ - it can only be enabled locally on the Linux machine;
251
+ - a remote web client cannot turn it on;
252
+ - sensitive tool calls can still require explicit approval.
253
+
254
+ ## Long-running jobs
255
+
256
+ ```bash
257
+ mcptoai jobs list
258
+ mcptoai jobs show job-1234abcd
259
+ mcptoai jobs logs job-1234abcd
260
+ mcptoai jobs logs job-1234abcd --follow
261
+ mcptoai jobs stop job-1234abcd
262
+ ```
263
+
264
+ Jobs are kept independently of one model response, so a later chat/model session can still inspect their state.
265
+
266
+ ## Terminal chat
267
+
268
+ Start a chat directly over SSH or a local terminal:
269
+
270
+ ```bash
271
+ mcptoai chat
272
+ ```
273
+
274
+ Override the configured model for that terminal session:
275
+
276
+ ```bash
277
+ mcptoai chat --provider openai --model <model-id>
278
+ ```
279
+
280
+ Inside terminal chat:
281
+
282
+ ```text
283
+ /help
284
+ /model <model-id>
285
+ /provider <provider> <model-id>
286
+ /new
287
+ /jobs
288
+ /exit
289
+ ```
290
+
291
+ When a tool needs approval, the terminal asks interactively. Non-interactive stdin does not silently approve tool calls.
292
+
293
+ ## Background service
294
+
295
+ Install the systemd user service after pairing:
296
+
297
+ ```bash
298
+ mcptoai service install
299
+ ```
300
+
301
+ Manage it with:
302
+
303
+ ```bash
304
+ mcptoai service status
305
+ mcptoai service restart
306
+ mcptoai service stop
307
+ mcptoai service start
308
+ mcptoai service logs
309
+ mcptoai service logs --follow
310
+ mcptoai service uninstall
311
+ ```
312
+
313
+ For servers that must remain reachable after you log out, `mcptoai doctor` also checks whether systemd user lingering is enabled and shows the relevant `loginctl` command when needed.
314
+
315
+ For foreground/debug operation:
316
+
317
+ ```bash
318
+ mcptoai connect
319
+ ```
320
+
321
+ ## Updating MCPtoAI
322
+
323
+ Check whether a newer CLI release is available on PyPI without changing anything:
324
+
325
+ ```bash
326
+ mcptoai update --check
327
+ ```
328
+
329
+ Install the latest release:
330
+
331
+ ```bash
332
+ mcptoai update
333
+ ```
334
+
335
+ MCPtoAI detects how the CLI was installed:
336
+
337
+ - **pipx** installations use `pipx upgrade mcptoai`;
338
+ - **pip / virtual environment** installations use the Python interpreter running MCPtoAI with `pip install --upgrade mcptoai`;
339
+ - if the MCPtoAI systemd user service was already running, it is restarted only after a successful update;
340
+ - if the upgrade fails, the running background service is left alone;
341
+ - **Docker** installations are not modified from inside the container. Pull the newer image and recreate/restart the container instead.
342
+
343
+ You can always confirm the installed version with:
344
+
345
+ ```bash
346
+ mcptoai --version
347
+ ```
348
+
349
+
350
+ ## Docker
351
+
352
+ Pair using a persistent configuration volume:
353
+
354
+ ```bash
355
+ docker run -it --rm \
356
+ -v mcptoai:/home/mcptoai/.config \
357
+ ghcr.io/abktya/mcptoai login
358
+ ```
359
+
360
+ Then run continuously:
361
+
362
+ ```bash
363
+ docker run -d \
364
+ --name mcptoai \
365
+ --restart unless-stopped \
366
+ -v mcptoai:/home/mcptoai/.config \
367
+ ghcr.io/abktya/mcptoai
368
+ ```
369
+
370
+ Inside Docker, the container restart policy replaces the systemd user service.
371
+
372
+ ## Troubleshooting
373
+
374
+ Start with:
375
+
376
+ ```bash
377
+ mcptoai status
378
+ mcptoai doctor
379
+ ```
380
+
381
+ Check the background service:
382
+
383
+ ```bash
384
+ mcptoai service status
385
+ mcptoai service logs -n 100
386
+ ```
387
+
388
+ Follow live logs:
389
+
390
+ ```bash
391
+ mcptoai service logs --follow
392
+ ```
393
+
394
+ For a Python traceback while debugging a CLI failure:
395
+
396
+ ```bash
397
+ MCPTOAI_DEBUG=1 mcptoai <command>
398
+ ```
399
+
400
+ If an AI provider is not ready:
401
+
402
+ ```bash
403
+ mcptoai keys list
404
+ mcptoai models <provider>
405
+ mcptoai use <provider> <model-id>
406
+ ```
407
+
408
+ If a remote MCP integration is not available, inspect configured servers with:
409
+
410
+ ```bash
411
+ mcptoai mcp list
412
+ ```
413
+
414
+ ## Security model
415
+
416
+ MCPtoAI is designed so that connecting the machine does not automatically grant unrestricted execution access.
417
+
418
+ - Provider API keys are stored locally in the MCPtoAI vault.
419
+ - Keys are not accepted as normal CLI arguments.
420
+ - File tools are constrained to the configured workspace.
421
+ - Terminal execution is disabled by default and can only be enabled locally.
422
+ - Local stdio MCP servers require local confirmation because they execute code on the machine.
423
+ - Remote MCP endpoints must use HTTPS; OAuth integrations can authorize through their provider.
424
+ - Sensitive tool actions can require approval before execution.
425
+ - The device establishes an outbound connection; you do not need to expose an inbound MCPtoAI port on the server.
426
+
427
+ See the security documentation for the current threat model and implementation details: `https://mcptoai.com/security/`.
428
+
429
+ ## Disconnect, uninstall and reset
430
+
431
+ Disconnect the device but keep local configuration:
432
+
433
+ ```bash
434
+ mcptoai logout
435
+ ```
436
+
437
+ Remove only the background service:
438
+
439
+ ```bash
440
+ mcptoai service uninstall
441
+ ```
442
+
443
+ Completely remove the local MCPtoAI configuration, provider credentials, MCP configuration, pairing and service:
444
+
445
+ ```bash
446
+ mcptoai reset
447
+ ```
448
+
449
+ `mcptoai reset` is destructive for **local MCPtoAI data on this machine**. It does not delete your MCPtoAI account or cloud-side account data.
450
+
451
+ To remove the Python package afterwards:
452
+
453
+ ```bash
454
+ pipx uninstall mcptoai
455
+ ```
456
+
457
+ or, if installed with pip:
458
+
459
+ ```bash
460
+ python3 -m pip uninstall mcptoai
461
+ ```
462
+
463
+ ## License
464
+
465
+ The MCPtoAI Linux CLI/agent is available under the MIT License. The hosted MCPtoAI service, backend, relay, web application and trademarks are separate from the MIT-licensed client code.
466
+
467
+ ## Links
468
+
469
+ - Product: `https://mcptoai.com/`
470
+ - Web app: `https://app.mcptoai.com/`
471
+ - How it works: `https://mcptoai.com/how-it-works/`
472
+ - Security: `https://mcptoai.com/security/`
473
+ - Privacy: `https://mcptoai.com/privacy/`
474
+ - Terms: `https://mcptoai.com/terms/`
475
+
476
+ © BKTY LTD