@miragon/mcp-toolkit-core 0.10.1 → 1.1.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.md +7 -7
- package/dist/framework/render-view.d.ts +1 -1
- package/dist/framework/render-view.d.ts.map +1 -1
- package/dist/framework/render-view.js +3 -0
- package/dist/framework/render-view.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/middleware/role-filter.d.ts +16 -32
- package/dist/middleware/role-filter.d.ts.map +1 -1
- package/dist/middleware/role-filter.js +10 -22
- package/dist/middleware/role-filter.js.map +1 -1
- package/dist/tools/backend-registry.d.ts +9 -3
- package/dist/tools/backend-registry.d.ts.map +1 -1
- package/dist/tools/backend-registry.js +13 -12
- package/dist/tools/backend-registry.js.map +1 -1
- package/dist/tools/create-framework-app.d.ts +51 -38
- package/dist/tools/create-framework-app.d.ts.map +1 -1
- package/dist/tools/create-framework-app.js +79 -78
- package/dist/tools/create-framework-app.js.map +1 -1
- package/dist/tools/index.d.ts +4 -5
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +3 -3
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/install-toolkit.d.ts +77 -0
- package/dist/tools/install-toolkit.d.ts.map +1 -0
- package/dist/tools/install-toolkit.js +85 -0
- package/dist/tools/install-toolkit.js.map +1 -0
- package/dist/tools/register-catalogue-tool.d.ts +1 -1
- package/dist/tools/register-catalogue-tool.d.ts.map +1 -1
- package/dist/tools/register-catalogue-tool.js +2 -3
- package/dist/tools/register-catalogue-tool.js.map +1 -1
- package/dist/tools/register-dashboard-tools.d.ts +1 -1
- package/dist/tools/register-dashboard-tools.d.ts.map +1 -1
- package/dist/tools/register-dashboard-tools.js +6 -6
- package/dist/tools/register-dashboard-tools.js.map +1 -1
- package/dist/tools/register-framework-tools.d.ts +15 -47
- package/dist/tools/register-framework-tools.d.ts.map +1 -1
- package/dist/tools/register-framework-tools.js +31 -63
- package/dist/tools/register-framework-tools.js.map +1 -1
- package/dist/tools/register-tool.d.ts +1 -1
- package/dist/tools/register-tool.d.ts.map +1 -1
- package/dist/tools/register-tool.js +14 -8
- package/dist/tools/register-tool.js.map +1 -1
- package/dist/tools/register-widget-tool.d.ts +35 -11
- package/dist/tools/register-widget-tool.d.ts.map +1 -1
- package/dist/tools/register-widget-tool.js +57 -30
- package/dist/tools/register-widget-tool.js.map +1 -1
- package/dist/tools/tool-results.d.ts +46 -0
- package/dist/tools/tool-results.d.ts.map +1 -0
- package/dist/tools/tool-results.js +39 -0
- package/dist/tools/tool-results.js.map +1 -0
- package/dist/tools/with-tool-errors.d.ts +12 -6
- package/dist/tools/with-tool-errors.d.ts.map +1 -1
- package/dist/tools/with-tool-errors.js +12 -6
- package/dist/tools/with-tool-errors.js.map +1 -1
- package/dist/types/app.d.ts +10 -7
- package/dist/types/app.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/meta.d.ts +73 -56
- package/dist/types/meta.d.ts.map +1 -1
- package/dist/types/meta.js +49 -53
- package/dist/types/meta.js.map +1 -1
- package/package.json +13 -6
- package/dist/tools/app-resource-uri.d.ts +0 -28
- package/dist/tools/app-resource-uri.d.ts.map +0 -1
- package/dist/tools/app-resource-uri.js +0 -30
- package/dist/tools/app-resource-uri.js.map +0 -1
- package/dist/tools/tool-call-name.d.ts +0 -53
- package/dist/tools/tool-call-name.d.ts.map +0 -1
- package/dist/tools/tool-call-name.js +0 -92
- package/dist/tools/tool-call-name.js.map +0 -1
package/README.md
CHANGED
|
@@ -9,20 +9,20 @@ Published to the public npm registry under the `@miragon` scope — no `.npmrc`
|
|
|
9
9
|
or token needed.
|
|
10
10
|
|
|
11
11
|
```sh
|
|
12
|
-
pnpm add @miragon/mcp-toolkit-core
|
|
12
|
+
pnpm add @miragon/mcp-toolkit-core mcp-use@2.1.0 zod@4.4.3
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
Peer versions are pinned exactly — install the versions above.
|
|
16
16
|
|
|
17
17
|
## Import paths
|
|
18
18
|
|
|
19
|
-
| Subpath | Key exports
|
|
20
|
-
| --------------------------- |
|
|
21
|
-
| `@miragon/mcp-toolkit-core` | `executePipeline`, `renderView`, `buildSingleWidgetView`, `buildComposedView`, `StepRegistry`, `WidgetRegistry`, `
|
|
22
|
-
| `…-core/tools` | `createFrameworkApp`, `createToolRegistrar`, `createWidgetToolRegistrar`, `registerFrameworkTools`, dashboard-store impls
|
|
23
|
-
| `…-core/rest` | `createRestClient`, `createRestTool`, `RestError`
|
|
19
|
+
| Subpath | Key exports | Constraint |
|
|
20
|
+
| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
|
|
21
|
+
| `@miragon/mcp-toolkit-core` | `executePipeline`, `renderView`, `buildSingleWidgetView`, `buildComposedView`, `StepRegistry`, `WidgetRegistry`, `appsSdkMeta`, `viewResourceUri`, types | Browser-safe: no `mcp-use` server runtime, no `node:*`. The barrel widget bundles import from. |
|
|
22
|
+
| `…-core/tools` | `installToolkit`, `createFrameworkApp`, `createToolRegistrar`, `createWidgetToolRegistrar`, `registerFrameworkTools`, dashboard-store impls | Server-only — imports the `mcp-use` server runtime. Keep out of browser bundles. |
|
|
23
|
+
| `…-core/rest` | `createRestClient`, `createRestTool`, `RestError` | REST tool helpers; register the resulting `ToolConfig` via `createToolRegistrar` from `/tools`. |
|
|
24
24
|
|
|
25
|
-
`createFrameworkApp` / `createToolRegistrar` live **only** in
|
|
25
|
+
`installToolkit` / `createFrameworkApp` / `createToolRegistrar` live **only** in
|
|
26
26
|
`@miragon/mcp-toolkit-core/tools` — never in the root barrel.
|
|
27
27
|
|
|
28
28
|
## Links
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-view.d.ts","sourceRoot":"","sources":["../../src/framework/render-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AAE/F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,KAAK,CAAC,EAAE,eAAe,EAAE,CAAA;IACzB,MAAM,EAAE,YAAY,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,eAAe,CAAA;IACtB,YAAY,EAAE,YAAY,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACpD;;;;;OAKG;IACH,GAAG,CAAC,EAAE,wBAAwB,CAAA;IAC9B;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"render-view.d.ts","sourceRoot":"","sources":["../../src/framework/render-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AAE/F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,KAAK,CAAC,EAAE,eAAe,EAAE,CAAA;IACzB,MAAM,EAAE,YAAY,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,eAAe,CAAA;IACtB,YAAY,EAAE,YAAY,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACpD;;;;;OAKG;IACH,GAAG,CAAC,EAAE,wBAAwB,CAAA;IAC9B;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB;;;;;;;;;;;;;;GA0E1D"}
|
|
@@ -19,6 +19,9 @@ export async function renderView(options) {
|
|
|
19
19
|
text: `Pipeline validation failed: ${validation.issues.join("; ")}`,
|
|
20
20
|
},
|
|
21
21
|
],
|
|
22
|
+
// Literal `true` (not widened to boolean): with `render-view` bound to
|
|
23
|
+
// a view its outputSchema makes mcp-use's callback type demand either
|
|
24
|
+
// `structuredContent` or an explicit `isError: true` result.
|
|
22
25
|
isError: true,
|
|
23
26
|
};
|
|
24
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-view.js","sourceRoot":"","sources":["../../src/framework/render-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAiC,MAAM,gCAAgC,CAAA;AAC/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAmC/D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAA0B;IACzD,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAA;IAC1E,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAA;IACpC,MAAM,cAAc,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAA;IAE7C,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,gBAAgB,CAAC,cAAc,EAAE,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;QAC3F,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,+BAA+B,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;qBACpE;iBACF;gBACD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"render-view.js","sourceRoot":"","sources":["../../src/framework/render-view.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export type { StepOutput, StepResult, PipelineContext, PipelineStepDefinition, OptionalKeyDeclaration, WidgetProps, WidgetSize, WidgetDefinition, AppDefinition, AppPlugin, PipelineConfig, PipelineStepRef, AppConfig, AppConfigEntry, ValidationResult, ViewStructuredContent, StepDataEntry, RefreshParams, } from "./types/index.js";
|
|
2
|
-
export {
|
|
3
|
-
export type {
|
|
2
|
+
export { appsSdkMeta, viewResourceUri, VIEW_RESOURCE_URI_PREFIX } from "./types/index.js";
|
|
3
|
+
export type { AppsSdkMetaOptions, AppResourceCsp } from "./types/index.js";
|
|
4
4
|
export { createTranslator } from "./i18n/index.js";
|
|
5
5
|
export type { Message, MessageCatalog, Catalogs, Translate, CreateTranslatorOptions, } from "./i18n/index.js";
|
|
6
6
|
export { executePipeline } from "./engine/pipeline-executor.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,UAAU,EACV,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,SAAS,EACT,cAAc,EACd,eAAe,EACf,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,aAAa,GACd,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,UAAU,EACV,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,SAAS,EACT,cAAc,EACd,eAAe,EACf,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,aAAa,GACd,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AACzF,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAO1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,YAAY,EACV,OAAO,EACP,cAAc,EACd,QAAQ,EACR,SAAS,EACT,uBAAuB,GACxB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,YAAY,EACV,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,YAAY,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AACpF,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,oBAAoB,GACrB,MAAM,8BAA8B,CAAA;AACrC,YAAY,EACV,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,GACf,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,eAAe,GAChB,MAAM,0BAA0B,CAAA;AAOjC,YAAY,EACV,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,+BAA+B,GAChC,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC9D,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAC7D,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAA;AACvE,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAE1F,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AACxF,YAAY,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAE1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAClE,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAA;AACxE,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,6BAA6B,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { appsSdkMeta, viewResourceUri, VIEW_RESOURCE_URI_PREFIX } from "./types/index.js";
|
|
2
2
|
// Localization engine — a dependency-free translator shared by the server (tool
|
|
3
3
|
// summaries) and the UI (widget strings). Browser-safe, so it belongs in the
|
|
4
4
|
// root barrel; ships no catalogs (the consuming app provides its own). The UI
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAGzF,gFAAgF;AAChF,6EAA6E;AAC7E,8EAA8E;AAC9E,wEAAwE;AACxE,yBAAyB;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AASlD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAK/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAE1D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAEvD,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,oBAAoB,GACrB,MAAM,8BAA8B,CAAA;AAOrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAwB9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAE9D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAE7D,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAE1F,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAGxF,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAElE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAA;AAQxE,6EAA6E;AAC7E,gEAAgE;AAChE,4EAA4E;AAC5E,4EAA4E;AAC5E,kEAAkE"}
|
|
@@ -7,12 +7,14 @@
|
|
|
7
7
|
* - `toolsList` — filters `tools/list` responses so users only see tools
|
|
8
8
|
* belonging to modules their role(s) can access.
|
|
9
9
|
* - `toolsCall` — defence-in-depth: blocks a `tools/call` for a tool whose
|
|
10
|
-
* module isn't allowed for the caller's role(s). Reads the
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
10
|
+
* module isn't allowed for the caller's role(s). Reads the name straight off
|
|
11
|
+
* `ctx.params.name`. When no name is present it fails *open* by default
|
|
12
|
+
* (allow) — pass `failClosed: true` to deny instead.
|
|
13
|
+
*
|
|
14
|
+
* Batches need no special handling: mcp-use invokes `mcp:tools/call`
|
|
15
|
+
* middleware once per call, so each entry of a JSON-RPC batch is guarded
|
|
16
|
+
* individually (verified against 2.0.4 — a two-entry batch fires the guard
|
|
17
|
+
* twice, with each name).
|
|
16
18
|
*
|
|
17
19
|
* Tool-to-module mapping uses the prefix convention `<module>_<tool>`.
|
|
18
20
|
* Tools without an underscore are always allowed (they're framework or
|
|
@@ -45,32 +47,14 @@ export interface RoleFilterMiddlewares {
|
|
|
45
47
|
}
|
|
46
48
|
export interface RoleFilterOptions {
|
|
47
49
|
/**
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*/
|
|
57
|
-
resolveToolName?: () => string | undefined;
|
|
58
|
-
/**
|
|
59
|
-
* Resolves *every* `tools/call` name of the in-flight request. A JSON-RPC
|
|
60
|
-
* batch envelope can carry several `tools/call` requests — a guard that only
|
|
61
|
-
* checks one of them can be bypassed by the others, so when this resolver is
|
|
62
|
-
* provided the guard checks each name and denies if *any* is disallowed.
|
|
63
|
-
* Wire it to the `.all` of `installToolCallNameCapture(server)`'s return.
|
|
64
|
-
* Takes precedence over `resolveToolName` when it yields at least one name.
|
|
65
|
-
*/
|
|
66
|
-
resolveToolNames?: () => string[] | undefined;
|
|
67
|
-
/**
|
|
68
|
-
* When `true`, a `tools/call` whose tool name can't be resolved is *denied*
|
|
69
|
-
* instead of allowed. Defaults to `false` (fail-open) to preserve the prior
|
|
70
|
-
* behaviour — opt in for stricter deployments where an unresolved name should
|
|
71
|
-
* never slip past the module guard. Only meaningful alongside
|
|
72
|
-
* `resolveToolName`; without a resolver the name is unavailable by design and
|
|
73
|
-
* enabling this would block every call.
|
|
50
|
+
* When `true`, a `tools/call` that arrives without a readable tool name is
|
|
51
|
+
* *denied* instead of allowed. Defaults to `false` (fail-open), matching the
|
|
52
|
+
* prior behaviour. Opt in for deployments where an unnamed call must never
|
|
53
|
+
* slip past the module guard.
|
|
54
|
+
*
|
|
55
|
+
* Since mcp-use 2.x the name is always present on `ctx.params.name` for a
|
|
56
|
+
* well-formed call, so this now only fires on malformed input rather than on
|
|
57
|
+
* the framework's own shape.
|
|
74
58
|
*/
|
|
75
59
|
failClosed?: boolean;
|
|
76
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role-filter.d.ts","sourceRoot":"","sources":["../../src/middleware/role-filter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"role-filter.d.ts","sourceRoot":"","sources":["../../src/middleware/role-filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,OAAO,CAAA;SAAE,CAAA;KAAE,CAAA;IACrC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;CAC5B;AACD,KAAK,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;AAClC,MAAM,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;AAE3F,MAAM,WAAW,qBAAqB;IACpC,yDAAyD;IACzD,SAAS,EAAE,oBAAoB,CAAA;IAC/B,yDAAyD;IACzD,SAAS,EAAE,oBAAoB,CAAA;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACvC,IAAI,GAAE,iBAAsB,GAC3B,qBAAqB,CAqDvB"}
|
|
@@ -7,12 +7,14 @@
|
|
|
7
7
|
* - `toolsList` — filters `tools/list` responses so users only see tools
|
|
8
8
|
* belonging to modules their role(s) can access.
|
|
9
9
|
* - `toolsCall` — defence-in-depth: blocks a `tools/call` for a tool whose
|
|
10
|
-
* module isn't allowed for the caller's role(s). Reads the
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
10
|
+
* module isn't allowed for the caller's role(s). Reads the name straight off
|
|
11
|
+
* `ctx.params.name`. When no name is present it fails *open* by default
|
|
12
|
+
* (allow) — pass `failClosed: true` to deny instead.
|
|
13
|
+
*
|
|
14
|
+
* Batches need no special handling: mcp-use invokes `mcp:tools/call`
|
|
15
|
+
* middleware once per call, so each entry of a JSON-RPC batch is guarded
|
|
16
|
+
* individually (verified against 2.0.4 — a two-entry batch fires the guard
|
|
17
|
+
* twice, with each name).
|
|
16
18
|
*
|
|
17
19
|
* Tool-to-module mapping uses the prefix convention `<module>_<tool>`.
|
|
18
20
|
* Tools without an underscore are always allowed (they're framework or
|
|
@@ -25,8 +27,6 @@
|
|
|
25
27
|
* role doesn't silently revoke anyone's tools.
|
|
26
28
|
*/
|
|
27
29
|
export function createRoleFilterMiddleware(roleToModules, opts = {}) {
|
|
28
|
-
const resolveToolName = opts.resolveToolName;
|
|
29
|
-
const resolveToolNames = opts.resolveToolNames;
|
|
30
30
|
const failClosed = opts.failClosed ?? false;
|
|
31
31
|
const hasRules = Object.keys(roleToModules).length > 0;
|
|
32
32
|
// Returns `null` = unrestricted (full access), array = restricted.
|
|
@@ -55,20 +55,8 @@ export function createRoleFilterMiddleware(roleToModules, opts = {}) {
|
|
|
55
55
|
const toolsCall = async (ctx, next) => {
|
|
56
56
|
if (!hasRules)
|
|
57
57
|
return next();
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const resolvedNames = resolveToolNames?.();
|
|
61
|
-
const resolved = resolveToolName?.();
|
|
62
|
-
const fallbackName = typeof resolved === "string"
|
|
63
|
-
? resolved
|
|
64
|
-
: typeof ctx.params?.name === "string"
|
|
65
|
-
? ctx.params.name
|
|
66
|
-
: undefined;
|
|
67
|
-
const toolNames = resolvedNames && resolvedNames.length > 0
|
|
68
|
-
? resolvedNames
|
|
69
|
-
: fallbackName !== undefined
|
|
70
|
-
? [fallbackName]
|
|
71
|
-
: [];
|
|
58
|
+
const name = typeof ctx.params?.name === "string" ? ctx.params.name : undefined;
|
|
59
|
+
const toolNames = name === undefined ? [] : [name];
|
|
72
60
|
if (toolNames.length === 0) {
|
|
73
61
|
if (failClosed) {
|
|
74
62
|
throw new Error("Access denied: unable to resolve the tool name for this call; rejecting under fail-closed policy.");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role-filter.js","sourceRoot":"","sources":["../../src/middleware/role-filter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"role-filter.js","sourceRoot":"","sources":["../../src/middleware/role-filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,9 +28,15 @@ export interface CreateBackendRegistryOptions {
|
|
|
28
28
|
*/
|
|
29
29
|
label?: string;
|
|
30
30
|
/**
|
|
31
|
-
* Resolves the current MCP session id
|
|
32
|
-
*
|
|
33
|
-
*
|
|
31
|
+
* Resolves the current MCP session id, which keys the sticky per-session
|
|
32
|
+
* backend selection.
|
|
33
|
+
*
|
|
34
|
+
* **Required for multi-backend sticky selection since mcp-use 2.x.** The
|
|
35
|
+
* default returns `undefined` (see {@link defaultGetSessionId}), which makes
|
|
36
|
+
* every call fall back to the single default backend. Pass a resolver that
|
|
37
|
+
* reads the session off your tool handler's context —
|
|
38
|
+
* `(ctx) => ctx.session?.sessionId` — or off whatever your host keys
|
|
39
|
+
* sessions by.
|
|
34
40
|
*/
|
|
35
41
|
getSessionId?: () => string | undefined;
|
|
36
42
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend-registry.d.ts","sourceRoot":"","sources":["../../src/tools/backend-registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"backend-registry.d.ts","sourceRoot":"","sources":["../../src/tools/backend-registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B,QAAsB,CAAA;AAEjE,uFAAuF;AACvF,MAAM,WAAW,YAAY,CAAC,OAAO,EAAE,KAAK,GAAG,SAAS;IACtD,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,OAAO,CAAA;IACf,IAAI,CAAC,EAAE,KAAK,CAAA;CACb;AAED,mDAAmD;AACnD,MAAM,WAAW,eAAe,CAAC,OAAO,EAAE,KAAK,GAAG,SAAS;IACzD,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,OAAO,CAAA;IACf,IAAI,EAAE,KAAK,GAAG,SAAS,CAAA;CACxB;AAqBD,MAAM,WAAW,4BAA4B;IAC3C,oFAAoF;IACpF,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;;;;;;;OAUG;IACH,YAAY,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAA;IACvC;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAED;;;;;;;;GAQG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,IAAI,EAAG,sBAAsB,CAAS;IAC/C,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAA;gBACnB,YAAY,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM;CAQlD;AAED,yFAAyF;AACzF,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,IAAI,EAAG,iBAAiB,CAAS;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAA;gBACnB,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM;CAMvE;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe,CAAC,OAAO,EAAE,KAAK,GAAG,SAAS;IACzD,iGAAiG;IACjG,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IAC3D,oEAAoE;IACpE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,yEAAyE;IACzE,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,wEAAwE;IACxE,IAAI,IAAI;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,KAAK,GAAG,SAAS,CAAA;KAAE,EAAE,CAAA;IACjD;;;;;;;OAOG;IACH,WAAW,IAAI,MAAM,GAAG,SAAS,CAAA;CAClC;AAOD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,KAAK,GAAG,SAAS,EAC9D,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EACvC,IAAI,GAAE,4BAAiC,GACtC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAmFjC;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EACxF,QAAQ,EAAE,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,EACzC,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,GAC9E,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAMnC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { getRequestContext } from "mcp-use/server";
|
|
2
1
|
/**
|
|
3
2
|
* Default backend-selection TTL: how long a session's sticky pick survives
|
|
4
3
|
* without being re-set. `mcp-use` exposes no session-close hook to plugins, so
|
|
@@ -8,20 +7,22 @@ import { getRequestContext } from "mcp-use/server";
|
|
|
8
7
|
*/
|
|
9
8
|
export const DEFAULT_BACKEND_SESSION_TTL_MS = 24 * 60 * 60 * 1000;
|
|
10
9
|
/**
|
|
11
|
-
*
|
|
10
|
+
* Fallback session resolver: always `undefined`.
|
|
12
11
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
12
|
+
* Until mcp-use 2.x this read the `Mcp-Session-Id` header off an ambient Hono
|
|
13
|
+
* context that `mcp-use` propagated through AsyncLocalStorage. 2.x removed
|
|
14
|
+
* `getRequestContext()` — a request's context now only reaches code that is
|
|
15
|
+
* handed it, and the transport is session-less by default — so there is no
|
|
16
|
+
* ambient source left to read.
|
|
17
|
+
*
|
|
18
|
+
* Returning `undefined` keeps the documented fail-soft path: resolution falls
|
|
19
|
+
* back to the lone default backend, so single-backend setups are unaffected.
|
|
20
|
+
* **Sticky per-session selection across several backends now requires passing
|
|
21
|
+
* {@link CreateBackendRegistryOptions.getSessionId} explicitly** — from a tool
|
|
22
|
+
* handler, `(ctx) => ctx.session?.sessionId` is the 2.x equivalent.
|
|
19
23
|
*/
|
|
20
24
|
function defaultGetSessionId() {
|
|
21
|
-
|
|
22
|
-
if (!ctx)
|
|
23
|
-
return undefined;
|
|
24
|
-
return ctx.req.header("Mcp-Session-Id") ?? ctx.req.header("mcp-session-id") ?? undefined;
|
|
25
|
+
return undefined;
|
|
25
26
|
}
|
|
26
27
|
/**
|
|
27
28
|
* Thrown when a tool is invoked but no backend has been selected for the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend-registry.js","sourceRoot":"","sources":["../../src/tools/backend-registry.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"backend-registry.js","sourceRoot":"","sources":["../../src/tools/backend-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { MCPServer, type ServerConfig } from "mcp-use";
|
|
2
|
+
import type { OAuthProvider } from "mcp-use/oauth";
|
|
3
|
+
import type { DashboardStore } from "../framework/dashboard-store.js";
|
|
3
4
|
import type { AppConfig, AppPlugin } from "../types/index.js";
|
|
4
|
-
import {
|
|
5
|
+
import type { AppResourceCsp } from "../types/meta.js";
|
|
5
6
|
export interface CreateFrameworkAppOptionsBase {
|
|
6
7
|
name: string;
|
|
7
8
|
version?: string;
|
|
@@ -11,22 +12,18 @@ export interface CreateFrameworkAppOptionsBase {
|
|
|
11
12
|
* `serverInfo`-adjacent surfaces.
|
|
12
13
|
*/
|
|
13
14
|
description?: string;
|
|
14
|
-
/** Public base URL the server advertises (resource URIs, oauth callbacks). */
|
|
15
|
-
baseUrl?: string;
|
|
16
15
|
host?: string;
|
|
17
16
|
/**
|
|
18
17
|
* Pass-through of the remaining mcp-use {@link ServerConfig} handed to the
|
|
19
18
|
* `MCPServer` constructor. The main use case is wiring session/stream
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* interface already; `oauth` additionally stays out because it selects the
|
|
27
|
-
* `MCPServer<true | false>` constructor overload.
|
|
19
|
+
* options it does not mirror — `cors`, `instructions`, `allowedOrigins`,
|
|
20
|
+
* `logging`, … — straight through to the `MCPServer` constructor. The
|
|
21
|
+
* toolkit-owned keys
|
|
22
|
+
* (`name`, `version`, `description`, `host`, `oauth`) are excluded via
|
|
23
|
+
* `Omit` because they are first-class options on this interface already;
|
|
24
|
+
* `oauth` additionally stays out because it carries the `TUser` generic.
|
|
28
25
|
*/
|
|
29
|
-
serverOptions?: Omit<ServerConfig, "name" | "version" | "description" | "host" | "
|
|
26
|
+
serverOptions?: Omit<ServerConfig, "name" | "version" | "description" | "host" | "oauth">;
|
|
30
27
|
plugins: AppPlugin[];
|
|
31
28
|
middleware?: {
|
|
32
29
|
/** When set, every RPC must come from a token with this organization_id. */
|
|
@@ -45,23 +42,26 @@ export interface CreateFrameworkAppOptionsBase {
|
|
|
45
42
|
};
|
|
46
43
|
app: {
|
|
47
44
|
/**
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
45
|
+
* The compiled widget bundle backing every view this server binds. Views
|
|
46
|
+
* are registered natively with mcp-use (which owns the view resources,
|
|
47
|
+
* their `ui://views/<name>.html` URIs, and the `_meta.ui` wire keys);
|
|
48
|
+
* every tool-bound view name resolves to this one bundle — the bundle's
|
|
49
|
+
* widget map decides what actually renders.
|
|
53
50
|
*/
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
51
|
+
bundle: {
|
|
52
|
+
/** Absolute path to the bundle's ES module (e.g. `dist/mcp-app.js`). */
|
|
53
|
+
jsPath: string;
|
|
54
|
+
/** Absolute path to the bundle's stylesheet, when the build emits one. */
|
|
55
|
+
cssPath?: string;
|
|
56
|
+
};
|
|
57
57
|
/** Override the refresh tool name (default: `refresh-view`). */
|
|
58
58
|
refreshToolName?: string;
|
|
59
59
|
/**
|
|
60
|
-
* Additional CSP origins advertised on the
|
|
61
|
-
* (`_meta.ui.csp`) and widget tools (`openai/widgetCSP`). The
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
* origins other than the server
|
|
60
|
+
* Additional CSP origins advertised on the view resources
|
|
61
|
+
* (`_meta.ui.csp`) and widget tools (`openai/widgetCSP`). The server
|
|
62
|
+
* origin is appended by mcp-use itself at emission time, so most
|
|
63
|
+
* deployments never need this — set it only when widgets fetch from
|
|
64
|
+
* origins other than the server (e.g. a CDN).
|
|
65
65
|
*/
|
|
66
66
|
csp?: AppResourceCsp;
|
|
67
67
|
/**
|
|
@@ -70,8 +70,8 @@ export interface CreateFrameworkAppOptionsBase {
|
|
|
70
70
|
*
|
|
71
71
|
* Widget rendering always works regardless of this flag:
|
|
72
72
|
* `get-framework-manifest`, `render-view`, and `refresh-view` (plus the
|
|
73
|
-
*
|
|
74
|
-
* core surface every MCP server gets.
|
|
73
|
+
* natively registered view resources) are registered unconditionally —
|
|
74
|
+
* that is the core surface every MCP server gets.
|
|
75
75
|
*
|
|
76
76
|
* Setting `builder: true` additionally registers:
|
|
77
77
|
* - `get-builder-catalogue` — the app-only data source the in-iframe
|
|
@@ -112,8 +112,8 @@ export interface CreateFrameworkAppOptionsBase {
|
|
|
112
112
|
* typed as `MCPServer<true>`, so tool callbacks receive a non-nullable
|
|
113
113
|
* `ctx.auth`.
|
|
114
114
|
*/
|
|
115
|
-
export interface CreateFrameworkAppOptionsWithOAuth extends CreateFrameworkAppOptionsBase {
|
|
116
|
-
oauth: OAuthProvider
|
|
115
|
+
export interface CreateFrameworkAppOptionsWithOAuth<TUser = unknown> extends CreateFrameworkAppOptionsBase {
|
|
116
|
+
oauth: OAuthProvider<TUser>;
|
|
117
117
|
}
|
|
118
118
|
/**
|
|
119
119
|
* `createFrameworkApp` options with OAuth disabled. The returned server is
|
|
@@ -123,12 +123,25 @@ export interface CreateFrameworkAppOptionsWithOAuth extends CreateFrameworkAppOp
|
|
|
123
123
|
export interface CreateFrameworkAppOptionsWithoutOAuth extends CreateFrameworkAppOptionsBase {
|
|
124
124
|
oauth?: undefined;
|
|
125
125
|
}
|
|
126
|
-
export type CreateFrameworkAppOptions = CreateFrameworkAppOptionsWithOAuth | CreateFrameworkAppOptionsWithoutOAuth;
|
|
126
|
+
export type CreateFrameworkAppOptions<TUser = unknown> = CreateFrameworkAppOptionsWithOAuth<TUser> | CreateFrameworkAppOptionsWithoutOAuth;
|
|
127
127
|
/**
|
|
128
|
-
*
|
|
129
|
-
* org-gate + role-filter middleware,
|
|
130
|
-
* framework
|
|
131
|
-
*
|
|
128
|
+
* The batteries-included wrapper — the toolkit's **Node adapter**: MCPServer
|
|
129
|
+
* construction, org-gate + role-filter middleware, `installToolkit` (the
|
|
130
|
+
* framework tool surface), and native view registration from a self-built
|
|
131
|
+
* bundle. Reach for it when the server must run in your own process (embedded
|
|
132
|
+
* in existing infrastructure, custom entrypoints) or ship the views inline in
|
|
133
|
+
* the MCP resources (gateways that only forward the JSON-RPC endpoint).
|
|
134
|
+
*
|
|
135
|
+
* The standard path for new projects is the other way around: a plain
|
|
136
|
+
* mcp-use project (own `MCPServer`, `views/` convention, `mcp-use dev` /
|
|
137
|
+
* `build` / `start`) with {@link installToolkit} on top — the CLI then owns
|
|
138
|
+
* view building and serving, and this wrapper is not involved.
|
|
139
|
+
*
|
|
140
|
+
* Views are mcp-use-native either way: every tool registered with a `view`
|
|
141
|
+
* binding (render-view, plus each plugin's model-visible widget tools) is
|
|
142
|
+
* collected during boot, and the view registry is then primed once with the
|
|
143
|
+
* compiled app bundle from `app.bundle` — one bundle, many view names,
|
|
144
|
+
* mcp-use owns the resources and the `_meta.ui` wire keys.
|
|
132
145
|
*
|
|
133
146
|
* The server is deliberately self-contained: it serves only the first-party
|
|
134
147
|
* plugins passed in. Aggregating several MCP servers into one surface is an
|
|
@@ -142,6 +155,6 @@ export type CreateFrameworkAppOptions = CreateFrameworkAppOptionsWithOAuth | Cre
|
|
|
142
155
|
* Returns the booted server before `.listen()` — the caller decides the port
|
|
143
156
|
* and the moment the server starts accepting traffic.
|
|
144
157
|
*/
|
|
145
|
-
export declare function createFrameworkApp(options: CreateFrameworkAppOptionsWithOAuth): Promise<
|
|
146
|
-
export declare function createFrameworkApp(options: CreateFrameworkAppOptionsWithoutOAuth): Promise<
|
|
158
|
+
export declare function createFrameworkApp<TUser>(options: CreateFrameworkAppOptionsWithOAuth<TUser>): Promise<MCPServer<TUser>>;
|
|
159
|
+
export declare function createFrameworkApp(options: CreateFrameworkAppOptionsWithoutOAuth): Promise<MCPServer>;
|
|
147
160
|
//# sourceMappingURL=create-framework-app.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-framework-app.d.ts","sourceRoot":"","sources":["../../src/tools/create-framework-app.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create-framework-app.d.ts","sourceRoot":"","sources":["../../src/tools/create-framework-app.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EAET,KAAK,YAAY,EAGlB,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAGlD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAGtD,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;IACzF,OAAO,EAAE,SAAS,EAAE,CAAA;IACpB,UAAU,CAAC,EAAE;QACX,4EAA4E;QAC5E,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,wEAAwE;QACxE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;QACrC;;;;;;;WAOG;QACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;KAC/B,CAAA;IACD,GAAG,EAAE;QACH;;;;;;WAMG;QACH,MAAM,EAAE;YACN,wEAAwE;YACxE,MAAM,EAAE,MAAM,CAAA;YACd,0EAA0E;YAC1E,OAAO,CAAC,EAAE,MAAM,CAAA;SACjB,CAAA;QACD,gEAAgE;QAChE,eAAe,CAAC,EAAE,MAAM,CAAA;QACxB;;;;;;WAMG;QACH,GAAG,CAAC,EAAE,cAAc,CAAA;QACpB;;;;;;;;;;;;;;;;;;;;;WAqBG;QACH,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB;;;;;WAKG;QACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAC1B;;;;;;;WAOG;QACH,cAAc,CAAC,EAAE,cAAc,CAAA;KAChC,CAAA;IACD,iEAAiE;IACjE,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,kCAAkC,CACjD,KAAK,GAAG,OAAO,CACf,SAAQ,6BAA6B;IACrC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAA;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,qCAAsC,SAAQ,6BAA6B;IAC1F,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AAED,MAAM,MAAM,yBAAyB,CAAC,KAAK,GAAG,OAAO,IACnD,kCAAkC,CAAC,KAAK,CAAC,GAAG,qCAAqC,CAAA;AAoBnF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EACtC,OAAO,EAAE,kCAAkC,CAAC,KAAK,CAAC,GACjD,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;AAC5B,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,qCAAqC,GAC7C,OAAO,CAAC,SAAS,CAAC,CAAA"}
|