apcore-mcp 0.3.0 → 0.4.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/dist/adapters/annotations.d.ts +6 -2
- package/dist/adapters/annotations.d.ts.map +1 -1
- package/dist/adapters/annotations.js +27 -9
- package/dist/adapters/annotations.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +11 -5
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +33 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +88 -19
- package/dist/index.js.map +1 -1
- package/dist/server/factory.d.ts +12 -0
- package/dist/server/factory.d.ts.map +1 -1
- package/dist/server/factory.js +73 -9
- package/dist/server/factory.js.map +1 -1
- package/dist/server/router.d.ts +7 -1
- package/dist/server/router.d.ts.map +1 -1
- package/dist/server/router.js +65 -5
- package/dist/server/router.js.map +1 -1
- package/dist/server/transport.d.ts +37 -0
- package/dist/server/transport.d.ts.map +1 -1
- package/dist/server/transport.js +73 -0
- package/dist/server/transport.js.map +1 -1
- package/dist/types.d.ts +4 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +19 -2
|
@@ -21,10 +21,14 @@ export declare class AnnotationMapper {
|
|
|
21
21
|
/**
|
|
22
22
|
* Generate a description suffix string from annotations.
|
|
23
23
|
*
|
|
24
|
+
* Only includes annotation fields that differ from their default values:
|
|
25
|
+
* readonly=false, destructive=false, idempotent=false,
|
|
26
|
+
* requires_approval=false, open_world=true
|
|
27
|
+
*
|
|
24
28
|
* Returns a formatted string like:
|
|
25
|
-
* `\n\n[Annotations: readonly=true,
|
|
29
|
+
* `\n\n[Annotations: readonly=true, idempotent=true]`
|
|
26
30
|
*
|
|
27
|
-
* Returns an empty string if annotations are null.
|
|
31
|
+
* Returns an empty string if annotations are null or all fields are defaults.
|
|
28
32
|
*/
|
|
29
33
|
toDescriptionSuffix(annotations: ModuleAnnotations | null): string;
|
|
30
34
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../../src/adapters/annotations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEzE,qBAAa,gBAAgB;IAC3B;;;;;;;;;OASG;IACH,gBAAgB,CAAC,WAAW,EAAE,iBAAiB,GAAG,IAAI,GAAG,kBAAkB;IAoB3E
|
|
1
|
+
{"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../../src/adapters/annotations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEzE,qBAAa,gBAAgB;IAC3B;;;;;;;;;OASG;IACH,gBAAgB,CAAC,WAAW,EAAE,iBAAiB,GAAG,IAAI,GAAG,kBAAkB;IAoB3E;;;;;;;;;;;OAWG;IACH,mBAAmB,CAAC,WAAW,EAAE,iBAAiB,GAAG,IAAI,GAAG,MAAM;IAgClE;;;;OAIG;IACH,mBAAmB,CAAC,WAAW,EAAE,iBAAiB,GAAG,IAAI,GAAG,OAAO;CAOpE"}
|
|
@@ -37,22 +37,40 @@ export class AnnotationMapper {
|
|
|
37
37
|
/**
|
|
38
38
|
* Generate a description suffix string from annotations.
|
|
39
39
|
*
|
|
40
|
+
* Only includes annotation fields that differ from their default values:
|
|
41
|
+
* readonly=false, destructive=false, idempotent=false,
|
|
42
|
+
* requires_approval=false, open_world=true
|
|
43
|
+
*
|
|
40
44
|
* Returns a formatted string like:
|
|
41
|
-
* `\n\n[Annotations: readonly=true,
|
|
45
|
+
* `\n\n[Annotations: readonly=true, idempotent=true]`
|
|
42
46
|
*
|
|
43
|
-
* Returns an empty string if annotations are null.
|
|
47
|
+
* Returns an empty string if annotations are null or all fields are defaults.
|
|
44
48
|
*/
|
|
45
49
|
toDescriptionSuffix(annotations) {
|
|
46
50
|
if (annotations === null) {
|
|
47
51
|
return "";
|
|
48
52
|
}
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
const DEFAULTS = {
|
|
54
|
+
readonly: false,
|
|
55
|
+
destructive: false,
|
|
56
|
+
idempotent: false,
|
|
57
|
+
requires_approval: false,
|
|
58
|
+
open_world: true,
|
|
59
|
+
};
|
|
60
|
+
const parts = [];
|
|
61
|
+
if (annotations.readonly !== DEFAULTS.readonly)
|
|
62
|
+
parts.push(`readonly=${annotations.readonly}`);
|
|
63
|
+
if (annotations.destructive !== DEFAULTS.destructive)
|
|
64
|
+
parts.push(`destructive=${annotations.destructive}`);
|
|
65
|
+
if (annotations.idempotent !== DEFAULTS.idempotent)
|
|
66
|
+
parts.push(`idempotent=${annotations.idempotent}`);
|
|
67
|
+
if (annotations.requiresApproval !== DEFAULTS.requires_approval)
|
|
68
|
+
parts.push(`requires_approval=${annotations.requiresApproval}`);
|
|
69
|
+
if (annotations.openWorld !== DEFAULTS.open_world)
|
|
70
|
+
parts.push(`open_world=${annotations.openWorld}`);
|
|
71
|
+
if (parts.length === 0) {
|
|
72
|
+
return "";
|
|
73
|
+
}
|
|
56
74
|
return `\n\n[Annotations: ${parts.join(", ")}]`;
|
|
57
75
|
}
|
|
58
76
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../src/adapters/annotations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,OAAO,gBAAgB;IAC3B;;;;;;;;;OASG;IACH,gBAAgB,CAAC,WAAqC;QACpD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO;gBACL,YAAY,EAAE,KAAK;gBACnB,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,KAAK;gBACrB,aAAa,EAAE,IAAI;gBACnB,KAAK,EAAE,IAAI;aACZ,CAAC;QACJ,CAAC;QAED,OAAO;YACL,YAAY,EAAE,WAAW,CAAC,QAAQ;YAClC,eAAe,EAAE,WAAW,CAAC,WAAW;YACxC,cAAc,EAAE,WAAW,CAAC,UAAU;YACtC,aAAa,EAAE,WAAW,CAAC,SAAS;YACpC,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../src/adapters/annotations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,OAAO,gBAAgB;IAC3B;;;;;;;;;OASG;IACH,gBAAgB,CAAC,WAAqC;QACpD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO;gBACL,YAAY,EAAE,KAAK;gBACnB,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,KAAK;gBACrB,aAAa,EAAE,IAAI;gBACnB,KAAK,EAAE,IAAI;aACZ,CAAC;QACJ,CAAC;QAED,OAAO;YACL,YAAY,EAAE,WAAW,CAAC,QAAQ;YAClC,eAAe,EAAE,WAAW,CAAC,WAAW;YACxC,cAAc,EAAE,WAAW,CAAC,UAAU;YACtC,aAAa,EAAE,WAAW,CAAC,SAAS;YACpC,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;OAWG;IACH,mBAAmB,CAAC,WAAqC;QACvD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,QAAQ,GAA4B;YACxC,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,KAAK;YAClB,UAAU,EAAE,KAAK;YACjB,iBAAiB,EAAE,KAAK;YACxB,UAAU,EAAE,IAAI;SACjB,CAAC;QAEF,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,WAAW,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ;YAC5C,KAAK,CAAC,IAAI,CAAC,YAAY,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjD,IAAI,WAAW,CAAC,WAAW,KAAK,QAAQ,CAAC,WAAW;YAClD,KAAK,CAAC,IAAI,CAAC,eAAe,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;QACvD,IAAI,WAAW,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU;YAChD,KAAK,CAAC,IAAI,CAAC,cAAc,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;QACrD,IAAI,WAAW,CAAC,gBAAgB,KAAK,QAAQ,CAAC,iBAAiB;YAC7D,KAAK,CAAC,IAAI,CAAC,qBAAqB,WAAW,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAClE,IAAI,WAAW,CAAC,SAAS,KAAK,QAAQ,CAAC,UAAU;YAC/C,KAAK,CAAC,IAAI,CAAC,cAAc,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC;QAEpD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,qBAAqB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAClD,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,WAAqC;QACvD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,WAAW,CAAC,gBAAgB,CAAC;IACtC,CAAC;CACF"}
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AAiCH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AAiCH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA4G1C"}
|
package/dist/cli.js
CHANGED
|
@@ -93,22 +93,27 @@ export async function main() {
|
|
|
93
93
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
94
94
|
let Registry;
|
|
95
95
|
try {
|
|
96
|
-
|
|
97
|
-
const apcore = await import("apcore");
|
|
96
|
+
const apcore = await import("apcore-js");
|
|
98
97
|
Registry = apcore.Registry;
|
|
99
98
|
}
|
|
100
99
|
catch {
|
|
101
|
-
fail("Failed to import 'apcore' package. Install it with: npm install apcore");
|
|
100
|
+
fail("Failed to import 'apcore-js' package. Install it with: npm install apcore-js");
|
|
102
101
|
}
|
|
103
102
|
// Create Registry and discover modules
|
|
104
|
-
const registry = new Registry({
|
|
105
|
-
const numModules = registry.discover();
|
|
103
|
+
const registry = new Registry({ extensionsDir: resolvedDir });
|
|
104
|
+
const numModules = await registry.discover();
|
|
106
105
|
if (numModules === 0) {
|
|
107
106
|
console.warn(`Warning: No modules discovered in '${extensionsDir}'.`);
|
|
108
107
|
}
|
|
109
108
|
else {
|
|
110
109
|
console.info(`Discovered ${numModules} module(s) in '${extensionsDir}'.`);
|
|
111
110
|
}
|
|
111
|
+
// Validate log-level
|
|
112
|
+
const logLevel = values["log-level"];
|
|
113
|
+
const validLogLevels = ["DEBUG", "INFO", "WARNING", "ERROR"];
|
|
114
|
+
if (logLevel && !validLogLevels.includes(logLevel)) {
|
|
115
|
+
fail(`--log-level must be one of: ${validLogLevels.join(", ")}. Got '${logLevel}'.`);
|
|
116
|
+
}
|
|
112
117
|
// Launch the MCP server
|
|
113
118
|
try {
|
|
114
119
|
await serve(registry, {
|
|
@@ -117,6 +122,7 @@ export async function main() {
|
|
|
117
122
|
port,
|
|
118
123
|
name,
|
|
119
124
|
version: values.version ?? undefined,
|
|
125
|
+
logLevel: logLevel,
|
|
120
126
|
});
|
|
121
127
|
}
|
|
122
128
|
catch (error) {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
* - toOpenaiTools(registryOrExecutor, options?) - Export OpenAI tool definitions
|
|
7
7
|
*/
|
|
8
8
|
import type { ConvertRegistryOptions } from "./converters/openai.js";
|
|
9
|
-
import type {
|
|
9
|
+
import type { MetricsExporter } from "./server/transport.js";
|
|
10
|
+
import type { RegistryOrExecutor, Registry, Executor, OpenAIToolDef } from "./types.js";
|
|
10
11
|
export declare const VERSION: string;
|
|
11
12
|
export type { Registry, Executor, RegistryOrExecutor, OpenAIToolDef } from "./types.js";
|
|
12
13
|
export type { ModuleDescriptor, ModuleAnnotations, JsonSchema, ModuleError, McpAnnotationsDict, McpErrorResponse, TextContentDict, } from "./types.js";
|
|
@@ -17,9 +18,10 @@ export { createBridgeContext } from "./server/context.js";
|
|
|
17
18
|
export type { BridgeContext } from "./server/context.js";
|
|
18
19
|
export { MCPServerFactory } from "./server/factory.js";
|
|
19
20
|
export { ExecutionRouter } from "./server/router.js";
|
|
20
|
-
export type { CallResult, HandleCallExtra } from "./server/router.js";
|
|
21
|
+
export type { CallResult, HandleCallExtra, ExecutionRouterOptions } from "./server/router.js";
|
|
21
22
|
export { RegistryListener } from "./server/listener.js";
|
|
22
23
|
export { TransportManager } from "./server/transport.js";
|
|
24
|
+
export type { MetricsExporter } from "./server/transport.js";
|
|
23
25
|
export { AnnotationMapper } from "./adapters/annotations.js";
|
|
24
26
|
export { SchemaConverter } from "./adapters/schema.js";
|
|
25
27
|
export { ErrorMapper } from "./adapters/errors.js";
|
|
@@ -27,6 +29,23 @@ export { ModuleIDNormalizer } from "./adapters/idNormalizer.js";
|
|
|
27
29
|
export { OpenAIConverter } from "./converters/openai.js";
|
|
28
30
|
export type { ConvertOptions, ConvertRegistryOptions } from "./converters/openai.js";
|
|
29
31
|
export type { BuildToolsOptions } from "./server/factory.js";
|
|
32
|
+
/**
|
|
33
|
+
* Extract Registry from either a Registry or Executor instance.
|
|
34
|
+
*
|
|
35
|
+
* If the argument has a `registry` property (i.e. it's an Executor),
|
|
36
|
+
* returns that property. Otherwise assumes it's a Registry and returns it directly.
|
|
37
|
+
*/
|
|
38
|
+
export declare function resolveRegistry(registryOrExecutor: RegistryOrExecutor): Registry;
|
|
39
|
+
/**
|
|
40
|
+
* Get or create an Executor from either a Registry or Executor instance.
|
|
41
|
+
*
|
|
42
|
+
* If the argument already has `call` or `callAsync`, returns it directly.
|
|
43
|
+
* If a bare Registry is passed, attempts to dynamically import the Executor
|
|
44
|
+
* from apcore-js and create a default instance (matching Python's resolve_executor).
|
|
45
|
+
*
|
|
46
|
+
* @throws {Error} If the argument is a Registry and apcore-js is not installed.
|
|
47
|
+
*/
|
|
48
|
+
export declare function resolveExecutor(registryOrExecutor: RegistryOrExecutor): Executor;
|
|
30
49
|
/** Options for serve() */
|
|
31
50
|
export interface ServeOptions {
|
|
32
51
|
/** Transport type. Default: "stdio" */
|
|
@@ -43,6 +62,18 @@ export interface ServeOptions {
|
|
|
43
62
|
dynamic?: boolean;
|
|
44
63
|
/** Enable input validation against schemas. Default: false */
|
|
45
64
|
validateInputs?: boolean;
|
|
65
|
+
/** Filter modules by tags. Default: null (no filtering) */
|
|
66
|
+
tags?: string[] | null;
|
|
67
|
+
/** Filter modules by prefix. Default: null (no filtering) */
|
|
68
|
+
prefix?: string | null;
|
|
69
|
+
/** Minimum log level. Suppresses console methods below this level. Default: undefined (no suppression) */
|
|
70
|
+
logLevel?: "DEBUG" | "INFO" | "WARNING" | "ERROR" | "CRITICAL";
|
|
71
|
+
/** Callback invoked before the server starts. */
|
|
72
|
+
onStartup?: () => void | Promise<void>;
|
|
73
|
+
/** Callback invoked after the server stops (or on error). */
|
|
74
|
+
onShutdown?: () => void | Promise<void>;
|
|
75
|
+
/** Optional MetricsCollector for Prometheus /metrics endpoint. */
|
|
76
|
+
metricsCollector?: MetricsExporter;
|
|
46
77
|
}
|
|
47
78
|
/**
|
|
48
79
|
* Launch an MCP Server that exposes all apcore modules as tools.
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAIrE,OAAO,KAAK,EACV,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -29,8 +29,11 @@ export { ModuleIDNormalizer } from "./adapters/idNormalizer.js";
|
|
|
29
29
|
export { OpenAIConverter } from "./converters/openai.js";
|
|
30
30
|
/**
|
|
31
31
|
* Extract Registry from either a Registry or Executor instance.
|
|
32
|
+
*
|
|
33
|
+
* If the argument has a `registry` property (i.e. it's an Executor),
|
|
34
|
+
* returns that property. Otherwise assumes it's a Registry and returns it directly.
|
|
32
35
|
*/
|
|
33
|
-
function resolveRegistry(registryOrExecutor) {
|
|
36
|
+
export function resolveRegistry(registryOrExecutor) {
|
|
34
37
|
if ("registry" in registryOrExecutor) {
|
|
35
38
|
// It's an Executor — get its registry
|
|
36
39
|
return registryOrExecutor.registry;
|
|
@@ -40,16 +43,31 @@ function resolveRegistry(registryOrExecutor) {
|
|
|
40
43
|
}
|
|
41
44
|
/**
|
|
42
45
|
* Get or create an Executor from either a Registry or Executor instance.
|
|
46
|
+
*
|
|
47
|
+
* If the argument already has `call` or `callAsync`, returns it directly.
|
|
48
|
+
* If a bare Registry is passed, attempts to dynamically import the Executor
|
|
49
|
+
* from apcore-js and create a default instance (matching Python's resolve_executor).
|
|
50
|
+
*
|
|
51
|
+
* @throws {Error} If the argument is a Registry and apcore-js is not installed.
|
|
43
52
|
*/
|
|
44
|
-
function resolveExecutor(registryOrExecutor) {
|
|
53
|
+
export function resolveExecutor(registryOrExecutor) {
|
|
45
54
|
if ("call" in registryOrExecutor || "callAsync" in registryOrExecutor) {
|
|
46
55
|
// Already an Executor
|
|
47
56
|
return registryOrExecutor;
|
|
48
57
|
}
|
|
49
|
-
// It's a Registry —
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
58
|
+
// It's a bare Registry — create a default Executor
|
|
59
|
+
try {
|
|
60
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
61
|
+
const apcore = require("apcore-js");
|
|
62
|
+
const ExecutorClass = apcore.Executor ?? apcore.default?.Executor;
|
|
63
|
+
if (ExecutorClass) {
|
|
64
|
+
return new ExecutorClass({ registry: registryOrExecutor });
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
// apcore-js not installed — fall through to error
|
|
69
|
+
}
|
|
70
|
+
throw new Error("serve() requires an Executor instance, or apcore-js must be installed to auto-create one from a Registry.");
|
|
53
71
|
}
|
|
54
72
|
/**
|
|
55
73
|
* Launch an MCP Server that exposes all apcore modules as tools.
|
|
@@ -58,29 +76,80 @@ function resolveExecutor(registryOrExecutor) {
|
|
|
58
76
|
* @param options - Server configuration options.
|
|
59
77
|
*/
|
|
60
78
|
export async function serve(registryOrExecutor, options = {}) {
|
|
61
|
-
const { transport = "stdio", host = "127.0.0.1", port = 8000, name = "apcore-mcp", version = VERSION, } = options;
|
|
79
|
+
const { transport = "stdio", host = "127.0.0.1", port = 8000, name = "apcore-mcp", version = VERSION, validateInputs, tags, prefix, logLevel, onStartup, onShutdown, metricsCollector, } = options;
|
|
80
|
+
// Input validation (matching Python's checks)
|
|
81
|
+
if (!name || name.length === 0) {
|
|
82
|
+
throw new Error("name must not be empty");
|
|
83
|
+
}
|
|
84
|
+
if (name.length > 255) {
|
|
85
|
+
throw new Error("name must not exceed 255 characters");
|
|
86
|
+
}
|
|
87
|
+
if (tags) {
|
|
88
|
+
for (const tag of tags) {
|
|
89
|
+
if (!tag || tag.length === 0) {
|
|
90
|
+
throw new Error("tags must not contain empty strings");
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (prefix !== undefined && prefix !== null && prefix.length === 0) {
|
|
95
|
+
throw new Error("prefix must not be empty if provided");
|
|
96
|
+
}
|
|
97
|
+
// Save original console methods before suppression
|
|
98
|
+
const origDebug = console.debug;
|
|
99
|
+
const origInfo = console.info;
|
|
100
|
+
const origWarn = console.warn;
|
|
101
|
+
const origError = console.error;
|
|
102
|
+
// Apply log-level suppression
|
|
103
|
+
if (logLevel) {
|
|
104
|
+
const levels = ["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"];
|
|
105
|
+
const minLevel = levels.indexOf(logLevel);
|
|
106
|
+
if (minLevel > 0)
|
|
107
|
+
console.debug = () => { };
|
|
108
|
+
if (minLevel > 1)
|
|
109
|
+
console.info = () => { };
|
|
110
|
+
if (minLevel > 2)
|
|
111
|
+
console.warn = () => { };
|
|
112
|
+
if (minLevel > 3)
|
|
113
|
+
console.error = () => { };
|
|
114
|
+
}
|
|
62
115
|
const registry = resolveRegistry(registryOrExecutor);
|
|
63
116
|
const executor = resolveExecutor(registryOrExecutor);
|
|
64
117
|
// Build MCP server components
|
|
65
118
|
const factory = new MCPServerFactory();
|
|
66
119
|
const server = factory.createServer(name, version);
|
|
67
|
-
const tools = factory.buildTools(registry);
|
|
68
|
-
const router = new ExecutionRouter(executor);
|
|
120
|
+
const tools = factory.buildTools(registry, { tags, prefix });
|
|
121
|
+
const router = new ExecutionRouter(executor, { validateInputs });
|
|
69
122
|
factory.registerHandlers(server, tools, router);
|
|
70
|
-
|
|
123
|
+
factory.registerResourceHandlers(server, registry);
|
|
124
|
+
origInfo(`Starting MCP server '${name}' v${version} with ${tools.length} tools via ${transport}`);
|
|
125
|
+
// Invoke startup callback
|
|
126
|
+
await onStartup?.();
|
|
71
127
|
// Select and run transport
|
|
72
128
|
const transportManager = new TransportManager();
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
else if (transport === "streamable-http") {
|
|
77
|
-
await transportManager.runStreamableHttp(server, { host, port });
|
|
129
|
+
transportManager.setModuleCount(tools.length);
|
|
130
|
+
if (metricsCollector) {
|
|
131
|
+
transportManager.setMetricsCollector(metricsCollector);
|
|
78
132
|
}
|
|
79
|
-
|
|
80
|
-
|
|
133
|
+
try {
|
|
134
|
+
if (transport === "stdio") {
|
|
135
|
+
await transportManager.runStdio(server);
|
|
136
|
+
}
|
|
137
|
+
else if (transport === "streamable-http") {
|
|
138
|
+
await transportManager.runStreamableHttp(server, { host, port });
|
|
139
|
+
}
|
|
140
|
+
else if (transport === "sse") {
|
|
141
|
+
await transportManager.runSse(server, { host, port });
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
throw new Error(`Unknown transport: '${transport}'. Expected 'stdio', 'streamable-http', or 'sse'.`);
|
|
145
|
+
}
|
|
81
146
|
}
|
|
82
|
-
|
|
83
|
-
|
|
147
|
+
finally {
|
|
148
|
+
console.debug = origDebug;
|
|
149
|
+
console.info = origInfo;
|
|
150
|
+
console.warn = origWarn;
|
|
151
|
+
console.error = origError;
|
|
152
|
+
await onShutdown?.();
|
|
84
153
|
}
|
|
85
154
|
}
|
|
86
155
|
/**
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/server/factory.d.ts
CHANGED
|
@@ -44,6 +44,18 @@ export declare class MCPServerFactory {
|
|
|
44
44
|
* Skips modules that return null definitions or throw errors (with console.warn).
|
|
45
45
|
*/
|
|
46
46
|
buildTools(registry: Registry, options?: BuildToolsOptions): Tool[];
|
|
47
|
+
/**
|
|
48
|
+
* Register resources/list and resources/read handlers for modules with documentation.
|
|
49
|
+
*
|
|
50
|
+
* Iterates over registry.list(), gets each definition, and filters for
|
|
51
|
+
* descriptors that have a non-null `documentation` field. Registers:
|
|
52
|
+
* - resources/list: returns Resource objects with URI docs://{module_id}
|
|
53
|
+
* - resources/read: returns documentation text for the requested module
|
|
54
|
+
*
|
|
55
|
+
* @param server - The MCP Server to register handlers on
|
|
56
|
+
* @param registry - Registry to discover modules with documentation
|
|
57
|
+
*/
|
|
58
|
+
registerResourceHandlers(server: Server, registry: Registry): void;
|
|
47
59
|
/**
|
|
48
60
|
* Register tools/list and tools/call request handlers on a Server instance.
|
|
49
61
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/server/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/server/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAOnE,OAAO,KAAK,EACV,IAAI,EAIL,MAAM,oCAAoC,CAAC;AAI5C,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD,iEAAiE;AACjE,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IACnD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;;IAOrD;;;;;;OAMG;IACH,YAAY,CACV,IAAI,GAAE,MAAqB,EAC3B,OAAO,GAAE,MAAgB,GACxB,MAAM;IAOT;;;;;;;;OAQG;IACH,SAAS,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI;IA+C7C;;;;;OAKG;IACH,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,IAAI,EAAE;IA2BnE;;;;;;;;;;OAUG;IACH,wBAAwB,CACtB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GACjB,IAAI;IAsDP;;;;;;OAMG;IACH,gBAAgB,CACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,IAAI,EAAE,EACb,MAAM,EAAE,eAAe,GACtB,IAAI;CA0CR"}
|
package/dist/server/factory.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* - Registering tools/list and tools/call request handlers
|
|
8
8
|
*/
|
|
9
9
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
10
|
-
import { ListToolsRequestSchema, CallToolRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
10
|
+
import { ListToolsRequestSchema, CallToolRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
11
11
|
import { SchemaConverter } from "../adapters/schema.js";
|
|
12
12
|
import { AnnotationMapper } from "../adapters/annotations.js";
|
|
13
13
|
export class MCPServerFactory {
|
|
@@ -25,7 +25,7 @@ export class MCPServerFactory {
|
|
|
25
25
|
* @returns A configured Server instance with tools capability
|
|
26
26
|
*/
|
|
27
27
|
createServer(name = "apcore-mcp", version = "0.1.0") {
|
|
28
|
-
return new Server({ name, version }, { capabilities: { tools: {} } });
|
|
28
|
+
return new Server({ name, version }, { capabilities: { tools: {}, resources: {} } });
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
31
|
* Build an MCP Tool object from an apcore module descriptor.
|
|
@@ -40,9 +40,12 @@ export class MCPServerFactory {
|
|
|
40
40
|
if (!descriptor.moduleId || typeof descriptor.moduleId !== "string") {
|
|
41
41
|
throw new Error("ModuleDescriptor.moduleId is required and must be a string");
|
|
42
42
|
}
|
|
43
|
-
if (
|
|
44
|
-
throw new Error("ModuleDescriptor.description
|
|
43
|
+
if (descriptor.description !== undefined && descriptor.description !== null && typeof descriptor.description !== "string") {
|
|
44
|
+
throw new Error("ModuleDescriptor.description must be a string");
|
|
45
45
|
}
|
|
46
|
+
// NOTE: TypeScript uses AnnotationMapper.toMcpAnnotations() directly,
|
|
47
|
+
// while Python uses SchemaExporter.export_mcp() for the same mapping.
|
|
48
|
+
// Both produce identical output. If annotation logic changes, update both paths.
|
|
46
49
|
const mcpAnnotations = this._annotationMapper.toMcpAnnotations(descriptor.annotations);
|
|
47
50
|
const convertedSchema = this._schemaConverter.convertInputSchema(descriptor);
|
|
48
51
|
const hasApproval = this._annotationMapper.hasRequiresApproval(descriptor.annotations);
|
|
@@ -97,6 +100,68 @@ export class MCPServerFactory {
|
|
|
97
100
|
}
|
|
98
101
|
return tools;
|
|
99
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Register resources/list and resources/read handlers for modules with documentation.
|
|
105
|
+
*
|
|
106
|
+
* Iterates over registry.list(), gets each definition, and filters for
|
|
107
|
+
* descriptors that have a non-null `documentation` field. Registers:
|
|
108
|
+
* - resources/list: returns Resource objects with URI docs://{module_id}
|
|
109
|
+
* - resources/read: returns documentation text for the requested module
|
|
110
|
+
*
|
|
111
|
+
* @param server - The MCP Server to register handlers on
|
|
112
|
+
* @param registry - Registry to discover modules with documentation
|
|
113
|
+
*/
|
|
114
|
+
registerResourceHandlers(server, registry) {
|
|
115
|
+
// Build a map of module_id -> documentation for modules with docs
|
|
116
|
+
const docsMap = new Map();
|
|
117
|
+
const moduleIds = registry.list();
|
|
118
|
+
for (const moduleId of moduleIds) {
|
|
119
|
+
try {
|
|
120
|
+
const descriptor = registry.getDefinition(moduleId);
|
|
121
|
+
if (descriptor?.documentation) {
|
|
122
|
+
docsMap.set(moduleId, descriptor.documentation);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
// Skip modules that throw errors
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// Handle resources/list requests
|
|
130
|
+
server.setRequestHandler(ListResourcesRequestSchema, async () => {
|
|
131
|
+
const resources = [];
|
|
132
|
+
for (const [moduleId, _doc] of docsMap) {
|
|
133
|
+
resources.push({
|
|
134
|
+
uri: `docs://${moduleId}`,
|
|
135
|
+
name: `${moduleId} documentation`,
|
|
136
|
+
mimeType: "text/plain",
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
return { resources };
|
|
140
|
+
});
|
|
141
|
+
// Handle resources/read requests
|
|
142
|
+
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
|
|
143
|
+
const uri = request.params.uri;
|
|
144
|
+
const prefix = "docs://";
|
|
145
|
+
if (!uri.startsWith(prefix)) {
|
|
146
|
+
throw new Error(`Unsupported URI scheme: ${uri}`);
|
|
147
|
+
}
|
|
148
|
+
const moduleId = uri.slice(prefix.length);
|
|
149
|
+
const documentation = docsMap.get(moduleId);
|
|
150
|
+
if (documentation === undefined) {
|
|
151
|
+
throw new Error(`Resource not found: ${uri}`);
|
|
152
|
+
}
|
|
153
|
+
const result = {
|
|
154
|
+
contents: [
|
|
155
|
+
{
|
|
156
|
+
uri,
|
|
157
|
+
text: documentation,
|
|
158
|
+
mimeType: "text/plain",
|
|
159
|
+
},
|
|
160
|
+
],
|
|
161
|
+
};
|
|
162
|
+
return result;
|
|
163
|
+
});
|
|
164
|
+
}
|
|
100
165
|
/**
|
|
101
166
|
* Register tools/list and tools/call request handlers on a Server instance.
|
|
102
167
|
*
|
|
@@ -126,12 +191,11 @@ export class MCPServerFactory {
|
|
|
126
191
|
: undefined,
|
|
127
192
|
};
|
|
128
193
|
const [content, isError] = await router.handleCall(name, toolArgs, handleCallExtra);
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
}
|
|
194
|
+
// Return tool errors as MCP CallToolResult with isError flag
|
|
195
|
+
// rather than throwing protocol-level errors
|
|
132
196
|
const result = {
|
|
133
|
-
content: content,
|
|
134
|
-
isError
|
|
197
|
+
content: content.map(c => ({ type: "text", text: c.text })),
|
|
198
|
+
isError,
|
|
135
199
|
};
|
|
136
200
|
return result;
|
|
137
201
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/server/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EACL,sBAAsB,EACtB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/server/factory.ts"],"names":[],"mappings":"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"}
|
package/dist/server/router.d.ts
CHANGED
|
@@ -26,15 +26,21 @@ export interface HandleCallExtra {
|
|
|
26
26
|
progressToken?: string | number;
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
|
+
/** Options for the ExecutionRouter constructor. */
|
|
30
|
+
export interface ExecutionRouterOptions {
|
|
31
|
+
validateInputs?: boolean;
|
|
32
|
+
}
|
|
29
33
|
export declare class ExecutionRouter {
|
|
30
34
|
private readonly _executor;
|
|
31
35
|
private readonly _errorMapper;
|
|
36
|
+
private readonly _validateInputs;
|
|
32
37
|
/**
|
|
33
38
|
* Create an ExecutionRouter.
|
|
34
39
|
*
|
|
35
40
|
* @param executor - Duck-typed executor with call(moduleId, inputs) or callAsync(moduleId, inputs)
|
|
41
|
+
* @param options - Optional configuration including validateInputs
|
|
36
42
|
*/
|
|
37
|
-
constructor(executor: Executor);
|
|
43
|
+
constructor(executor: Executor, options?: ExecutionRouterOptions);
|
|
38
44
|
/**
|
|
39
45
|
* Handle an MCP tools/call request by routing to the executor.
|
|
40
46
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/server/router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAK7D,uEAAuE;AACvE,MAAM,MAAM,UAAU,GAAG,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,gBAAgB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5F,KAAK,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CAC7C;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/server/router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAK7D,uEAAuE;AACvE,MAAM,MAAM,UAAU,GAAG,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,gBAAgB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5F,KAAK,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CAC7C;AAED,mDAAmD;AACnD,MAAM,WAAW,sBAAsB;IACrC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAE1C;;;;;OAKG;gBACS,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,sBAAsB;IAMhE;;;;;;;;;;;;;;;OAeG;IACG,UAAU,CACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,CAAC,EAAE,eAAe,GACtB,OAAO,CAAC,UAAU,CAAC;CAkLvB"}
|
package/dist/server/router.js
CHANGED
|
@@ -14,14 +14,17 @@ import { MCP_PROGRESS_KEY, MCP_ELICIT_KEY } from "../helpers.js";
|
|
|
14
14
|
export class ExecutionRouter {
|
|
15
15
|
_executor;
|
|
16
16
|
_errorMapper;
|
|
17
|
+
_validateInputs;
|
|
17
18
|
/**
|
|
18
19
|
* Create an ExecutionRouter.
|
|
19
20
|
*
|
|
20
21
|
* @param executor - Duck-typed executor with call(moduleId, inputs) or callAsync(moduleId, inputs)
|
|
22
|
+
* @param options - Optional configuration including validateInputs
|
|
21
23
|
*/
|
|
22
|
-
constructor(executor) {
|
|
24
|
+
constructor(executor, options) {
|
|
23
25
|
this._executor = executor;
|
|
24
26
|
this._errorMapper = new ErrorMapper();
|
|
27
|
+
this._validateInputs = options?.validateInputs ?? false;
|
|
25
28
|
}
|
|
26
29
|
/**
|
|
27
30
|
* Handle an MCP tools/call request by routing to the executor.
|
|
@@ -79,6 +82,48 @@ export class ExecutionRouter {
|
|
|
79
82
|
const context = hasCallbacks
|
|
80
83
|
? createBridgeContext(contextData)
|
|
81
84
|
: undefined;
|
|
85
|
+
// ── Pre-execution validation ────────────────────────────────────
|
|
86
|
+
if (this._validateInputs && this._executor.validate) {
|
|
87
|
+
try {
|
|
88
|
+
const rawErrors = await this._executor.validate(toolName, args);
|
|
89
|
+
let errorMessages = [];
|
|
90
|
+
if (Array.isArray(rawErrors)) {
|
|
91
|
+
// Handle both string[] and ValidationResult.errors (array of objects)
|
|
92
|
+
errorMessages = rawErrors.map((e) => {
|
|
93
|
+
if (typeof e === 'string')
|
|
94
|
+
return e;
|
|
95
|
+
if (typeof e === 'object' && e !== null) {
|
|
96
|
+
const obj = e;
|
|
97
|
+
const field = obj.field ?? obj.path ?? '?';
|
|
98
|
+
const msg = obj.message ?? 'invalid';
|
|
99
|
+
return `${field}: ${msg}`;
|
|
100
|
+
}
|
|
101
|
+
return String(e);
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
else if (rawErrors && typeof rawErrors === 'object' && 'valid' in rawErrors) {
|
|
105
|
+
// Handle ValidationResult object
|
|
106
|
+
const vr = rawErrors;
|
|
107
|
+
if (!vr.valid) {
|
|
108
|
+
errorMessages = vr.errors.map(e => `${e.field ?? '?'}: ${e.message ?? 'invalid'}`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (errorMessages.length > 0) {
|
|
112
|
+
const detail = errorMessages.join("; ");
|
|
113
|
+
const content = [
|
|
114
|
+
{ type: "text", text: `Validation failed: ${detail}` },
|
|
115
|
+
];
|
|
116
|
+
return [content, true];
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
catch (valError) {
|
|
120
|
+
const errorInfo = this._errorMapper.toMcpError(valError);
|
|
121
|
+
const content = [
|
|
122
|
+
{ type: "text", text: errorInfo.message },
|
|
123
|
+
];
|
|
124
|
+
return [content, true];
|
|
125
|
+
}
|
|
126
|
+
}
|
|
82
127
|
// ── Streaming path ────────────────────────────────────────────────
|
|
83
128
|
if (this._executor.stream &&
|
|
84
129
|
progressToken !== undefined &&
|
|
@@ -93,7 +138,7 @@ export class ExecutionRouter {
|
|
|
93
138
|
method: "notifications/progress",
|
|
94
139
|
params: {
|
|
95
140
|
progressToken,
|
|
96
|
-
progress: chunkIndex,
|
|
141
|
+
progress: chunkIndex + 1,
|
|
97
142
|
message: JSON.stringify(chunk),
|
|
98
143
|
},
|
|
99
144
|
});
|
|
@@ -105,14 +150,22 @@ export class ExecutionRouter {
|
|
|
105
150
|
text: JSON.stringify(accumulated),
|
|
106
151
|
},
|
|
107
152
|
];
|
|
153
|
+
if (context) {
|
|
154
|
+
content.push({
|
|
155
|
+
type: "text",
|
|
156
|
+
text: JSON.stringify({ _trace_id: context.traceId }),
|
|
157
|
+
});
|
|
158
|
+
}
|
|
108
159
|
return [content, false];
|
|
109
160
|
}
|
|
110
161
|
// ── Non-streaming path ────────────────────────────────────────────
|
|
111
|
-
const callFn = this._executor.call
|
|
162
|
+
const callFn = typeof this._executor.call === 'function'
|
|
112
163
|
? this._executor.call.bind(this._executor)
|
|
113
|
-
: this._executor.callAsync
|
|
164
|
+
: typeof this._executor.callAsync === 'function'
|
|
165
|
+
? this._executor.callAsync.bind(this._executor)
|
|
166
|
+
: null;
|
|
114
167
|
if (!callFn) {
|
|
115
|
-
throw new Error(
|
|
168
|
+
throw new Error('Executor must implement call() or callAsync()');
|
|
116
169
|
}
|
|
117
170
|
const result = await callFn(toolName, args, context);
|
|
118
171
|
const content = [
|
|
@@ -121,9 +174,16 @@ export class ExecutionRouter {
|
|
|
121
174
|
text: JSON.stringify(result),
|
|
122
175
|
},
|
|
123
176
|
];
|
|
177
|
+
if (context) {
|
|
178
|
+
content.push({
|
|
179
|
+
type: "text",
|
|
180
|
+
text: JSON.stringify({ _trace_id: context.traceId }),
|
|
181
|
+
});
|
|
182
|
+
}
|
|
124
183
|
return [content, false];
|
|
125
184
|
}
|
|
126
185
|
catch (error) {
|
|
186
|
+
console.error(`handleCall error for ${toolName}:`, error);
|
|
127
187
|
const errorInfo = this._errorMapper.toMcpError(error);
|
|
128
188
|
const content = [
|
|
129
189
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/server/router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/server/router.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,9 +14,46 @@ export interface HttpTransportOptions {
|
|
|
14
14
|
port: number;
|
|
15
15
|
endpoint?: string;
|
|
16
16
|
}
|
|
17
|
+
/** Duck-typed interface for a metrics collector that can export Prometheus text. */
|
|
18
|
+
export interface MetricsExporter {
|
|
19
|
+
exportPrometheus(): string;
|
|
20
|
+
}
|
|
17
21
|
export declare class TransportManager {
|
|
18
22
|
/** The underlying HTTP server, if an HTTP-based transport is active. */
|
|
19
23
|
httpServer?: HttpServer;
|
|
24
|
+
/** Timestamp (ms) when this manager was created, used for uptime calculation. */
|
|
25
|
+
private _startTime;
|
|
26
|
+
/** Number of registered modules/tools. */
|
|
27
|
+
private _moduleCount;
|
|
28
|
+
/** Optional metrics collector for Prometheus /metrics endpoint. */
|
|
29
|
+
private _metricsCollector?;
|
|
30
|
+
/**
|
|
31
|
+
* Set the number of registered modules/tools.
|
|
32
|
+
*
|
|
33
|
+
* @param count - The number of modules
|
|
34
|
+
*/
|
|
35
|
+
setModuleCount(count: number): void;
|
|
36
|
+
/**
|
|
37
|
+
* Set the metrics collector for Prometheus /metrics endpoint.
|
|
38
|
+
*
|
|
39
|
+
* @param collector - A MetricsExporter instance (e.g. MetricsCollector from apcore)
|
|
40
|
+
*/
|
|
41
|
+
setMetricsCollector(collector: MetricsExporter): void;
|
|
42
|
+
/**
|
|
43
|
+
* Build the health check response payload.
|
|
44
|
+
*
|
|
45
|
+
* @returns Health status object with uptime and module count
|
|
46
|
+
*/
|
|
47
|
+
private _buildHealthResponse;
|
|
48
|
+
/**
|
|
49
|
+
* Handle built-in routes (/health and /metrics).
|
|
50
|
+
*
|
|
51
|
+
* @param req - The incoming HTTP request
|
|
52
|
+
* @param res - The server response
|
|
53
|
+
* @param url - The parsed URL
|
|
54
|
+
* @returns true if the request was handled, false otherwise
|
|
55
|
+
*/
|
|
56
|
+
private _handleBuiltinRoute;
|
|
20
57
|
/**
|
|
21
58
|
* Run the server using stdio transport.
|
|
22
59
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/server/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAsC,KAAK,MAAM,IAAI,UAAU,EAAuB,MAAM,WAAW,CAAC;AAC/G,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAKxE,yCAAyC;AACzC,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/server/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAsC,KAAK,MAAM,IAAI,UAAU,EAAuB,MAAM,WAAW,CAAC;AAC/G,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAKxE,yCAAyC;AACzC,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,oFAAoF;AACpF,MAAM,WAAW,eAAe;IAC9B,gBAAgB,IAAI,MAAM,CAAC;CAC5B;AAkDD,qBAAa,gBAAgB;IAC3B,wEAAwE;IACxE,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB,iFAAiF;IACjF,OAAO,CAAC,UAAU,CAAsB;IAExC,0CAA0C;IAC1C,OAAO,CAAC,YAAY,CAAa;IAEjC,mEAAmE;IACnE,OAAO,CAAC,iBAAiB,CAAC,CAAkB;IAE5C;;;;OAIG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAInC;;;;OAIG;IACH,mBAAmB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAIrD;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAQ5B;;;;;;;OAOG;IACH,OAAO,CAAC,mBAAmB;IAyB3B;;;;;;;OAOG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C;;;;;;;;OAQG;IACG,iBAAiB,CACrB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC;IAyDhB;;;;;;;;;OASG;IACG,MAAM,CACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC;IAyEhB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5B;;;;;;OAMG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;CAcpD"}
|
package/dist/server/transport.js
CHANGED
|
@@ -12,6 +12,8 @@ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/
|
|
|
12
12
|
import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js";
|
|
13
13
|
/** Default maximum request body size in bytes (4MB). */
|
|
14
14
|
const DEFAULT_MAX_BODY_BYTES = 4 * 1024 * 1024;
|
|
15
|
+
/** Prometheus exposition format content-type. */
|
|
16
|
+
const PROMETHEUS_CONTENT_TYPE = "text/plain; version=0.0.4; charset=utf-8";
|
|
15
17
|
/** Maximum request body size in bytes. Configurable via APCORE_MAX_BODY_BYTES env var. */
|
|
16
18
|
const MAX_BODY_BYTES = (() => {
|
|
17
19
|
const env = process.env.APCORE_MAX_BODY_BYTES;
|
|
@@ -60,6 +62,73 @@ function readBody(req, maxBytes = MAX_BODY_BYTES) {
|
|
|
60
62
|
export class TransportManager {
|
|
61
63
|
/** The underlying HTTP server, if an HTTP-based transport is active. */
|
|
62
64
|
httpServer;
|
|
65
|
+
/** Timestamp (ms) when this manager was created, used for uptime calculation. */
|
|
66
|
+
_startTime = Date.now();
|
|
67
|
+
/** Number of registered modules/tools. */
|
|
68
|
+
_moduleCount = 0;
|
|
69
|
+
/** Optional metrics collector for Prometheus /metrics endpoint. */
|
|
70
|
+
_metricsCollector;
|
|
71
|
+
/**
|
|
72
|
+
* Set the number of registered modules/tools.
|
|
73
|
+
*
|
|
74
|
+
* @param count - The number of modules
|
|
75
|
+
*/
|
|
76
|
+
setModuleCount(count) {
|
|
77
|
+
this._moduleCount = count;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Set the metrics collector for Prometheus /metrics endpoint.
|
|
81
|
+
*
|
|
82
|
+
* @param collector - A MetricsExporter instance (e.g. MetricsCollector from apcore)
|
|
83
|
+
*/
|
|
84
|
+
setMetricsCollector(collector) {
|
|
85
|
+
this._metricsCollector = collector;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Build the health check response payload.
|
|
89
|
+
*
|
|
90
|
+
* @returns Health status object with uptime and module count
|
|
91
|
+
*/
|
|
92
|
+
_buildHealthResponse() {
|
|
93
|
+
return {
|
|
94
|
+
status: "ok",
|
|
95
|
+
uptime_seconds: Math.round((Date.now() - this._startTime) / 100) / 10,
|
|
96
|
+
module_count: this._moduleCount,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Handle built-in routes (/health and /metrics).
|
|
101
|
+
*
|
|
102
|
+
* @param req - The incoming HTTP request
|
|
103
|
+
* @param res - The server response
|
|
104
|
+
* @param url - The parsed URL
|
|
105
|
+
* @returns true if the request was handled, false otherwise
|
|
106
|
+
*/
|
|
107
|
+
_handleBuiltinRoute(req, res, url) {
|
|
108
|
+
if (url.pathname === "/health" && req.method === "GET") {
|
|
109
|
+
res.writeHead(200, { "Content-Type": "application/json" });
|
|
110
|
+
res.end(JSON.stringify(this._buildHealthResponse()));
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
if (url.pathname === "/metrics" && req.method === "GET") {
|
|
114
|
+
if (!this._metricsCollector) {
|
|
115
|
+
res.writeHead(404);
|
|
116
|
+
res.end();
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
try {
|
|
120
|
+
const body = this._metricsCollector.exportPrometheus();
|
|
121
|
+
res.writeHead(200, { "Content-Type": PROMETHEUS_CONTENT_TYPE });
|
|
122
|
+
res.end(body);
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
res.writeHead(500);
|
|
126
|
+
res.end();
|
|
127
|
+
}
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
63
132
|
/**
|
|
64
133
|
* Run the server using stdio transport.
|
|
65
134
|
*
|
|
@@ -90,6 +159,8 @@ export class TransportManager {
|
|
|
90
159
|
await server.connect(transport);
|
|
91
160
|
const httpServer = createServer(async (req, res) => {
|
|
92
161
|
const url = new URL(req.url ?? "/", `http://${options.host}:${options.port}`);
|
|
162
|
+
if (this._handleBuiltinRoute(req, res, url))
|
|
163
|
+
return;
|
|
93
164
|
if (url.pathname !== endpoint) {
|
|
94
165
|
res.writeHead(404).end("Not Found");
|
|
95
166
|
return;
|
|
@@ -146,6 +217,8 @@ export class TransportManager {
|
|
|
146
217
|
const transports = new Map();
|
|
147
218
|
const httpServer = createServer(async (req, res) => {
|
|
148
219
|
const url = new URL(req.url ?? "/", `http://${options.host}:${options.port}`);
|
|
220
|
+
if (this._handleBuiltinRoute(req, res, url))
|
|
221
|
+
return;
|
|
149
222
|
if (url.pathname === endpoint && req.method === "GET") {
|
|
150
223
|
// Establish SSE connection
|
|
151
224
|
const transport = new SSEServerTransport(messagesEndpoint, res);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/server/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAwE,MAAM,WAAW,CAAC;AAE/G,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/server/transport.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -37,6 +37,7 @@ export interface ModuleAnnotations {
|
|
|
37
37
|
}
|
|
38
38
|
export interface ModuleDescriptor {
|
|
39
39
|
moduleId: string;
|
|
40
|
+
name?: string | null;
|
|
40
41
|
description: string;
|
|
41
42
|
inputSchema: JsonSchema;
|
|
42
43
|
outputSchema: JsonSchema;
|
|
@@ -45,6 +46,7 @@ export interface ModuleDescriptor {
|
|
|
45
46
|
tags?: string[];
|
|
46
47
|
version?: string;
|
|
47
48
|
examples?: unknown[];
|
|
49
|
+
metadata?: Record<string, unknown>;
|
|
48
50
|
}
|
|
49
51
|
export interface Registry {
|
|
50
52
|
list(options?: {
|
|
@@ -54,13 +56,14 @@ export interface Registry {
|
|
|
54
56
|
getDefinition(moduleId: string): ModuleDescriptor | null;
|
|
55
57
|
has?(moduleId: string): boolean;
|
|
56
58
|
on(event: string, callback: (...args: unknown[]) => void): void;
|
|
57
|
-
discover?(): number
|
|
59
|
+
discover?(): Promise<number>;
|
|
58
60
|
}
|
|
59
61
|
export interface Executor {
|
|
60
62
|
registry: Registry;
|
|
61
63
|
call(moduleId: string, inputs: Record<string, unknown>, context?: unknown): Promise<Record<string, unknown>>;
|
|
62
64
|
callAsync?(moduleId: string, inputs: Record<string, unknown>, context?: unknown): Promise<Record<string, unknown>>;
|
|
63
65
|
stream?(moduleId: string, inputs: Record<string, unknown>, context?: unknown): AsyncIterable<Record<string, unknown>>;
|
|
66
|
+
validate?(toolName: string, args: Record<string, unknown>): unknown | Promise<unknown>;
|
|
64
67
|
}
|
|
65
68
|
export interface ModuleError extends Error {
|
|
66
69
|
code: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACjD,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAIrD,qCAAqC;AACrC,eAAO,MAAM,eAAe;;;EAGjB,CAAC;AAEZ,iDAAiD;AACjD,eAAO,MAAM,UAAU;;;;;;;;;;;;EAYZ,CAAC;AAEZ,mDAAmD;AACnD,eAAO,MAAM,iBAAiB,QAA0C,CAAC;AAIzE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,UAAU,CAAC;IACxB,YAAY,EAAE,UAAU,CAAC;IACzB,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "apcore-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Automatic MCP Server & OpenAI Tools Bridge for apcore",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -32,7 +32,16 @@
|
|
|
32
32
|
"openai",
|
|
33
33
|
"tools",
|
|
34
34
|
"function-calling",
|
|
35
|
-
"ai-agent"
|
|
35
|
+
"ai-agent",
|
|
36
|
+
"mcp-server",
|
|
37
|
+
"tool-bridge",
|
|
38
|
+
"agent-tools",
|
|
39
|
+
"schema",
|
|
40
|
+
"json-schema",
|
|
41
|
+
"validation",
|
|
42
|
+
"router",
|
|
43
|
+
"transport",
|
|
44
|
+
"cli"
|
|
36
45
|
],
|
|
37
46
|
"license": "Apache-2.0",
|
|
38
47
|
"engines": {
|
|
@@ -41,6 +50,14 @@
|
|
|
41
50
|
"dependencies": {
|
|
42
51
|
"@modelcontextprotocol/sdk": "^1.26.0"
|
|
43
52
|
},
|
|
53
|
+
"peerDependencies": {
|
|
54
|
+
"apcore-js": ">=0.6.0"
|
|
55
|
+
},
|
|
56
|
+
"peerDependenciesMeta": {
|
|
57
|
+
"apcore-js": {
|
|
58
|
+
"optional": true
|
|
59
|
+
}
|
|
60
|
+
},
|
|
44
61
|
"devDependencies": {
|
|
45
62
|
"@types/node": "^20.0.0",
|
|
46
63
|
"typescript": "^5.5.0",
|