@dotmcp/tunnel 1.0.0 → 1.0.2
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.md +212 -0
- package/dist/config.js +1 -4
- package/dist/config.js.map +1 -1
- package/dist/index.js +14 -16
- package/dist/index.js.map +1 -1
- package/dist/logger.js +1 -5
- package/dist/logger.js.map +1 -1
- package/dist/process-manager.js +3 -7
- package/dist/process-manager.js.map +1 -1
- package/dist/relay-client.d.ts +1 -1
- package/dist/relay-client.d.ts.map +1 -1
- package/dist/relay-client.js +3 -10
- package/dist/relay-client.js.map +1 -1
- package/dist/tunnel.d.ts +2 -2
- package/dist/tunnel.d.ts.map +1 -1
- package/dist/tunnel.js +5 -9
- package/dist/tunnel.js.map +1 -1
- package/package.json +2 -1
package/README.md
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
# @dotmcp/tunnel
|
|
2
|
+
|
|
3
|
+
Connect your local MCP servers to the [dotMCP Marketplace](https://dotmcp.io) without deploying code to the cloud.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- 🔌 **Expose local MCP servers** to the marketplace
|
|
8
|
+
- 🔒 **Secure WebSocket connection** with TLS encryption
|
|
9
|
+
- 🔄 **Auto-reconnect** with exponential backoff
|
|
10
|
+
- 💻 **Works with any MCP server** - Node.js, Python, or any language
|
|
11
|
+
- 🚀 **Zero cloud deployment** - keep your code on-premise or on your own cloud
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# Install globally
|
|
17
|
+
npm install -g @dotmcp/tunnel
|
|
18
|
+
|
|
19
|
+
# Or run directly with npx
|
|
20
|
+
npx @dotmcp/tunnel --help
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Quick Start
|
|
24
|
+
|
|
25
|
+
### 1. Create a Tunnel Server on dotMCP
|
|
26
|
+
|
|
27
|
+
1. Go to [app.dotmcp.io](https://app.dotmcp.io) and log in
|
|
28
|
+
2. Navigate to **Dashboard** → **My Servers** → **New Server**
|
|
29
|
+
3. Select **"Tunnel (Local MCP Server)"**
|
|
30
|
+
4. Enter your server name and description
|
|
31
|
+
5. Copy your **Tunnel Key** from the server settings
|
|
32
|
+
|
|
33
|
+
### 2. Create Configuration
|
|
34
|
+
|
|
35
|
+
Create a `tunnel.yaml` file:
|
|
36
|
+
|
|
37
|
+
```yaml
|
|
38
|
+
key: "dott_your_tunnel_key_here"
|
|
39
|
+
|
|
40
|
+
servers:
|
|
41
|
+
- id: "your-server-id"
|
|
42
|
+
command: "node"
|
|
43
|
+
args: ["./my-mcp-server.js"]
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### 3. Start the Tunnel
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
dotmcp-tunnel -c tunnel.yaml
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Configuration Reference
|
|
53
|
+
|
|
54
|
+
### Basic Configuration
|
|
55
|
+
|
|
56
|
+
```yaml
|
|
57
|
+
key: "dott_xxx..."
|
|
58
|
+
|
|
59
|
+
servers:
|
|
60
|
+
- id: "server-id-from-dashboard"
|
|
61
|
+
command: "node"
|
|
62
|
+
args: ["server.js"]
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Full Configuration Options
|
|
66
|
+
|
|
67
|
+
```yaml
|
|
68
|
+
key: "dott_xxx..."
|
|
69
|
+
|
|
70
|
+
# Optional: Custom relay URL (defaults to wss://relay.dotmcp.io)
|
|
71
|
+
# relay: "wss://relay.dotmcp.io"
|
|
72
|
+
|
|
73
|
+
servers:
|
|
74
|
+
- id: "server-id"
|
|
75
|
+
|
|
76
|
+
# Option 1: Command-based (stdio transport)
|
|
77
|
+
command: "node"
|
|
78
|
+
args: ["./server.js", "--flag"]
|
|
79
|
+
cwd: "/path/to/working/directory"
|
|
80
|
+
env:
|
|
81
|
+
API_KEY: "secret"
|
|
82
|
+
DEBUG: "true"
|
|
83
|
+
|
|
84
|
+
# Option 2: HTTP-based (for running servers)
|
|
85
|
+
# url: "http://localhost:3000/mcp"
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## CLI Usage
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
# Start tunnel with config file
|
|
92
|
+
dotmcp-tunnel -c tunnel.yaml
|
|
93
|
+
|
|
94
|
+
# Start with verbose logging
|
|
95
|
+
dotmcp-tunnel -c tunnel.yaml -v
|
|
96
|
+
|
|
97
|
+
# Show help
|
|
98
|
+
dotmcp-tunnel --help
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Examples
|
|
102
|
+
|
|
103
|
+
### Node.js MCP Server
|
|
104
|
+
|
|
105
|
+
```yaml
|
|
106
|
+
key: "dott_xxx..."
|
|
107
|
+
servers:
|
|
108
|
+
- id: "my-server"
|
|
109
|
+
command: "node"
|
|
110
|
+
args: ["server.js"]
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Using NPM Packages
|
|
114
|
+
|
|
115
|
+
Expose the official MCP demo server:
|
|
116
|
+
|
|
117
|
+
```yaml
|
|
118
|
+
key: "dott_xxx..."
|
|
119
|
+
servers:
|
|
120
|
+
- id: "demo-server"
|
|
121
|
+
command: "npx"
|
|
122
|
+
args: ["-y", "@modelcontextprotocol/server-everything"]
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Python MCP Server
|
|
126
|
+
|
|
127
|
+
```yaml
|
|
128
|
+
key: "dott_xxx..."
|
|
129
|
+
servers:
|
|
130
|
+
- id: "python-server"
|
|
131
|
+
command: "python"
|
|
132
|
+
args: ["-m", "my_mcp_server"]
|
|
133
|
+
cwd: "/home/user/mcp-project"
|
|
134
|
+
env:
|
|
135
|
+
PYTHONPATH: "/home/user/mcp-project"
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Multiple Servers
|
|
139
|
+
|
|
140
|
+
```yaml
|
|
141
|
+
key: "dott_xxx..."
|
|
142
|
+
servers:
|
|
143
|
+
- id: "weather-api"
|
|
144
|
+
command: "node"
|
|
145
|
+
args: ["./servers/weather.js"]
|
|
146
|
+
|
|
147
|
+
- id: "database-tools"
|
|
148
|
+
command: "node"
|
|
149
|
+
args: ["./servers/database.js"]
|
|
150
|
+
env:
|
|
151
|
+
DB_HOST: "localhost"
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## How It Works
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
┌─────────────────┐ WebSocket ┌─────────────────┐
|
|
158
|
+
│ dotmcp-tunnel │◄──────────────────►│ Relay Server │
|
|
159
|
+
│ (your machine) │ │ (Cloudflare) │
|
|
160
|
+
└────────┬────────┘ └────────┬────────┘
|
|
161
|
+
│ stdio │
|
|
162
|
+
▼ ▼
|
|
163
|
+
┌─────────────────┐ ┌─────────────────┐
|
|
164
|
+
│ Local MCP Server│ │ Proxy Worker │
|
|
165
|
+
│ (Node/Python) │ │ (deployed) │
|
|
166
|
+
└─────────────────┘ └────────┬────────┘
|
|
167
|
+
│
|
|
168
|
+
▼
|
|
169
|
+
┌─────────────────┐
|
|
170
|
+
│ API Consumers │
|
|
171
|
+
│ (Claude, apps) │
|
|
172
|
+
└─────────────────┘
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
1. **Tunnel daemon** connects to relay via secure WebSocket
|
|
176
|
+
2. **Relay** holds the connection and routes requests
|
|
177
|
+
3. **Proxy worker** forwards API requests through relay to your tunnel
|
|
178
|
+
4. **Local MCP server** processes requests and returns responses
|
|
179
|
+
|
|
180
|
+
## Security
|
|
181
|
+
|
|
182
|
+
- 🔑 **Tunnel keys** are scoped to your account
|
|
183
|
+
- 🔐 **Traffic** is encrypted via WebSocket TLS
|
|
184
|
+
- 🚫 **No inbound ports** required on your machine
|
|
185
|
+
- 🔄 **Keys can be rotated** from the dashboard
|
|
186
|
+
|
|
187
|
+
## Requirements
|
|
188
|
+
|
|
189
|
+
- Node.js >= 18.0.0
|
|
190
|
+
|
|
191
|
+
## Troubleshooting
|
|
192
|
+
|
|
193
|
+
### "Config file not found"
|
|
194
|
+
Create a `tunnel.yaml` file or specify the path with `-c path/to/config.yaml`
|
|
195
|
+
|
|
196
|
+
### "Connection closed immediately"
|
|
197
|
+
- Verify your tunnel key is correct
|
|
198
|
+
- Check that the server ID matches your dashboard
|
|
199
|
+
|
|
200
|
+
### "Tunnel connected but tools not syncing"
|
|
201
|
+
- Ensure your MCP server responds to `initialize` and `tools/list`
|
|
202
|
+
- Check server logs for errors with `-v` flag
|
|
203
|
+
|
|
204
|
+
## Links
|
|
205
|
+
|
|
206
|
+
- 📖 [Full Documentation](https://docs.dotmcp.io/publishers/tunnel)
|
|
207
|
+
- 🌐 [dotMCP Marketplace](https://dotmcp.io)
|
|
208
|
+
- 💬 [Support](mailto:hello@dotmcp.io)
|
|
209
|
+
|
|
210
|
+
## License
|
|
211
|
+
|
|
212
|
+
BUSL-1.1
|
package/dist/config.js
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Tunnel Configuration Types and Validation
|
|
4
3
|
*/
|
|
5
|
-
|
|
6
|
-
exports.validateConfig = validateConfig;
|
|
7
|
-
function validateConfig(config) {
|
|
4
|
+
export function validateConfig(config) {
|
|
8
5
|
const errors = [];
|
|
9
6
|
if (!config.key) {
|
|
10
7
|
errors.push('Missing required field: key');
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAsBH,MAAM,UAAU,cAAc,CAAC,MAAoB;IAC/C,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC/C,CAAC;SAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IACtE,CAAC;SAAM,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACJ,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;YACnC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,8BAA8B,CAAC,CAAC;YAC7D,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;gBACjC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,MAAM,CAAC,EAAE,IAAI,SAAS,uCAAuC,CAAC,CAAC;YACjG,CAAC;YACD,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,MAAM,CAAC,EAAE,IAAI,SAAS,wCAAwC,CAAC,CAAC;YAClG,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,OAAO;QACH,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC1B,MAAM;KACT,CAAC;AACN,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* dotMCP Tunnel - CLI Entry Point
|
|
4
3
|
*
|
|
5
4
|
* A daemon that connects local MCP servers to dotmcp.io
|
|
6
5
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const program = new commander_1.Command();
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
import { readFileSync, existsSync } from 'fs';
|
|
8
|
+
import { parse as parseYaml } from 'yaml';
|
|
9
|
+
import { Tunnel } from './tunnel.js';
|
|
10
|
+
import { validateConfig } from './config.js';
|
|
11
|
+
import { Logger } from './logger.js';
|
|
12
|
+
const logger = new Logger();
|
|
13
|
+
const program = new Command();
|
|
16
14
|
program
|
|
17
15
|
.name('dotmcp-tunnel')
|
|
18
16
|
.description('Connect local MCP servers to dotmcp.io')
|
|
@@ -22,7 +20,7 @@ program
|
|
|
22
20
|
.option('-v, --verbose', 'Enable verbose logging')
|
|
23
21
|
.action(async (options) => {
|
|
24
22
|
const configPath = options.config.replace('~', process.env.HOME || '');
|
|
25
|
-
if (!
|
|
23
|
+
if (!existsSync(configPath)) {
|
|
26
24
|
logger.error(`Config file not found: ${configPath}`);
|
|
27
25
|
logger.info('\nCreate a config file with the following format:');
|
|
28
26
|
logger.info(`
|
|
@@ -36,16 +34,16 @@ servers:
|
|
|
36
34
|
process.exit(1);
|
|
37
35
|
}
|
|
38
36
|
try {
|
|
39
|
-
const configContent =
|
|
40
|
-
const config = (
|
|
41
|
-
const validation =
|
|
37
|
+
const configContent = readFileSync(configPath, 'utf-8');
|
|
38
|
+
const config = parseYaml(configContent);
|
|
39
|
+
const validation = validateConfig(config);
|
|
42
40
|
if (!validation.valid) {
|
|
43
41
|
logger.error('Invalid config:');
|
|
44
|
-
validation.errors.forEach(e => logger.error(` - ${e}`));
|
|
42
|
+
validation.errors.forEach((e) => logger.error(` - ${e}`));
|
|
45
43
|
process.exit(1);
|
|
46
44
|
}
|
|
47
45
|
logger.info('Starting dotmcp-tunnel...');
|
|
48
|
-
const tunnel = new
|
|
46
|
+
const tunnel = new Tunnel(config, logger, options.verbose || false);
|
|
49
47
|
// Handle shutdown signals
|
|
50
48
|
const shutdown = async () => {
|
|
51
49
|
logger.info('\nShutting down...');
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/logger.js
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Simple Logger for Tunnel CLI
|
|
4
3
|
*/
|
|
5
|
-
|
|
6
|
-
exports.Logger = void 0;
|
|
7
|
-
class Logger {
|
|
4
|
+
export class Logger {
|
|
8
5
|
verbose = false;
|
|
9
6
|
setVerbose(verbose) {
|
|
10
7
|
this.verbose = verbose;
|
|
@@ -33,5 +30,4 @@ class Logger {
|
|
|
33
30
|
console.error(`[tunnel:${serverId}] ✗ ${message}`);
|
|
34
31
|
}
|
|
35
32
|
}
|
|
36
|
-
exports.Logger = Logger;
|
|
37
33
|
//# sourceMappingURL=logger.js.map
|
package/dist/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,OAAO,MAAM;IACP,OAAO,GAAG,KAAK,CAAC;IAExB,UAAU,CAAC,OAAgB;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED,IAAI,CAAC,OAAe;QAChB,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,CAAC,OAAe;QACnB,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,OAAe;QACjB,OAAO,CAAC,KAAK,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,CAAC,OAAe;QAChB,OAAO,CAAC,IAAI,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,OAAe;QACjB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC;IACL,CAAC;IAED,SAAS,CAAC,QAAgB,EAAE,OAAe;QACvC,OAAO,CAAC,GAAG,CAAC,WAAW,QAAQ,KAAK,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,WAAW,CAAC,QAAgB,EAAE,OAAe;QACzC,OAAO,CAAC,KAAK,CAAC,WAAW,QAAQ,OAAO,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;CACJ"}
|
package/dist/process-manager.js
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Process Manager
|
|
4
3
|
*
|
|
5
4
|
* Manages spawning and communication with local MCP server processes via stdio.
|
|
6
5
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const child_process_1 = require("child_process");
|
|
10
|
-
class ProcessManager {
|
|
6
|
+
import { spawn } from 'child_process';
|
|
7
|
+
export class ProcessManager {
|
|
11
8
|
config;
|
|
12
9
|
logger;
|
|
13
10
|
process = null;
|
|
@@ -24,7 +21,7 @@ class ProcessManager {
|
|
|
24
21
|
}
|
|
25
22
|
return new Promise((resolve, reject) => {
|
|
26
23
|
this.logger.serverLog(this.config.id, `Starting: ${this.config.command} ${(this.config.args || []).join(' ')}`);
|
|
27
|
-
this.process =
|
|
24
|
+
this.process = spawn(this.config.command, this.config.args || [], {
|
|
28
25
|
cwd: this.config.cwd,
|
|
29
26
|
env: { ...process.env, ...this.config.env },
|
|
30
27
|
stdio: ['pipe', 'pipe', 'pipe']
|
|
@@ -142,5 +139,4 @@ class ProcessManager {
|
|
|
142
139
|
}
|
|
143
140
|
}
|
|
144
141
|
}
|
|
145
|
-
exports.ProcessManager = ProcessManager;
|
|
146
142
|
//# sourceMappingURL=process-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-manager.js","sourceRoot":"","sources":["../src/process-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"process-manager.js","sourceRoot":"","sources":["../src/process-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/relay-client.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Manages WebSocket connection to dotmcp.io relay server.
|
|
5
5
|
* Handles reconnection, heartbeats, and request/response routing.
|
|
6
6
|
*/
|
|
7
|
-
import { Logger } from './logger';
|
|
7
|
+
import { Logger } from './logger.js';
|
|
8
8
|
export interface RelayClientOptions {
|
|
9
9
|
serverId: string;
|
|
10
10
|
relayUrl: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay-client.d.ts","sourceRoot":"","sources":["../src/relay-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"relay-client.d.ts","sourceRoot":"","sources":["../src/relay-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CAC7C;AAED,qBAAa,WAAW;IACpB,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,oBAAoB,CAAM;IAClC,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAS;gBAEjB,OAAO,EAAE,kBAAkB;IAIjC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAsDhB,aAAa;IAiC3B,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,iBAAiB;IA0BnB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CASpC"}
|
package/dist/relay-client.js
CHANGED
|
@@ -1,18 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Relay Client
|
|
4
3
|
*
|
|
5
4
|
* Manages WebSocket connection to dotmcp.io relay server.
|
|
6
5
|
* Handles reconnection, heartbeats, and request/response routing.
|
|
7
6
|
*/
|
|
8
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.RelayClient = void 0;
|
|
13
7
|
// @ts-ignore - ws types will be installed at build time
|
|
14
|
-
|
|
15
|
-
class RelayClient {
|
|
8
|
+
import WebSocket from 'ws';
|
|
9
|
+
export class RelayClient {
|
|
16
10
|
options;
|
|
17
11
|
ws = null;
|
|
18
12
|
reconnectAttempts = 0;
|
|
@@ -28,7 +22,7 @@ class RelayClient {
|
|
|
28
22
|
return new Promise((resolve, reject) => {
|
|
29
23
|
const url = `${this.options.relayUrl}/connect/${this.options.serverId}`;
|
|
30
24
|
this.options.logger.debug(`Connecting to ${url}`);
|
|
31
|
-
this.ws = new
|
|
25
|
+
this.ws = new WebSocket(url, {
|
|
32
26
|
headers: {
|
|
33
27
|
'X-Tunnel-Key': this.options.tunnelKey
|
|
34
28
|
}
|
|
@@ -137,5 +131,4 @@ class RelayClient {
|
|
|
137
131
|
}
|
|
138
132
|
}
|
|
139
133
|
}
|
|
140
|
-
exports.RelayClient = RelayClient;
|
|
141
134
|
//# sourceMappingURL=relay-client.js.map
|
package/dist/relay-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay-client.js","sourceRoot":"","sources":["../src/relay-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"relay-client.js","sourceRoot":"","sources":["../src/relay-client.ts"],"names":[],"mappings":"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"}
|
package/dist/tunnel.d.ts
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Orchestrates connections to relay and management of local MCP server processes.
|
|
5
5
|
*/
|
|
6
|
-
import { TunnelConfig } from './config';
|
|
7
|
-
import { Logger } from './logger';
|
|
6
|
+
import { TunnelConfig } from './config.js';
|
|
7
|
+
import { Logger } from './logger.js';
|
|
8
8
|
export declare class Tunnel {
|
|
9
9
|
private config;
|
|
10
10
|
private logger;
|
package/dist/tunnel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../src/tunnel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAgB,MAAM,
|
|
1
|
+
{"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../src/tunnel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAgB,MAAM,aAAa,CAAC;AAGzD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,qBAAa,MAAM;IACf,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAU;gBAEb,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,UAAQ;IAS3D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAyBd,WAAW;YAyCX,aAAa;IAcrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CA0B9B"}
|
package/dist/tunnel.js
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Main Tunnel Class
|
|
4
3
|
*
|
|
5
4
|
* Orchestrates connections to relay and management of local MCP server processes.
|
|
6
5
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const process_manager_1 = require("./process-manager");
|
|
11
|
-
class Tunnel {
|
|
6
|
+
import { RelayClient } from './relay-client.js';
|
|
7
|
+
import { ProcessManager } from './process-manager.js';
|
|
8
|
+
export class Tunnel {
|
|
12
9
|
config;
|
|
13
10
|
logger;
|
|
14
11
|
relayClients = new Map();
|
|
@@ -50,12 +47,12 @@ class Tunnel {
|
|
|
50
47
|
// Start the local MCP server process (if command-based)
|
|
51
48
|
let processManager = null;
|
|
52
49
|
if (serverConfig.command) {
|
|
53
|
-
processManager = new
|
|
50
|
+
processManager = new ProcessManager(serverConfig, this.logger);
|
|
54
51
|
this.processManagers.set(id, processManager);
|
|
55
52
|
await processManager.start();
|
|
56
53
|
}
|
|
57
54
|
// Create relay client for this server
|
|
58
|
-
const relayClient = new
|
|
55
|
+
const relayClient = new RelayClient({
|
|
59
56
|
serverId: id,
|
|
60
57
|
relayUrl,
|
|
61
58
|
tunnelKey: this.config.key,
|
|
@@ -118,5 +115,4 @@ class Tunnel {
|
|
|
118
115
|
this.logger.success('Tunnel stopped');
|
|
119
116
|
}
|
|
120
117
|
}
|
|
121
|
-
exports.Tunnel = Tunnel;
|
|
122
118
|
//# sourceMappingURL=tunnel.js.map
|
package/dist/tunnel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel.js","sourceRoot":"","sources":["../src/tunnel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tunnel.js","sourceRoot":"","sources":["../src/tunnel.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED