@mcp-use/cli 1.0.20 → 2.0.1
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/LICENSE +3 -2
- package/README.md +52 -0
- package/dist/build.d.mts +2 -0
- package/dist/build.d.mts.map +1 -0
- package/dist/build.d.ts +2 -0
- package/dist/build.d.ts.map +1 -0
- package/dist/build.js +105 -0
- package/dist/build.js.map +1 -0
- package/dist/build.mjs +106 -0
- package/dist/build.mjs.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/package.json +53 -85
- package/dist/cli.js +0 -287920
- package/readme.md +0 -250
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2025
|
|
3
|
+
Copyright (c) 2025 mcp-use, Inc.
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -18,4 +18,5 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
18
18
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
20
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
package/README.md
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# @mcp-use/cli
|
|
2
|
+
|
|
3
|
+
Build tool for MCP UI widgets.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g @mcp-use/cli
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
mcp-use build [-p <project-path>]
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Bundles all `.tsx` files from `resources/` into standalone HTML pages in `dist/resources/mcp-use/widgets/`.
|
|
18
|
+
|
|
19
|
+
Each widget gets:
|
|
20
|
+
- Hashed bundle for caching
|
|
21
|
+
- Standalone HTML file
|
|
22
|
+
- All dependencies bundled
|
|
23
|
+
|
|
24
|
+
## Example
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# Build widgets in current directory
|
|
28
|
+
mcp-use build
|
|
29
|
+
|
|
30
|
+
# Build widgets in specific path
|
|
31
|
+
mcp-use build -p ./my-app
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Project Structure
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
my-app/
|
|
38
|
+
├── resources/
|
|
39
|
+
│ ├── todo-list.tsx
|
|
40
|
+
│ └── kanban-board.tsx
|
|
41
|
+
└── dist/
|
|
42
|
+
└── resources/
|
|
43
|
+
└── mcp-use/
|
|
44
|
+
└── widgets/
|
|
45
|
+
├── todo-list/
|
|
46
|
+
│ ├── index.html
|
|
47
|
+
│ └── assets/
|
|
48
|
+
└── kanban-board/
|
|
49
|
+
├── index.html
|
|
50
|
+
└── assets/
|
|
51
|
+
```
|
|
52
|
+
|
package/dist/build.d.mts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.d.mts","sourceRoot":"","sources":["../src/build.mts"],"names":[],"mappings":""}
|
package/dist/build.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AA6CA,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,iBAuErD"}
|
package/dist/build.js
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.buildWidgets = buildWidgets;
|
|
7
|
+
const node_fs_1 = require("node:fs");
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
const esbuild_1 = require("esbuild");
|
|
10
|
+
const globby_1 = require("globby");
|
|
11
|
+
const ROUTE_PREFIX = '/mcp-use/widgets';
|
|
12
|
+
const SRC_DIR = 'resources';
|
|
13
|
+
const OUT_DIR = 'dist/resources';
|
|
14
|
+
function toRoute(file) {
|
|
15
|
+
const rel = file.replace(new RegExp(`^${SRC_DIR}/`), '').replace(/\.tsx?$/, '');
|
|
16
|
+
return `${ROUTE_PREFIX}/${rel}`;
|
|
17
|
+
}
|
|
18
|
+
function outDirForRoute(route) {
|
|
19
|
+
return node_path_1.default.join(OUT_DIR, route.replace(/^\//, ''));
|
|
20
|
+
}
|
|
21
|
+
function htmlTemplate({ title, scriptPath }) {
|
|
22
|
+
return `<!doctype html>
|
|
23
|
+
<html lang="en">
|
|
24
|
+
<head>
|
|
25
|
+
<meta charset="UTF-8" />
|
|
26
|
+
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
|
27
|
+
<title>${title} Widget</title>
|
|
28
|
+
<style>
|
|
29
|
+
body {
|
|
30
|
+
margin: 0;
|
|
31
|
+
padding: 20px;
|
|
32
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
|
|
33
|
+
background: #f5f5f5;
|
|
34
|
+
}
|
|
35
|
+
#widget-root {
|
|
36
|
+
max-width: 1200px;
|
|
37
|
+
margin: 0 auto;
|
|
38
|
+
}
|
|
39
|
+
</style>
|
|
40
|
+
</head>
|
|
41
|
+
<body>
|
|
42
|
+
<div id="widget-root"></div>
|
|
43
|
+
<script type="module" src="${scriptPath}"></script>
|
|
44
|
+
</body>
|
|
45
|
+
</html>`;
|
|
46
|
+
}
|
|
47
|
+
async function buildWidgets(projectPath) {
|
|
48
|
+
console.log('🔨 Building UI widgets with esbuild...');
|
|
49
|
+
const srcDir = node_path_1.default.join(projectPath, SRC_DIR);
|
|
50
|
+
const outDir = node_path_1.default.join(projectPath, OUT_DIR);
|
|
51
|
+
// Clean dist
|
|
52
|
+
await node_fs_1.promises.rm(outDir, { recursive: true, force: true });
|
|
53
|
+
// Find all TSX entries
|
|
54
|
+
const entries = await (0, globby_1.globby)([`${srcDir}/**/*.tsx`]);
|
|
55
|
+
console.log(`📦 Found ${entries.length} widget files`);
|
|
56
|
+
// Build each entry as an isolated page with hashed output
|
|
57
|
+
for (const entry of entries) {
|
|
58
|
+
const relativePath = node_path_1.default.relative(projectPath, entry);
|
|
59
|
+
const route = toRoute(relativePath);
|
|
60
|
+
const pageOutDir = node_path_1.default.join(projectPath, outDirForRoute(route));
|
|
61
|
+
const baseName = node_path_1.default.parse(entry).name;
|
|
62
|
+
console.log(`🔨 Building ${baseName}...`);
|
|
63
|
+
// Build JS/CSS chunks for this page
|
|
64
|
+
await (0, esbuild_1.build)({
|
|
65
|
+
entryPoints: [entry],
|
|
66
|
+
bundle: true,
|
|
67
|
+
splitting: true,
|
|
68
|
+
format: 'esm',
|
|
69
|
+
platform: 'browser',
|
|
70
|
+
target: 'es2018',
|
|
71
|
+
sourcemap: false,
|
|
72
|
+
minify: true,
|
|
73
|
+
outdir: node_path_1.default.join(pageOutDir, 'assets'),
|
|
74
|
+
logLevel: 'silent',
|
|
75
|
+
loader: {
|
|
76
|
+
'.svg': 'file',
|
|
77
|
+
'.png': 'file',
|
|
78
|
+
'.jpg': 'file',
|
|
79
|
+
'.jpeg': 'file',
|
|
80
|
+
'.gif': 'file',
|
|
81
|
+
'.css': 'css',
|
|
82
|
+
},
|
|
83
|
+
entryNames: `[name]-[hash]`,
|
|
84
|
+
chunkNames: `chunk-[hash]`,
|
|
85
|
+
assetNames: `asset-[hash]`,
|
|
86
|
+
define: {
|
|
87
|
+
'process.env.NODE_ENV': '"production"',
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
// Find the main entry file name
|
|
91
|
+
const files = await node_fs_1.promises.readdir(node_path_1.default.join(pageOutDir, 'assets'));
|
|
92
|
+
const mainJs = files.find(f => f.startsWith(`${baseName}-`) && f.endsWith('.js'));
|
|
93
|
+
if (!mainJs)
|
|
94
|
+
throw new Error(`Failed to locate entry JS for ${entry}`);
|
|
95
|
+
// Write an index.html that points to the entry
|
|
96
|
+
await node_fs_1.promises.mkdir(pageOutDir, { recursive: true });
|
|
97
|
+
await node_fs_1.promises.writeFile(node_path_1.default.join(pageOutDir, 'index.html'), htmlTemplate({
|
|
98
|
+
title: baseName,
|
|
99
|
+
scriptPath: `./assets/${mainJs}`,
|
|
100
|
+
}), 'utf8');
|
|
101
|
+
console.log(`✅ Built ${baseName} -> ${route}`);
|
|
102
|
+
}
|
|
103
|
+
console.log('🎉 Build complete!');
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
|
package/dist/build.mjs
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
import { promises as fs } from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
// Using: esbuild + node >= 18
|
|
5
|
+
import { build } from 'esbuild';
|
|
6
|
+
import { globby } from 'globby';
|
|
7
|
+
const ROUTE_PREFIX = '/mcp-use/widgets'; // <- MCP widget prefix
|
|
8
|
+
const SRC_DIR = 'resources';
|
|
9
|
+
const OUT_DIR = 'dist/resources';
|
|
10
|
+
function toRoute(file) {
|
|
11
|
+
// resources/kanban-board.tsx -> /mcp-use/widgets/kanban-board
|
|
12
|
+
// resources/dashboard/stats.tsx -> /mcp-use/widgets/dashboard/stats
|
|
13
|
+
const rel = file.replace(new RegExp(`^${SRC_DIR}/`), '').replace(/\.tsx?$/, '');
|
|
14
|
+
return `${ROUTE_PREFIX}/${rel}`;
|
|
15
|
+
}
|
|
16
|
+
function outDirForRoute(route) {
|
|
17
|
+
// dist/resources/mcp-use/widgets/kanban-board
|
|
18
|
+
return path.join(OUT_DIR, route.replace(/^\//, ''));
|
|
19
|
+
}
|
|
20
|
+
function htmlTemplate({ title, scriptPath }) {
|
|
21
|
+
return `<!doctype html>
|
|
22
|
+
<html lang="en">
|
|
23
|
+
<head>
|
|
24
|
+
<meta charset="UTF-8" />
|
|
25
|
+
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
|
26
|
+
<title>${title} Widget</title>
|
|
27
|
+
<style>
|
|
28
|
+
body {
|
|
29
|
+
margin: 0;
|
|
30
|
+
padding: 20px;
|
|
31
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
|
|
32
|
+
background: #f5f5f5;
|
|
33
|
+
}
|
|
34
|
+
#widget-root {
|
|
35
|
+
max-width: 1200px;
|
|
36
|
+
margin: 0 auto;
|
|
37
|
+
}
|
|
38
|
+
</style>
|
|
39
|
+
</head>
|
|
40
|
+
<body>
|
|
41
|
+
<div id="widget-root"></div>
|
|
42
|
+
<script type="module" src="${scriptPath}"></script>
|
|
43
|
+
</body>
|
|
44
|
+
</html>`;
|
|
45
|
+
}
|
|
46
|
+
async function main() {
|
|
47
|
+
console.log('🔨 Building UI widgets with esbuild...');
|
|
48
|
+
// Clean dist
|
|
49
|
+
await fs.rm(OUT_DIR, { recursive: true, force: true });
|
|
50
|
+
// Find all TSX entries
|
|
51
|
+
const entries = await globby([`${SRC_DIR}/**/*.tsx`]);
|
|
52
|
+
console.log(`📦 Found ${entries.length} widget files`);
|
|
53
|
+
// Build each entry as an isolated page with hashed output
|
|
54
|
+
for (const entry of entries) {
|
|
55
|
+
const route = toRoute(entry);
|
|
56
|
+
const pageOutDir = outDirForRoute(route);
|
|
57
|
+
const baseName = path.parse(entry).name;
|
|
58
|
+
console.log(`🔨 Building ${baseName}...`);
|
|
59
|
+
// Build JS/CSS chunks for this page
|
|
60
|
+
const _result = await build({
|
|
61
|
+
entryPoints: [entry],
|
|
62
|
+
bundle: true,
|
|
63
|
+
splitting: true,
|
|
64
|
+
format: 'esm',
|
|
65
|
+
platform: 'browser',
|
|
66
|
+
target: 'es2018',
|
|
67
|
+
sourcemap: false,
|
|
68
|
+
minify: true,
|
|
69
|
+
outdir: path.join(pageOutDir, 'assets'),
|
|
70
|
+
logLevel: 'silent',
|
|
71
|
+
loader: {
|
|
72
|
+
'.svg': 'file',
|
|
73
|
+
'.png': 'file',
|
|
74
|
+
'.jpg': 'file',
|
|
75
|
+
'.jpeg': 'file',
|
|
76
|
+
'.gif': 'file',
|
|
77
|
+
'.css': 'css',
|
|
78
|
+
},
|
|
79
|
+
// Unique chunk names per page to avoid collisions
|
|
80
|
+
entryNames: `[name]-[hash]`,
|
|
81
|
+
chunkNames: `chunk-[hash]`,
|
|
82
|
+
assetNames: `asset-[hash]`,
|
|
83
|
+
define: {
|
|
84
|
+
'process.env.NODE_ENV': '"production"',
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
// Find the main entry file name
|
|
88
|
+
const files = await fs.readdir(path.join(pageOutDir, 'assets'));
|
|
89
|
+
const mainJs = files.find(f => f.startsWith(`${baseName}-`) && f.endsWith('.js'));
|
|
90
|
+
if (!mainJs)
|
|
91
|
+
throw new Error(`Failed to locate entry JS for ${entry}`);
|
|
92
|
+
// Write an index.html that points to the entry
|
|
93
|
+
await fs.mkdir(pageOutDir, { recursive: true });
|
|
94
|
+
await fs.writeFile(path.join(pageOutDir, 'index.html'), htmlTemplate({
|
|
95
|
+
title: baseName,
|
|
96
|
+
scriptPath: `./assets/${mainJs}`,
|
|
97
|
+
}), 'utf8');
|
|
98
|
+
console.log(`✅ Built ${baseName} -> ${route}`);
|
|
99
|
+
}
|
|
100
|
+
console.log('🎉 Build complete!');
|
|
101
|
+
}
|
|
102
|
+
main().catch((err) => {
|
|
103
|
+
console.error('❌ Build failed:', err);
|
|
104
|
+
process.exit(1);
|
|
105
|
+
});
|
|
106
|
+
//# sourceMappingURL=build.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.mjs","sourceRoot":"","sources":["../src/build.mts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const build_1 = require("./build");
|
|
6
|
+
const program = new commander_1.Command();
|
|
7
|
+
program
|
|
8
|
+
.name('mcp-use')
|
|
9
|
+
.description('MCP CLI tool')
|
|
10
|
+
.version('0.1.0');
|
|
11
|
+
program
|
|
12
|
+
.command('build')
|
|
13
|
+
.description('Build MCP UI widgets')
|
|
14
|
+
.option('-p, --path <path>', 'Path to project directory', process.cwd())
|
|
15
|
+
.action(async (options) => {
|
|
16
|
+
try {
|
|
17
|
+
await (0, build_1.buildWidgets)(options.path);
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
console.error('Build failed:', error);
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
program.parse();
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,yCAAoC;AACpC,mCAAuC;AAEvC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,cAAc,CAAC;KAC3B,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;KACvE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,IAAA,oBAAY,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,86 +1,54 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
"@modelcontextprotocol/sdk": "^1.13.2",
|
|
56
|
-
"@scarf/scarf": "^1.4.0",
|
|
57
|
-
"cli-spinners": "^3.2.0",
|
|
58
|
-
"dotenv": "^16.5.0",
|
|
59
|
-
"ink": "^5.2.1",
|
|
60
|
-
"ink-gradient": "^3.0.0",
|
|
61
|
-
"ink-link": "^4.1.0",
|
|
62
|
-
"mcp-use": "^0.1.2",
|
|
63
|
-
"meow": "^11.0.0",
|
|
64
|
-
"react": "^18.2.0"
|
|
65
|
-
},
|
|
66
|
-
"devDependencies": {
|
|
67
|
-
"@types/react": "^18.0.32",
|
|
68
|
-
"@typescript-eslint/eslint-plugin": "^8.35.0",
|
|
69
|
-
"@typescript-eslint/parser": "^8.35.0",
|
|
70
|
-
"@vdemedes/prettier-config": "^2.0.1",
|
|
71
|
-
"esbuild": "^0.25.5",
|
|
72
|
-
"eslint": "^9.30.0",
|
|
73
|
-
"eslint-config-prettier": "^9.1.0",
|
|
74
|
-
"eslint-plugin-prettier": "^5.2.1",
|
|
75
|
-
"prettier": "^3.3.3",
|
|
76
|
-
"react-devtools-core": "^4.28.5",
|
|
77
|
-
"typescript": "^5.0.3",
|
|
78
|
-
"typescript-eslint": "^8.35.0"
|
|
79
|
-
},
|
|
80
|
-
"prettier": "@vdemedes/prettier-config",
|
|
81
|
-
"scarfSettings": {
|
|
82
|
-
"enabled": true,
|
|
83
|
-
"defaultOptIn": true,
|
|
84
|
-
"allowTopLevel": true
|
|
85
|
-
}
|
|
86
|
-
}
|
|
2
|
+
"name": "@mcp-use/cli",
|
|
3
|
+
"version": "2.0.1",
|
|
4
|
+
"description": "Build tool for MCP UI widgets - bundles React components into standalone HTML pages for Model Context Protocol servers",
|
|
5
|
+
"author": "mcp-use, Inc.",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"homepage": "https://github.com/mcp-use/mcp-use-ts#readme",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/mcp-use/mcp-use-ts.git",
|
|
11
|
+
"directory": "packages/cli"
|
|
12
|
+
},
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/mcp-use/mcp-use-ts/issues"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"mcp",
|
|
18
|
+
"model-context-protocol",
|
|
19
|
+
"cli",
|
|
20
|
+
"build-tool",
|
|
21
|
+
"widget",
|
|
22
|
+
"ui",
|
|
23
|
+
"react",
|
|
24
|
+
"esbuild",
|
|
25
|
+
"bundler",
|
|
26
|
+
"typescript"
|
|
27
|
+
],
|
|
28
|
+
"bin": {
|
|
29
|
+
"mcp-use": "./dist/index.js"
|
|
30
|
+
},
|
|
31
|
+
"files": [
|
|
32
|
+
"dist"
|
|
33
|
+
],
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"commander": "^11.0.0",
|
|
36
|
+
"esbuild": "^0.19.0",
|
|
37
|
+
"globby": "^14.0.0",
|
|
38
|
+
"mcp-use": "0.2.0",
|
|
39
|
+
"@mcp-use/inspector": "0.1.0"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@types/node": "^20.0.0",
|
|
43
|
+
"typescript": "^5.0.0",
|
|
44
|
+
"vitest": "^1.0.0"
|
|
45
|
+
},
|
|
46
|
+
"publishConfig": {
|
|
47
|
+
"access": "public"
|
|
48
|
+
},
|
|
49
|
+
"scripts": {
|
|
50
|
+
"build": "tsc",
|
|
51
|
+
"dev": "tsc --watch",
|
|
52
|
+
"test": "vitest"
|
|
53
|
+
}
|
|
54
|
+
}
|