@or-sdk/mcp-tools 0.5.0-beta.4165.0 → 0.5.0-beta.4167.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/CHANGELOG.md +0 -111
- package/README.md +117 -60
- package/dist/cjs/McpTools.js +28 -5
- package/dist/cjs/McpTools.js.map +1 -1
- package/dist/esm/McpTools.js +21 -5
- package/dist/esm/McpTools.js.map +1 -1
- package/dist/types/McpTools.d.ts +2 -1
- package/dist/types/McpTools.d.ts.map +1 -1
- package/dist/types/types.d.ts +5 -0
- package/dist/types/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/McpTools.ts +27 -8
- package/src/types.ts +6 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,114 +2,3 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
|
-
|
|
6
|
-
## [0.4.3](https://gitlab.internal.onereach.io/onereach/platform/or-sdk-next/compare/@or-sdk/markdowner@0.4.2...@or-sdk/markdowner@0.4.3) (2026-04-30)
|
|
7
|
-
|
|
8
|
-
**Note:** Version bump only for package @or-sdk/markdowner
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
## [0.4.2](https://gitlab.internal.onereach.io/onereach/platform/or-sdk-next/compare/@or-sdk/markdowner@0.4.1...@or-sdk/markdowner@0.4.2) (2026-04-22)
|
|
15
|
-
|
|
16
|
-
**Note:** Version bump only for package @or-sdk/markdowner
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
## [0.4.1](https://gitlab.internal.onereach.io/onereach/platform/or-sdk-next/compare/@or-sdk/markdowner@0.4.0...@or-sdk/markdowner@0.4.1) (2026-02-25)
|
|
23
|
-
|
|
24
|
-
**Note:** Version bump only for package @or-sdk/markdowner
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
## [0.4.0](https://gitlab.internal.onereach.io/onereach/platform/or-sdk-next/compare/@or-sdk/markdowner@0.3.5...@or-sdk/markdowner@0.4.0) (2026-02-24)
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
### Features
|
|
34
|
-
|
|
35
|
-
* **deployer:** Add methods 'fetchFlowLogsChunk' and 'fetchAllFlowLogs' to fetch flow logs ([6b70992](https://gitlab.internal.onereach.io/onereach/platform/or-sdk-next/commit/6b70992ce3d1e4f308db69df700528f6eeffafcf))
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
## [0.3.5](https://gitlab.internal.onereach.io/onereach/platform/or-sdk-next/compare/@or-sdk/markdowner@0.3.4...@or-sdk/markdowner@0.3.5) (2026-01-15)
|
|
40
|
-
|
|
41
|
-
**Note:** Version bump only for package @or-sdk/markdowner
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
## [0.3.4](https://gitlab.internal.onereach.io/onereach/platform/or-sdk-next/compare/@or-sdk/markdowner@0.3.3...@or-sdk/markdowner@0.3.4) (2025-11-04)
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
### Bug Fixes
|
|
51
|
-
|
|
52
|
-
* **base:** Fix vitest tests ([3afb8a3](https://gitlab.internal.onereach.io/onereach/platform/or-sdk-next/commit/3afb8a344fc68e7e3b4ab3203eedea7a7f0b5bab))
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
## [0.3.3](https://gitlab.internal.onereach.io/onereach/platform/or-sdk-next/compare/@or-sdk/markdowner@0.3.2...@or-sdk/markdowner@0.3.3) (2025-10-14)
|
|
57
|
-
|
|
58
|
-
**Note:** Version bump only for package @or-sdk/markdowner
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
## [0.3.2](https://gitlab.internal.onereach.io/onereach/platform/or-sdk-next/compare/@or-sdk/markdowner@0.3.1...@or-sdk/markdowner@0.3.2) (2025-10-02)
|
|
65
|
-
|
|
66
|
-
**Note:** Version bump only for package @or-sdk/markdowner
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
## [0.3.1](https://gitlab.internal.onereach.io/onereach/platform/or-sdk-next/compare/@or-sdk/markdowner@0.3.0...@or-sdk/markdowner@0.3.1) (2025-07-30)
|
|
73
|
-
|
|
74
|
-
**Note:** Version bump only for package @or-sdk/markdowner
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
## [0.3.0](https://gitlab.internal.onereach.io/onereach/platform/or-sdk-next/compare/@or-sdk/markdowner@0.2.1...@or-sdk/markdowner@0.3.0) (2025-05-10)
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
### Features
|
|
84
|
-
|
|
85
|
-
* **users:** Add super admin method 'upsertMultiUser' ([448b2c9](https://gitlab.internal.onereach.io/onereach/platform/or-sdk-next/commit/448b2c99e6a0a392f965f2b386c00a6d286b44ae))
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
## [0.2.1](https://gitlab.internal.onereach.io/onereach/platform/or-sdk-next/compare/@or-sdk/markdowner@0.2.0...@or-sdk/markdowner@0.2.1) (2025-05-07)
|
|
90
|
-
|
|
91
|
-
**Note:** Version bump only for package @or-sdk/markdowner
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
## [0.2.0](https://gitlab.internal.onereach.io/onereach/platform/or-sdk-next/compare/@or-sdk/markdowner@0.1.0...@or-sdk/markdowner@0.2.0) (2025-04-16)
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
### Features
|
|
101
|
-
|
|
102
|
-
* **@or-sdk/markdowner:** allow to send base64 in request body ([84941ec](https://gitlab.internal.onereach.io/onereach/platform/or-sdk-next/commit/84941ec6399f4a57e96154466616515dce279333))
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
## 0.1.0 (2025-03-26)
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
### Features
|
|
110
|
-
|
|
111
|
-
* **@or-sdk/markitdowner:** init project ([e027d39](https://gitlab.internal.onereach.io/onereach/platform/or-sdk-next/commit/e027d390ced4e25718cda5b05a6ae1490faf837e))
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
# Change Log
|
package/README.md
CHANGED
|
@@ -1,109 +1,166 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @or-sdk/mcp-tools
|
|
2
2
|
|
|
3
|
-
The `
|
|
3
|
+
The `McpTools` class provides methods for interacting with OneReach MCP (Model Context Protocol) infrastructure — listing internal MCP servers, discovering available packages, and handling OAuth authorization flows.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
|
-
To use the `Markdowner` class, install the package:
|
|
8
|
-
|
|
9
7
|
```bash
|
|
10
|
-
npm install @or-sdk/
|
|
8
|
+
npm install @or-sdk/mcp-tools
|
|
11
9
|
```
|
|
12
10
|
|
|
13
11
|
## Usage
|
|
14
12
|
|
|
15
13
|
### Importing and Instantiating
|
|
16
14
|
|
|
17
|
-
To use the `Markdowner` class, import it into your project:
|
|
18
|
-
|
|
19
15
|
```typescript
|
|
20
|
-
import {
|
|
16
|
+
import { McpTools } from '@or-sdk/mcp-tools';
|
|
21
17
|
|
|
22
|
-
const
|
|
18
|
+
const mcpTools = new McpTools({
|
|
23
19
|
token: 'your-token',
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
serviceUrl: 'https://service.example.com',
|
|
20
|
+
mcpApiUrl: 'https://mcp-api.example.com',
|
|
21
|
+
mcpToolsUrl: 'https://mcp-tools-api.example.com',
|
|
27
22
|
});
|
|
28
23
|
```
|
|
29
24
|
|
|
30
|
-
###
|
|
25
|
+
### Configuration
|
|
26
|
+
|
|
27
|
+
| Parameter | Type | Required | Description |
|
|
28
|
+
|---|---|---|---|
|
|
29
|
+
| `token` | `string \| (() => string)` | Yes | Authentication token or a getter function |
|
|
30
|
+
| `discoveryUrl` | `string` | No | OneReach service discovery API URL |
|
|
31
|
+
| `mcpApiUrl` | `string` | No | MCP internal API base URL (required for `getInternalServers`) |
|
|
32
|
+
| `mcpToolsUrl` | `string` | No | MCP tools API base URL (required for `getDiscovery`) |
|
|
33
|
+
|
|
34
|
+
## Methods
|
|
35
|
+
|
|
36
|
+
### `getInternalServers(options?)`
|
|
31
37
|
|
|
32
|
-
|
|
38
|
+
Retrieves the list of internal MCP servers registered in the account.
|
|
33
39
|
|
|
34
|
-
|
|
40
|
+
> Requires `mcpApiUrl` to be set.
|
|
35
41
|
|
|
36
|
-
|
|
42
|
+
```typescript
|
|
43
|
+
const { servers, total } = await mcpTools.getInternalServers();
|
|
37
44
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
- `options` (CallOptions, optional): Additional call options for the request.
|
|
45
|
+
servers.forEach((server) => {
|
|
46
|
+
console.log(server.name, server.url);
|
|
47
|
+
});
|
|
48
|
+
```
|
|
43
49
|
|
|
44
|
-
**Returns:**
|
|
50
|
+
**Returns:** `Promise<InternalServersResponse>`
|
|
45
51
|
|
|
46
|
-
|
|
52
|
+
---
|
|
47
53
|
|
|
48
|
-
|
|
49
|
-
- `images` (array of strings): Array of image URLs or paths for the page.
|
|
50
|
-
- `index` (number): The index of the page.
|
|
51
|
-
- `markdown` (string): The Markdown content of the page.
|
|
52
|
-
- `usage_info` (object):
|
|
53
|
-
- `doc_size_bytes` (number): The size of the document in bytes.
|
|
54
|
-
- `pages_processed` (number): The number of pages processed.
|
|
54
|
+
### `getDiscovery(options?)`
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
Retrieves MCP discovery information — the list of available MCP packages with their URLs and auth types.
|
|
57
|
+
|
|
58
|
+
> Requires `mcpToolsUrl` to be set.
|
|
57
59
|
|
|
58
60
|
```typescript
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
61
|
+
const { packages } = await mcpTools.getDiscovery();
|
|
62
|
+
|
|
63
|
+
packages.forEach((pkg) => {
|
|
64
|
+
console.log(pkg.package, pkg.auth);
|
|
62
65
|
});
|
|
63
|
-
console.log(markdownResult);
|
|
64
66
|
```
|
|
65
67
|
|
|
66
|
-
|
|
68
|
+
**Returns:** `Promise<DiscoveryResponse>`
|
|
67
69
|
|
|
68
|
-
|
|
70
|
+
---
|
|
69
71
|
|
|
70
|
-
|
|
72
|
+
### `getAvailableMcp(options?)`
|
|
71
73
|
|
|
72
|
-
|
|
73
|
-
- `url` (string): The URL of the image to be described.
|
|
74
|
-
- `provider` (string): The name of the provider for the image processing service.
|
|
75
|
-
- `model` (string): The model used for generating the image description.
|
|
76
|
-
- `options` (CallOptions, optional): Additional call options for the request.
|
|
74
|
+
Fetches both internal MCP servers and discovery packages **in parallel** and returns them as a single unified list. If only one URL is configured, the other source is silently skipped.
|
|
77
75
|
|
|
78
|
-
|
|
76
|
+
```typescript
|
|
77
|
+
const { items, total } = await mcpTools.getAvailableMcp();
|
|
78
|
+
|
|
79
|
+
items.forEach((item) => {
|
|
80
|
+
console.log(item.name, item.source, item.auth);
|
|
81
|
+
});
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Each item in `items` has the shape:
|
|
79
85
|
|
|
80
|
-
|
|
86
|
+
| Field | Type | Description |
|
|
87
|
+
|---|---|---|
|
|
88
|
+
| `name` | `string` | Package or server name |
|
|
89
|
+
| `url` | `string` | MCP endpoint URL |
|
|
90
|
+
| `auth` | `string` | Auth type (`'bearer'`, `'oauth'`, etc.) |
|
|
91
|
+
| `description` | `string?` | Description (internal servers only) |
|
|
92
|
+
| `redirectUrl` | `string?` | OAuth redirect URL (discovery packages only) |
|
|
93
|
+
| `source` | `'internal' \| 'discovery'` | Origin of the entry |
|
|
81
94
|
|
|
82
|
-
|
|
95
|
+
**Returns:** `Promise<AvailableMcpResponse>`
|
|
83
96
|
|
|
84
|
-
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
### `authorizeOAuthPackage(pkg)`
|
|
100
|
+
|
|
101
|
+
Opens the OAuth authorization URL for a given package in a new browser window/tab.
|
|
85
102
|
|
|
86
103
|
```typescript
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
104
|
+
import { McpTools, OAuthPackage } from '@or-sdk/mcp-tools';
|
|
105
|
+
|
|
106
|
+
const { items } = await mcpTools.getAvailableMcp();
|
|
107
|
+
|
|
108
|
+
const googleCalendar = items.find(
|
|
109
|
+
(item) => item.name === 'google-calendar' && item.auth === 'oauth'
|
|
110
|
+
);
|
|
111
|
+
|
|
112
|
+
if (googleCalendar) {
|
|
113
|
+
mcpTools.authorizeOAuthPackage(googleCalendar as OAuthPackage);
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**Returns:** `Window | null` — the opened window reference, or `null` if blocked by the browser.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
### `parseError(err)`
|
|
122
|
+
|
|
123
|
+
Parses an error thrown by any API method into a structured `OrNetworkError`.
|
|
124
|
+
|
|
125
|
+
```typescript
|
|
126
|
+
import { McpTools, isOrNetworkError } from '@or-sdk/mcp-tools';
|
|
127
|
+
|
|
128
|
+
try {
|
|
129
|
+
await mcpTools.getInternalServers();
|
|
130
|
+
} catch (err) {
|
|
131
|
+
const parsed = mcpTools.parseError(err);
|
|
132
|
+
if (isOrNetworkError(parsed)) {
|
|
133
|
+
console.error(parsed.status, parsed.message);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
93
136
|
```
|
|
94
137
|
|
|
95
138
|
## Error Handling
|
|
96
139
|
|
|
97
|
-
|
|
140
|
+
Use the exported `isOrNetworkError` guard to narrow caught errors:
|
|
98
141
|
|
|
99
142
|
```typescript
|
|
143
|
+
import { isOrNetworkError } from '@or-sdk/mcp-tools';
|
|
144
|
+
|
|
100
145
|
try {
|
|
101
|
-
const result = await
|
|
102
|
-
url: 'https://example.com/document.pdf',
|
|
103
|
-
provider: 'pdfProvider',
|
|
104
|
-
});
|
|
146
|
+
const result = await mcpTools.getDiscovery();
|
|
105
147
|
} catch (err) {
|
|
106
|
-
const
|
|
107
|
-
|
|
148
|
+
const parsed = mcpTools.parseError(err);
|
|
149
|
+
if (isOrNetworkError(parsed)) {
|
|
150
|
+
console.error('Network error:', parsed.status, parsed.message);
|
|
151
|
+
} else {
|
|
152
|
+
throw err;
|
|
153
|
+
}
|
|
108
154
|
}
|
|
109
155
|
```
|
|
156
|
+
|
|
157
|
+
You can also pass an `AbortSignal` to any method to support cancellation:
|
|
158
|
+
|
|
159
|
+
```typescript
|
|
160
|
+
const controller = new AbortController();
|
|
161
|
+
|
|
162
|
+
const result = await mcpTools.getAvailableMcp({ signal: controller.signal });
|
|
163
|
+
|
|
164
|
+
// Cancel the request
|
|
165
|
+
controller.abort();
|
|
166
|
+
```
|
package/dist/cjs/McpTools.js
CHANGED
|
@@ -108,7 +108,7 @@ var McpTools = (function (_super) {
|
|
|
108
108
|
if (!this._mcpApiUrl) {
|
|
109
109
|
throw new Error('mcpApiUrl is required for getInternalServers');
|
|
110
110
|
}
|
|
111
|
-
return [2, this.makeRequest(__assign({ method: 'GET', route: '
|
|
111
|
+
return [2, this.makeRequest(__assign({ method: 'GET', route: '', url: "".concat(this._mcpApiUrl, "/internal/servers") }, options))];
|
|
112
112
|
});
|
|
113
113
|
});
|
|
114
114
|
};
|
|
@@ -119,7 +119,7 @@ var McpTools = (function (_super) {
|
|
|
119
119
|
if (!this._mcpToolsUrl) {
|
|
120
120
|
throw new Error('mcpToolsUrl is required for getDiscovery');
|
|
121
121
|
}
|
|
122
|
-
return [2, this.makeRequest(__assign({ method: 'GET', route: '
|
|
122
|
+
return [2, this.makeRequest(__assign({ method: 'GET', route: '', url: "".concat(this._mcpToolsUrl, "/mcp/discovery") }, options))];
|
|
123
123
|
});
|
|
124
124
|
});
|
|
125
125
|
};
|
|
@@ -137,16 +137,18 @@ var McpTools = (function (_super) {
|
|
|
137
137
|
_a = _b.sent(), serversResult = _a[0], discoveryResult = _a[1];
|
|
138
138
|
fromServers = serversResult.status === 'fulfilled' && serversResult.value
|
|
139
139
|
? serversResult.value.servers.map(function (s) { return ({
|
|
140
|
-
name: s.name,
|
|
140
|
+
name: s.label || s.name,
|
|
141
141
|
url: s.url,
|
|
142
142
|
description: s.description,
|
|
143
|
+
flowId: s.flowId,
|
|
144
|
+
flowUrl: s.flowUrl,
|
|
143
145
|
auth: 'bearer',
|
|
144
146
|
source: 'internal',
|
|
145
147
|
}); })
|
|
146
148
|
: [];
|
|
147
149
|
fromDiscovery = discoveryResult.status === 'fulfilled' && discoveryResult.value
|
|
148
150
|
? discoveryResult.value.packages.map(function (p) { return ({
|
|
149
|
-
name: p.package,
|
|
151
|
+
name: p.package + ' (platform)',
|
|
150
152
|
url: p.url,
|
|
151
153
|
auth: p.auth,
|
|
152
154
|
redirectUrl: p.redirectUrl,
|
|
@@ -162,8 +164,29 @@ var McpTools = (function (_super) {
|
|
|
162
164
|
});
|
|
163
165
|
});
|
|
164
166
|
};
|
|
167
|
+
McpTools.prototype.getOAuthAuthUrlRoute = function (pkg) {
|
|
168
|
+
var url = new URL(pkg.redirectUrl);
|
|
169
|
+
if (url.pathname === "/auth/".concat(pkg.package)) {
|
|
170
|
+
return "".concat(pkg.package, "/auth-url");
|
|
171
|
+
}
|
|
172
|
+
return url.pathname.replace(/^\//, '');
|
|
173
|
+
};
|
|
165
174
|
McpTools.prototype.authorizeOAuthPackage = function (pkg) {
|
|
166
|
-
return
|
|
175
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
176
|
+
var url;
|
|
177
|
+
return __generator(this, function (_a) {
|
|
178
|
+
switch (_a.label) {
|
|
179
|
+
case 0: return [4, this.makeRequest({
|
|
180
|
+
method: 'GET',
|
|
181
|
+
route: this.getOAuthAuthUrlRoute(pkg),
|
|
182
|
+
url: pkg.redirectUrl,
|
|
183
|
+
})];
|
|
184
|
+
case 1:
|
|
185
|
+
url = (_a.sent()).url;
|
|
186
|
+
return [2, window.open(url, '_blank')];
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
});
|
|
167
190
|
};
|
|
168
191
|
return McpTools;
|
|
169
192
|
}(base_1.Base));
|
package/dist/cjs/McpTools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"McpTools.js","sourceRoot":"","sources":["../../src/McpTools.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAkD;AAElD,yCAA0C;AAC1C,+CAA+D;
|
|
1
|
+
{"version":3,"file":"McpTools.js","sourceRoot":"","sources":["../../src/McpTools.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/McpTools.js
CHANGED
|
@@ -36,7 +36,7 @@ export class McpTools extends Base {
|
|
|
36
36
|
if (!this._mcpApiUrl) {
|
|
37
37
|
throw new Error('mcpApiUrl is required for getInternalServers');
|
|
38
38
|
}
|
|
39
|
-
return this.makeRequest(Object.assign({ method: 'GET', route: '
|
|
39
|
+
return this.makeRequest(Object.assign({ method: 'GET', route: '', url: `${this._mcpApiUrl}/internal/servers` }, options));
|
|
40
40
|
});
|
|
41
41
|
}
|
|
42
42
|
getDiscovery() {
|
|
@@ -44,7 +44,7 @@ export class McpTools extends Base {
|
|
|
44
44
|
if (!this._mcpToolsUrl) {
|
|
45
45
|
throw new Error('mcpToolsUrl is required for getDiscovery');
|
|
46
46
|
}
|
|
47
|
-
return this.makeRequest(Object.assign({ method: 'GET', route: '
|
|
47
|
+
return this.makeRequest(Object.assign({ method: 'GET', route: '', url: `${this._mcpToolsUrl}/mcp/discovery` }, options));
|
|
48
48
|
});
|
|
49
49
|
}
|
|
50
50
|
getAvailableMcp() {
|
|
@@ -55,16 +55,18 @@ export class McpTools extends Base {
|
|
|
55
55
|
]);
|
|
56
56
|
const fromServers = serversResult.status === 'fulfilled' && serversResult.value
|
|
57
57
|
? serversResult.value.servers.map((s) => ({
|
|
58
|
-
name: s.name,
|
|
58
|
+
name: s.label || s.name,
|
|
59
59
|
url: s.url,
|
|
60
60
|
description: s.description,
|
|
61
|
+
flowId: s.flowId,
|
|
62
|
+
flowUrl: s.flowUrl,
|
|
61
63
|
auth: 'bearer',
|
|
62
64
|
source: 'internal',
|
|
63
65
|
}))
|
|
64
66
|
: [];
|
|
65
67
|
const fromDiscovery = discoveryResult.status === 'fulfilled' && discoveryResult.value
|
|
66
68
|
? discoveryResult.value.packages.map((p) => ({
|
|
67
|
-
name: p.package,
|
|
69
|
+
name: p.package + ' (platform)',
|
|
68
70
|
url: p.url,
|
|
69
71
|
auth: p.auth,
|
|
70
72
|
redirectUrl: p.redirectUrl,
|
|
@@ -78,8 +80,22 @@ export class McpTools extends Base {
|
|
|
78
80
|
};
|
|
79
81
|
});
|
|
80
82
|
}
|
|
83
|
+
getOAuthAuthUrlRoute(pkg) {
|
|
84
|
+
const url = new URL(pkg.redirectUrl);
|
|
85
|
+
if (url.pathname === `/auth/${pkg.package}`) {
|
|
86
|
+
return `${pkg.package}/auth-url`;
|
|
87
|
+
}
|
|
88
|
+
return url.pathname.replace(/^\//, '');
|
|
89
|
+
}
|
|
81
90
|
authorizeOAuthPackage(pkg) {
|
|
82
|
-
return
|
|
91
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
92
|
+
const { url } = yield this.makeRequest({
|
|
93
|
+
method: 'GET',
|
|
94
|
+
route: this.getOAuthAuthUrlRoute(pkg),
|
|
95
|
+
url: pkg.redirectUrl,
|
|
96
|
+
});
|
|
97
|
+
return window.open(url, '_blank');
|
|
98
|
+
});
|
|
83
99
|
}
|
|
84
100
|
}
|
|
85
101
|
//# sourceMappingURL=McpTools.js.map
|
package/dist/esm/McpTools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"McpTools.js","sourceRoot":"","sources":["../../src/McpTools.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,cAAc,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"McpTools.js","sourceRoot":"","sources":["../../src/McpTools.ts"],"names":[],"mappings":"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"}
|
package/dist/types/McpTools.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export declare class McpTools extends Base {
|
|
|
9
9
|
getInternalServers(options?: CallOptions): Promise<InternalServersResponse>;
|
|
10
10
|
getDiscovery(options?: CallOptions): Promise<DiscoveryResponse>;
|
|
11
11
|
getAvailableMcp(options?: CallOptions): Promise<AvailableMcpResponse>;
|
|
12
|
-
|
|
12
|
+
private getOAuthAuthUrlRoute;
|
|
13
|
+
authorizeOAuthPackage(pkg: OAuthPackage): Promise<Window | null>;
|
|
13
14
|
}
|
|
14
15
|
//# sourceMappingURL=McpTools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"McpTools.d.ts","sourceRoot":"","sources":["../../src/McpTools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,cAAc,CAAC;AAIlD,OAAO,EAEL,oBAAoB,EACpB,WAAW,EACX,MAAM,EACN,iBAAiB,EACjB,uBAAuB,
|
|
1
|
+
{"version":3,"file":"McpTools.d.ts","sourceRoot":"","sources":["../../src/McpTools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,cAAc,CAAC;AAIlD,OAAO,EAEL,oBAAoB,EACpB,WAAW,EACX,MAAM,EACN,iBAAiB,EACjB,uBAAuB,EAEvB,YAAY,EACb,MAAM,SAAS,CAAC;AAIjB,qBAAa,QAAS,SAAQ,IAAI;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAS;gBAE3B,MAAM,EAAE,MAAM;YAcZ,WAAW;IAIzB,UAAU,CAAC,GAAG,EAAE,OAAO;IASjB,kBAAkB,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAkB/E,YAAY,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkBnE,eAAe,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAsC/E,OAAO,CAAC,oBAAoB;IAetB,qBAAqB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CASvE"}
|
package/dist/types/types.d.ts
CHANGED
|
@@ -39,10 +39,15 @@ export type OAuthPackage = McpPackage & {
|
|
|
39
39
|
auth: 'oauth';
|
|
40
40
|
redirectUrl: string;
|
|
41
41
|
};
|
|
42
|
+
export type OAuthAuthUrlResponse = {
|
|
43
|
+
url: string;
|
|
44
|
+
};
|
|
42
45
|
export type AvailableMcp = {
|
|
43
46
|
name: string;
|
|
44
47
|
url: string;
|
|
45
48
|
description?: string;
|
|
49
|
+
flowId?: string;
|
|
50
|
+
flowUrl?: string;
|
|
46
51
|
auth: 'oauth' | string;
|
|
47
52
|
redirectUrl?: string;
|
|
48
53
|
source: 'internal' | 'discovery';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAKrC,MAAM,MAAM,MAAM,GAAG;IAInB,KAAK,EAAE,KAAK,CAAC;IAKb,YAAY,CAAC,EAAE,MAAM,CAAC;IAKtB,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,yBAAyB,EAAE,OAAO,CAAC;IACnC,8BAA8B,EAAE,OAAO,CAAC;IACxC,8BAA8B,EAAE,MAAM,CAAC;IACvC,8BAA8B,EAAE,OAAO,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG;IACtC,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,UAAU,GAAG,WAAW,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,UAAU,EAAE,CAAC;CACxB,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAKrC,MAAM,MAAM,MAAM,GAAG;IAInB,KAAK,EAAE,KAAK,CAAC;IAKb,YAAY,CAAC,EAAE,MAAM,CAAC;IAKtB,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,yBAAyB,EAAE,OAAO,CAAC;IACnC,8BAA8B,EAAE,OAAO,CAAC;IACxC,8BAA8B,EAAE,MAAM,CAAC;IACvC,8BAA8B,EAAE,OAAO,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG;IACtC,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,UAAU,GAAG,WAAW,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,UAAU,EAAE,CAAC;CACxB,CAAC"}
|
package/package.json
CHANGED
package/src/McpTools.ts
CHANGED
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
Config,
|
|
10
10
|
DiscoveryResponse,
|
|
11
11
|
InternalServersResponse,
|
|
12
|
+
OAuthAuthUrlResponse,
|
|
12
13
|
OAuthPackage,
|
|
13
14
|
} from './types';
|
|
14
15
|
|
|
@@ -52,8 +53,8 @@ export class McpTools extends Base {
|
|
|
52
53
|
|
|
53
54
|
return this.makeRequest<InternalServersResponse>({
|
|
54
55
|
method: 'GET',
|
|
55
|
-
route: '
|
|
56
|
-
url: this._mcpApiUrl
|
|
56
|
+
route: '',
|
|
57
|
+
url: `${this._mcpApiUrl}/internal/servers`,
|
|
57
58
|
...options,
|
|
58
59
|
});
|
|
59
60
|
}
|
|
@@ -70,8 +71,8 @@ export class McpTools extends Base {
|
|
|
70
71
|
|
|
71
72
|
return this.makeRequest<DiscoveryResponse>({
|
|
72
73
|
method: 'GET',
|
|
73
|
-
route: '
|
|
74
|
-
url: this._mcpToolsUrl
|
|
74
|
+
route: '',
|
|
75
|
+
url: `${this._mcpToolsUrl}/mcp/discovery`,
|
|
75
76
|
...options,
|
|
76
77
|
});
|
|
77
78
|
}
|
|
@@ -90,9 +91,11 @@ export class McpTools extends Base {
|
|
|
90
91
|
const fromServers: AvailableMcp[] =
|
|
91
92
|
serversResult.status === 'fulfilled' && serversResult.value
|
|
92
93
|
? serversResult.value.servers.map((s) => ({
|
|
93
|
-
name: s.name,
|
|
94
|
+
name: s.label || s.name,
|
|
94
95
|
url: s.url,
|
|
95
96
|
description: s.description,
|
|
97
|
+
flowId: s.flowId,
|
|
98
|
+
flowUrl: s.flowUrl,
|
|
96
99
|
auth: 'bearer',
|
|
97
100
|
source: 'internal' as const,
|
|
98
101
|
}))
|
|
@@ -101,7 +104,7 @@ export class McpTools extends Base {
|
|
|
101
104
|
const fromDiscovery: AvailableMcp[] =
|
|
102
105
|
discoveryResult.status === 'fulfilled' && discoveryResult.value
|
|
103
106
|
? discoveryResult.value.packages.map((p) => ({
|
|
104
|
-
name: p.package,
|
|
107
|
+
name: p.package + ' (platform)',
|
|
105
108
|
url: p.url,
|
|
106
109
|
auth: p.auth,
|
|
107
110
|
redirectUrl: p.redirectUrl,
|
|
@@ -117,12 +120,28 @@ export class McpTools extends Base {
|
|
|
117
120
|
};
|
|
118
121
|
}
|
|
119
122
|
|
|
123
|
+
private getOAuthAuthUrlRoute(pkg: OAuthPackage): string {
|
|
124
|
+
const url = new URL(pkg.redirectUrl);
|
|
125
|
+
|
|
126
|
+
if (url.pathname === `/auth/${pkg.package}`) {
|
|
127
|
+
return `${pkg.package}/auth-url`;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
return url.pathname.replace(/^\//, '');
|
|
131
|
+
}
|
|
132
|
+
|
|
120
133
|
/**
|
|
121
134
|
* Opens the OAuth authorization URL for the given package in a new browser window.
|
|
122
135
|
* @param pkg - The OAuth package to authorize.
|
|
123
136
|
* @returns {Window | null} The opened window reference, or null if it could not be opened.
|
|
124
137
|
*/
|
|
125
|
-
authorizeOAuthPackage(pkg: OAuthPackage): Window | null {
|
|
126
|
-
|
|
138
|
+
async authorizeOAuthPackage(pkg: OAuthPackage): Promise<Window | null> {
|
|
139
|
+
const { url } = await this.makeRequest<OAuthAuthUrlResponse>({
|
|
140
|
+
method: 'GET',
|
|
141
|
+
route: this.getOAuthAuthUrlRoute(pkg),
|
|
142
|
+
url: pkg.redirectUrl,
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
return window.open(url, '_blank');
|
|
127
146
|
}
|
|
128
147
|
}
|
package/src/types.ts
CHANGED
|
@@ -64,10 +64,16 @@ export type OAuthPackage = McpPackage & {
|
|
|
64
64
|
redirectUrl: string;
|
|
65
65
|
};
|
|
66
66
|
|
|
67
|
+
export type OAuthAuthUrlResponse = {
|
|
68
|
+
url: string;
|
|
69
|
+
};
|
|
70
|
+
|
|
67
71
|
export type AvailableMcp = {
|
|
68
72
|
name: string;
|
|
69
73
|
url: string;
|
|
70
74
|
description?: string;
|
|
75
|
+
flowId?: string;
|
|
76
|
+
flowUrl?: string;
|
|
71
77
|
auth: 'oauth' | string;
|
|
72
78
|
redirectUrl?: string;
|
|
73
79
|
source: 'internal' | 'discovery';
|