remote-access-mcp 4.5.0 → 4.6.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.
package/README.ru.md ADDED
@@ -0,0 +1,95 @@
1
+ # Remote Access MCP
2
+
3
+ > **Дайте вашему AI-ассистенту реальный доступ к вашему компьютеру.**
4
+ >
5
+ > Подключите ChatGPT, Claude, Grok, Qwen Desktop и другие MCP-клиенты к ноутбуку, ПК, VM или серверу. Agent сможет читать файлы, изменять код, запускать тесты, проверять логи и выполнять многошаговые задачи в рамках выданных разрешений.
6
+
7
+ Remote Access MCP — безопасный gateway для доступа к реальной машине через [Model Context Protocol (MCP)](https://modelcontextprotocol.io/).
8
+
9
+ Вместо ответа “выполните эту команду” Agent может выполнить цикл:
10
+
11
+ **Наблюдение → Планирование → Изменение → Тест → Проверка → Отчёт**
12
+
13
+ ## Возможности
14
+
15
+ В зависимости от разрешений Token Agent может:
16
+
17
+ - читать, создавать, изменять, удалять и искать файлы
18
+ - загружать и скачивать binary-файлы
19
+ - запускать тесты, сборку и контролируемые Shell-команды
20
+ - проверять процессы, диск, сеть, сервисы и логи
21
+ - работать с Git
22
+ - использовать SQLite, MySQL, PostgreSQL и Redis
23
+ - проверять HTTP endpoints и опциональный browser runtime
24
+ - запускать background jobs и ограниченные параллельные задачи
25
+ - использовать scheduler и webhook/event automation
26
+ - анализировать Docker/Kubernetes
27
+ - создавать Snapshot и выполнять Rollback рискованных изменений
28
+
29
+ ## Платформы
30
+
31
+ Core Gateway поддерживает **Linux, macOS и Windows** с Node.js 18+.
32
+
33
+ ```bash
34
+ npm install -g remote-access-mcp
35
+ ramcp init
36
+ ramcp tunnel
37
+ ```
38
+
39
+ Для core runtime не нужны Python или Docker.
40
+
41
+ ## Безопасность
42
+
43
+ Права задаются через Token и могут включать:
44
+
45
+ - разрешённые и запрещённые каталоги
46
+ - Tool Scopes
47
+ - роли `auditor`, `developer`, `deployer`, `admin`
48
+ - Shell и Command Allowlist
49
+ - Read-only режим
50
+ - Rate Limit
51
+ - срок действия Token
52
+
53
+ Также есть защита путей, SSRF protection, проверка Git-аргументов, ограничения SQLite, Audit Hash Chain, Snapshot/Rollback и изоляция плагинов.
54
+
55
+ **Цель — не дать AI бесконтрольную власть, а сделать его возможности явными, ограниченными, наблюдаемыми и отзывными.**
56
+
57
+ ## Подключение AI-клиента
58
+
59
+ Для клиентов с Token в URL:
60
+
61
+ ```text
62
+ https://your-host/<token>/mcp
63
+ ```
64
+
65
+ Для клиентов с Authorization Header:
66
+
67
+ ```text
68
+ https://your-host/mcp
69
+ Authorization: Bearer <token>
70
+ ```
71
+
72
+ ```bash
73
+ ramcp url
74
+ ```
75
+
76
+ ## Разработка
77
+
78
+ ```bash
79
+ git clone https://github.com/AmirAliManzar/remote-access-mcp.git
80
+ cd remote-access-mcp
81
+ npm install
82
+ npm test
83
+ npm run build
84
+ ```
85
+
86
+ - [English README](README.md)
87
+ - [فارسی](README.fa.md)
88
+ - [中文](README.zh-CN.md)
89
+ - [Türkçe](README.tr.md)
90
+ - [Security](SECURITY.md)
91
+ - [Roadmap](ROADMAP.md)
92
+
93
+ ## License
94
+
95
+ MIT © Amir Ali Manzar
package/README.tr.md ADDED
@@ -0,0 +1,94 @@
1
+ # Remote Access MCP
2
+
3
+ > **Yapay zekâ asistanınıza bilgisayarınıza gerçek erişim verin.**
4
+ >
5
+ > ChatGPT, Claude, Grok, Qwen Desktop ve diğer MCP uyumlu istemcileri dizüstü bilgisayarınıza, masaüstünüze, VM'inize veya sunucunuza bağlayın. Agent; dosya okuyabilir, kod değiştirebilir, test çalıştırabilir, log inceleyebilir ve çok adımlı işleri tamamlayabilir.
6
+
7
+ Remote Access MCP, [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) tabanlı güvenli bir makine erişim gateway'idir.
8
+
9
+ AI yalnızca “şu komutu çalıştır” demek yerine, verdiğiniz yetkiler dahilinde gerçek bir iş döngüsü gerçekleştirebilir:
10
+
11
+ **Gözlemle → Planla → Değiştir → Test Et → Doğrula → Raporla**
12
+
13
+ ## Neler yapabilir?
14
+
15
+ Token izinlerine bağlı olarak Agent:
16
+
17
+ - dosyaları okuyabilir, oluşturabilir, düzenleyebilir, silebilir ve arayabilir
18
+ - binary dosya yükleyebilir/indirebilir
19
+ - test, build, lint ve kontrollü Shell komutları çalıştırabilir
20
+ - process, disk, network, service ve logları inceleyebilir
21
+ - Git repository'leriyle çalışabilir
22
+ - SQLite, MySQL, PostgreSQL ve Redis sorgulayabilir
23
+ - HTTP endpoint'leri ve isteğe bağlı browser ortamını inceleyebilir
24
+ - background job ve sınırlı paralel görevler çalıştırabilir
25
+ - scheduler ve webhook/event otomasyonları kullanabilir
26
+ - Docker/Kubernetes altyapısını inceleyebilir
27
+ - Snapshot alıp riskli dosya değişikliklerini geri alabilir
28
+
29
+ ## Platformlar
30
+
31
+ Çekirdek Gateway **Linux, macOS ve Windows** üzerinde Node.js 18+ ile çalışır.
32
+
33
+ ```bash
34
+ npm install -g remote-access-mcp
35
+ ramcp init
36
+ ramcp tunnel
37
+ ```
38
+
39
+ Çekirdek çalışma için Python veya Docker gerekmez.
40
+
41
+ ## Güvenlik
42
+
43
+ Token bazlı yetkilendirme ile şunları sınırlandırabilirsiniz:
44
+
45
+ - izin verilen/reddedilen dizinler
46
+ - Tool Scopes
47
+ - `auditor`, `developer`, `deployer`, `admin` rolleri
48
+ - Shell ve Command Allowlist
49
+ - Read-only modu
50
+ - Rate Limit
51
+ - Token expiration
52
+
53
+ Ayrıca path güvenliği, SSRF koruması, Git argüman doğrulaması, SQLite kısıtlamaları, audit hash chain, snapshot/rollback ve plugin isolation gibi katmanlar bulunur.
54
+
55
+ **Amaç AI'ya sınırsız güç vermek değil; yeteneklerini açık, sınırlı, gözlemlenebilir ve iptal edilebilir hale getirmektir.**
56
+
57
+ ## AI istemcisini bağlama
58
+
59
+ URL üzerinden Token kabul eden istemciler:
60
+
61
+ ```text
62
+ https://your-host/<token>/mcp
63
+ ```
64
+
65
+ Authorization Header destekleyen istemciler:
66
+
67
+ ```text
68
+ https://your-host/mcp
69
+ Authorization: Bearer <token>
70
+ ```
71
+
72
+ ```bash
73
+ ramcp url
74
+ ```
75
+
76
+ ## Geliştirme
77
+
78
+ ```bash
79
+ git clone https://github.com/AmirAliManzar/remote-access-mcp.git
80
+ cd remote-access-mcp
81
+ npm install
82
+ npm test
83
+ npm run build
84
+ ```
85
+
86
+ - [English README](README.md)
87
+ - [فارسی](README.fa.md)
88
+ - [中文](README.zh-CN.md)
89
+ - [Security](SECURITY.md)
90
+ - [Roadmap](ROADMAP.md)
91
+
92
+ ## License
93
+
94
+ MIT © Amir Ali Manzar
@@ -0,0 +1,94 @@
1
+ # Remote Access MCP
2
+
3
+ > **让你的 AI 助手真正访问你的电脑。**
4
+ >
5
+ > 将 ChatGPT、Claude、Grok、Qwen Desktop 等支持 MCP 的客户端连接到你的笔记本、台式机、虚拟机或服务器,让 Agent 真正读取文件、修改代码、运行测试、检查日志并完成多步骤任务。
6
+
7
+ Remote Access MCP 是一个基于 [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) 的安全机器访问网关。
8
+
9
+ AI 不再只能告诉你“应该运行什么命令”,而可以在你授权的范围内执行完整工作流:
10
+
11
+ **观察 → 计划 → 修改 → 测试 → 验证 → 汇报**
12
+
13
+ ## 能做什么?
14
+
15
+ 根据 Token 权限,Agent 可以:
16
+
17
+ - 阅读、创建、修改、删除和搜索文件
18
+ - 上传/下载二进制文件
19
+ - 运行测试、构建、脚本和受控 Shell 命令
20
+ - 检查进程、磁盘、网络、服务和日志
21
+ - 操作 Git 仓库
22
+ - 使用 SQLite、MySQL、PostgreSQL、Redis
23
+ - 检查 HTTP Endpoint 和可选 Browser 环境
24
+ - 并行执行任务和后台 Job
25
+ - 创建定时任务和 Webhook/Event 自动化
26
+ - 检查 Docker/Kubernetes 等基础设施
27
+ - 创建 Snapshot 并回滚风险文件修改
28
+ - 使用可选的 Context7、Codebase Memory 等集成
29
+
30
+ ## 跨平台
31
+
32
+ 核心 Gateway 支持 **Linux、macOS、Windows**,Node.js 18+。
33
+
34
+ ```bash
35
+ npm install -g remote-access-mcp
36
+ ramcp init
37
+ ramcp tunnel
38
+ ```
39
+
40
+ 不需要 Python,也不需要 Docker 才能运行核心 Gateway。
41
+
42
+ ## 安全
43
+
44
+ 权限以 Token 为中心,可以限制:
45
+
46
+ - 允许/拒绝的目录
47
+ - Tool Scopes
48
+ - `auditor` / `developer` / `deployer` / `admin` Role
49
+ - Shell 和 Command Allowlist
50
+ - Read-only 模式
51
+ - Rate Limit
52
+ - Token 过期时间
53
+
54
+ 同时提供路径安全检查、SSRF 防护、Git 参数验证、SQLite 限制、Audit Hash Chain、Snapshot/Rollback 和插件隔离等机制。
55
+
56
+ **AI 的能力应该是明确、受限、可观察、可撤销的。**
57
+
58
+ ## 连接 AI 客户端
59
+
60
+ 支持 URL Token 的客户端:
61
+
62
+ ```text
63
+ https://your-host/<token>/mcp
64
+ ```
65
+
66
+ 支持 Authorization Header 的客户端:
67
+
68
+ ```text
69
+ https://your-host/mcp
70
+ Authorization: Bearer <token>
71
+ ```
72
+
73
+ ```bash
74
+ ramcp url
75
+ ```
76
+
77
+ ## 开发
78
+
79
+ ```bash
80
+ git clone https://github.com/AmirAliManzar/remote-access-mcp.git
81
+ cd remote-access-mcp
82
+ npm install
83
+ npm test
84
+ npm run build
85
+ ```
86
+
87
+ - [English README](README.md)
88
+ - [فارسی](README.fa.md)
89
+ - [Security](SECURITY.md)
90
+ - [Roadmap](ROADMAP.md)
91
+
92
+ ## License
93
+
94
+ MIT © Amir Ali Manzar
@@ -7,6 +7,13 @@ export interface TunnelProviderOptions {
7
7
  timeoutMs?: number;
8
8
  log?: (msg: string) => void;
9
9
  }
10
+ export interface TunnelHealth {
11
+ healthy: boolean;
12
+ status?: number;
13
+ reason?: string;
14
+ }
15
+ /** Verify that a public URL is actually serving this MCP gateway, not merely an HTTP edge/provider error. */
16
+ export declare function verifyTunnelHealth(url: string, expectedVersion?: string, timeoutMs?: number): Promise<TunnelHealth>;
10
17
  export declare function startTunnelProvider(name: TunnelProviderName, opts: TunnelProviderOptions): Promise<TunnelHandle>;
11
18
  export declare function startTunnelAuto(opts: TunnelProviderOptions, preferred?: TunnelProviderName): Promise<TunnelHandle>;
12
19
  //# sourceMappingURL=tunnel-providers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tunnel-providers.d.ts","sourceRoot":"","sources":["../../src/core/tunnel-providers.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAGlE,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,QAAQ,GAAG,cAAc,CAAC;AAE1E,eAAO,MAAM,gBAAgB,EAAE,kBAAkB,EAA6C,CAAC;AAE/F,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAqCD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC,CAOtH;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,qBAAqB,EAAE,SAAS,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAQxH"}
1
+ {"version":3,"file":"tunnel-providers.d.ts","sourceRoot":"","sources":["../../src/core/tunnel-providers.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAGlE,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,QAAQ,GAAG,cAAc,CAAC;AAE1E,eAAO,MAAM,gBAAgB,EAAE,kBAAkB,EAA6C,CAAC;AAE/F,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,6GAA6G;AAC7G,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,SAAS,SAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,CAoBxH;AAqCD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC,CAOtH;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,qBAAqB,EAAE,SAAS,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAQxH"}
@@ -2,6 +2,35 @@ import { spawn } from 'node:child_process';
2
2
  import { startQuickTunnel } from './tunnel.js';
3
3
  import { which } from './platform.js';
4
4
  export const TUNNEL_PROVIDERS = ['cloudflare', 'pinggy', 'localhostrun'];
5
+ /** Verify that a public URL is actually serving this MCP gateway, not merely an HTTP edge/provider error. */
6
+ export async function verifyTunnelHealth(url, expectedVersion, timeoutMs = 5_000) {
7
+ try {
8
+ const response = await fetch(`${url.replace(/\/$/, '')}/health`, {
9
+ signal: AbortSignal.timeout(timeoutMs),
10
+ headers: { accept: 'application/json' },
11
+ });
12
+ const body = await response.text();
13
+ if (!response.ok)
14
+ return { healthy: false, status: response.status, reason: `HTTP ${response.status}: ${body.slice(0, 160)}` };
15
+ let payload;
16
+ try {
17
+ payload = JSON.parse(body);
18
+ }
19
+ catch {
20
+ return { healthy: false, status: response.status, reason: 'health endpoint returned non-JSON content' };
21
+ }
22
+ if (payload?.status !== 'ok' || payload?.service !== 'remote-access-mcp') {
23
+ return { healthy: false, status: response.status, reason: 'health response is not from Remote Access MCP' };
24
+ }
25
+ if (expectedVersion && payload.version !== expectedVersion) {
26
+ return { healthy: false, status: response.status, reason: `version mismatch: expected ${expectedVersion}, got ${payload.version ?? 'unknown'}` };
27
+ }
28
+ return { healthy: true, status: response.status };
29
+ }
30
+ catch (e) {
31
+ return { healthy: false, reason: e?.message || String(e) };
32
+ }
33
+ }
5
34
  const URL_PATTERNS = {
6
35
  pinggy: /https:\/\/[^\s"'<>]+\.(?:free\.pinggy\.net|pinggy-free\.link)/i,
7
36
  localhostrun: /https:\/\/[^\s"'<>]+\.lhr\.life/i,
@@ -1 +1 @@
1
- {"version":3,"file":"tunnel-providers.js","sourceRoot":"","sources":["../../src/core/tunnel-providers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tunnel-providers.js","sourceRoot":"","sources":["../../src/core/tunnel-providers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/server/run.ts"],"names":[],"mappings":"AAWA,OAAO,EAAwC,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAU5G,wBAAsB,SAAS,CAAC,IAAI,GAAE;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAAC;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0JrB"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/server/run.ts"],"names":[],"mappings":"AAWA,OAAO,EAA8E,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAUlJ,wBAAsB,SAAS,CAAC,IAAI,GAAE;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAAC;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuNrB"}
@@ -8,7 +8,7 @@ import { loadLiveConfig } from '../core/config.js';
8
8
  import { buildApp } from './app.js';
9
9
  import { startScheduler } from '../tools/schedule.js';
10
10
  import { shellCommand, childEnv, platformLabel, writeRuntimeState, clearRuntimeState } from '../core/platform.js';
11
- import { startTunnelProvider, startTunnelAuto } from '../core/tunnel-providers.js';
11
+ import { startTunnelProvider, startTunnelAuto, verifyTunnelHealth, TUNNEL_PROVIDERS } from '../core/tunnel-providers.js';
12
12
  import { jobManager } from '../core/jobs.js';
13
13
  import { allowDirectPort, chooseDirectPort, denyDirectPort, getPublicIPv4 } from '../core/direct-http.js';
14
14
  import { AuditLog } from '../core/audit.js';
@@ -86,34 +86,23 @@ export async function runServer(opts = {}) {
86
86
  writeRuntimeState({ pid: process.pid, tunnel_url: tunnel.url, tunnel_provider: tunnel.provider, host, port, started: new Date().toISOString() });
87
87
  console.log(`\npublic URL: ${tunnel.url}${cfg.mcp_path}`);
88
88
  console.log(`connector: ${tunnel.url}/${cfg.tokens[0].token}${cfg.mcp_path}`);
89
- // Verify the public URL actually answers. Quick tunnels are best-effort:
90
- // on a few networks (some datacenters, filtered ISPs) the edge accepts
91
- // the connection but never proxies traffic. Telling the user now beats
92
- // them pasting a dead URL into a chatbot later.
93
- try {
94
- const deadline = Date.now() + 20_000;
95
- let healthy = false;
96
- while (Date.now() < deadline && !healthy) {
97
- try {
98
- const r = await fetch(`${tunnel.url}/health`, { signal: AbortSignal.timeout(5000) });
99
- healthy = r.ok;
100
- }
101
- catch { /* DNS/edge propagation — retry */ }
102
- if (!healthy)
103
- await new Promise((r) => setTimeout(r, 3000));
104
- }
105
- if (healthy) {
106
- console.log(`[tunnel] verified: the public URL answers from the internet.`);
107
- }
108
- else {
109
- console.log(`[tunnel] WARNING: could not reach ${tunnel.url} from here.`);
110
- console.log(`[tunnel] Some networks (filtered ISPs, certain datacenters) block the`);
111
- console.log(`[tunnel] tunnel data path. Try a different network, or host the gateway`);
112
- console.log(`[tunnel] on a server with a real domain instead.`);
113
- }
89
+ // Verify the public URL all the way to the MCP gateway. A provider's 503
90
+ // page (for example localhost.run's "No Tunnel here") must never count
91
+ // as a successful verification.
92
+ const initialDeadline = Date.now() + 20_000;
93
+ let initialHealth = await verifyTunnelHealth(tunnel.url, PKG.version);
94
+ while (!initialHealth.healthy && Date.now() < initialDeadline) {
95
+ await new Promise((r) => setTimeout(r, 3000));
96
+ initialHealth = await verifyTunnelHealth(tunnel.url, PKG.version);
97
+ }
98
+ if (initialHealth.healthy) {
99
+ console.log(`[tunnel] verified: public endpoint reaches Remote Access MCP v${PKG.version}.`);
100
+ }
101
+ else {
102
+ console.log(`[tunnel] WARNING: public endpoint is unhealthy: ${initialHealth.reason || 'unknown error'}`);
103
+ console.log(`[tunnel] the tunnel will be monitored and automatically recovered when possible.`);
114
104
  }
115
- catch { /* verification is advisory only */ }
116
- console.log(`\n(keep this process running — the URL dies when it exits)`);
105
+ console.log(`\n(tunnel health is monitored; keep this process running — the URL dies when it exits)`);
117
106
  }
118
107
  catch (e) {
119
108
  tunnelFailed = true;
@@ -122,6 +111,90 @@ export async function runServer(opts = {}) {
122
111
  console.log('[direct] tunnel unavailable; trying direct HTTP fallback.');
123
112
  }
124
113
  }
114
+ let shuttingDown = false;
115
+ let tunnelMonitor;
116
+ let tunnelRecovering = false;
117
+ let monitoredProvider = tunnel?.provider;
118
+ if (tunnel) {
119
+ let consecutiveFailures = 0;
120
+ tunnelMonitor = setInterval(async () => {
121
+ if (tunnelRecovering || shuttingDown)
122
+ return;
123
+ let health = null;
124
+ if (tunnel) {
125
+ health = await verifyTunnelHealth(tunnel.url, PKG.version, 5000);
126
+ if (health.healthy) {
127
+ consecutiveFailures = 0;
128
+ return;
129
+ }
130
+ consecutiveFailures += 1;
131
+ if (consecutiveFailures < 2)
132
+ return;
133
+ console.error(`[tunnel] unhealthy (${tunnel.provider}): ${health.reason || 'unknown error'}`);
134
+ }
135
+ else {
136
+ consecutiveFailures = 2;
137
+ }
138
+ tunnelRecovering = true;
139
+ const failedTunnel = tunnel;
140
+ const failedProvider = failedTunnel?.provider || monitoredProvider || cfg.tunnel?.preferred_provider;
141
+ if (!failedProvider) {
142
+ tunnelRecovering = false;
143
+ return;
144
+ }
145
+ console.log('[tunnel] attempting automatic recovery...');
146
+ try {
147
+ failedTunnel?.stop();
148
+ }
149
+ catch { }
150
+ tunnel = null;
151
+ const preferred = cfg.tunnel?.preferred_provider;
152
+ const order = preferred
153
+ ? [preferred, ...TUNNEL_PROVIDERS.filter((p) => p !== preferred)]
154
+ : [failedProvider, ...TUNNEL_PROVIDERS.filter((p) => p !== failedProvider)];
155
+ let recovered = null;
156
+ const failures = [];
157
+ for (const provider of order) {
158
+ try {
159
+ console.log(`[tunnel] reconnect: trying ${provider}...`);
160
+ const candidate = await startTunnelProvider(provider, { port, host, log: (m) => console.log(`[tunnel] ${m}`) });
161
+ const candidateHealth = await verifyTunnelHealth(candidate.url, PKG.version, 8000);
162
+ if (!candidateHealth.healthy) {
163
+ failures.push(`${provider}: ${candidateHealth.reason || 'health check failed'}`);
164
+ try {
165
+ candidate.stop();
166
+ }
167
+ catch { }
168
+ continue;
169
+ }
170
+ recovered = candidate;
171
+ break;
172
+ }
173
+ catch (e) {
174
+ failures.push(`${provider}: ${e?.message || e}`);
175
+ }
176
+ }
177
+ if (recovered) {
178
+ tunnel = recovered;
179
+ monitoredProvider = recovered.provider;
180
+ cfg.tunnel = { ...(cfg.tunnel || { provider: recovered.provider, auto_start: false }), preferred_provider: recovered.provider, last_url: recovered.url };
181
+ try {
182
+ const { saveConfig } = await import('../core/config.js');
183
+ saveConfig(cfg);
184
+ }
185
+ catch { }
186
+ writeRuntimeState({ pid: process.pid, tunnel_url: recovered.url, tunnel_provider: recovered.provider, host, port, started: new Date().toISOString() });
187
+ console.log(`[tunnel] recovered: ${recovered.provider} → ${recovered.url}${cfg.mcp_path}`);
188
+ consecutiveFailures = 0;
189
+ }
190
+ else {
191
+ console.error(`[tunnel] recovery failed: ${failures.join(' | ')}`);
192
+ tunnelFailed = true;
193
+ }
194
+ tunnelRecovering = false;
195
+ }, 15_000);
196
+ tunnelMonitor.unref();
197
+ }
125
198
  if (wantDirect || (!tunnel && tunnelFailed)) {
126
199
  try {
127
200
  directPort = await chooseDirectPort(opts.directPort ?? cfg.direct_http?.port);
@@ -170,13 +243,14 @@ export async function runServer(opts = {}) {
170
243
  console.log(`endpoint: http://${host}:${port}${cfg.mcp_path}`);
171
244
  console.log(`tip: no public IP? run \`ramcp tunnel\` for an instant https URL.`);
172
245
  }
173
- let shuttingDown = false;
174
246
  const shutdown = () => {
175
247
  if (shuttingDown)
176
248
  return;
177
249
  shuttingDown = true;
178
250
  console.log('\nshutting down...');
179
251
  jobManager.shutdown();
252
+ if (tunnelMonitor)
253
+ clearInterval(tunnelMonitor);
180
254
  tunnel?.stop();
181
255
  if (directPort)
182
256
  void denyDirectPort(directPort);
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/server/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/server/run.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "remote-access-mcp",
3
- "version": "4.5.0",
4
- "description": "Turn any machine into a secure AI-agent-accessible endpoint via MCP. Connect ChatGPT, Claude, Grok, and other MCP clients to files, shell, git, services, and more.",
3
+ "version": "4.6.0",
4
+ "description": "Turn any laptop, desktop, VM, or server into a secure AI-agent workspace via MCP. Let ChatGPT, Claude, Grok, Qwen and other MCP clients read and edit files, run commands, test code, inspect systems, and complete real-world tasks.",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "remote-access-mcp": "dist/main.js",
@@ -11,6 +11,10 @@
11
11
  "dist",
12
12
  "README.md",
13
13
  "README.fa.md",
14
+ "README.zh-CN.md",
15
+ "README.tr.md",
16
+ "README.ru.md",
17
+ "README.ar.md",
14
18
  "LICENSE",
15
19
  "install.sh",
16
20
  "AGENTS.md",
@@ -37,14 +41,23 @@
37
41
  "mcp-gateway",
38
42
  "model-context-protocol",
39
43
  "ai-agent",
44
+ "agentic-ai",
40
45
  "ai-ops",
46
+ "computer-use",
47
+ "coding-agent",
41
48
  "remote-access",
42
49
  "server-management",
50
+ "developer-tools",
43
51
  "infrastructure",
44
52
  "devops",
53
+ "self-hosted",
45
54
  "linux",
55
+ "macos",
56
+ "windows",
46
57
  "chatgpt",
47
- "claude"
58
+ "claude",
59
+ "grok",
60
+ "qwen"
48
61
  ],
49
62
  "author": "Amir Ali Manzar (https://amiralimanzar.ir)",
50
63
  "license": "MIT",