@axtary/mcp 0.0.1 → 0.2.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/core.d.ts ADDED
@@ -0,0 +1,95 @@
1
+ import { type JsonValue, type NormalizedAction } from "@axtary/actionpass";
2
+ import type { ToolHandler } from "@axtary/proxy";
3
+ import { z } from "zod";
4
+ import type { McpSignedDefinitionVerification } from "./signing.js";
5
+ export declare const MCP_WRAPPER_SCHEMA_VERSION = "axtary.mcp_wrapper.v0";
6
+ export declare const MCP_TOOL_CALL = "mcp.tool.call";
7
+ export declare const McpToolDefinitionInputSchema: z.ZodObject<{
8
+ serverIdentity: z.ZodString;
9
+ serverVersion: z.ZodOptional<z.ZodString>;
10
+ schemaVersion: z.ZodString;
11
+ name: z.ZodString;
12
+ description: z.ZodOptional<z.ZodString>;
13
+ inputSchema: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>>;
14
+ }, z.core.$strip>;
15
+ export type McpToolDefinitionInput = z.input<typeof McpToolDefinitionInputSchema>;
16
+ export type McpToolDefinition = z.output<typeof McpToolDefinitionInputSchema>;
17
+ export declare const McpToolDefinitionRecordSchema: z.ZodObject<{
18
+ serverIdentity: z.ZodString;
19
+ serverVersion: z.ZodOptional<z.ZodString>;
20
+ schemaVersion: z.ZodString;
21
+ name: z.ZodString;
22
+ description: z.ZodOptional<z.ZodString>;
23
+ inputSchema: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>>;
24
+ wrapperSchemaVersion: z.ZodLiteral<"axtary.mcp_wrapper.v0">;
25
+ definitionHash: z.ZodString;
26
+ actionTool: z.ZodLiteral<"mcp.tool.call">;
27
+ resource: z.ZodString;
28
+ }, z.core.$strip>;
29
+ export type McpToolDefinitionRecord = z.infer<typeof McpToolDefinitionRecordSchema>;
30
+ export declare const McpToolCallSchema: z.ZodObject<{
31
+ toolName: z.ZodString;
32
+ arguments: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>>;
33
+ }, z.core.$strip>;
34
+ export type McpToolCall = z.infer<typeof McpToolCallSchema>;
35
+ export type CreateMcpActionInput = {
36
+ definition: McpToolDefinitionInput | McpToolDefinitionRecord;
37
+ actor: NormalizedAction["actor"];
38
+ intent: NormalizedAction["intent"];
39
+ call: McpToolCall;
40
+ constraints?: Record<string, JsonValue>;
41
+ /**
42
+ * A verified signed definition (from `verifyMcpSignedDefinition`). When
43
+ * present, publisher identity and version lineage are bound into the action's
44
+ * `toolDefinition`, so they ride into the ActionPass and ledger. The verified
45
+ * `definitionHash` must match the definition or action creation fails closed.
46
+ */
47
+ signed?: McpSignedDefinitionVerification;
48
+ };
49
+ export type McpToolInvokerRequest = {
50
+ definition: McpToolDefinitionRecord;
51
+ call: McpToolCall;
52
+ action: NormalizedAction;
53
+ };
54
+ export type McpToolInvoker = (request: McpToolInvokerRequest) => JsonValue | Promise<JsonValue>;
55
+ export type McpJsonRpcRequest = {
56
+ jsonrpc: "2.0";
57
+ id: string | number;
58
+ method: "tools/call";
59
+ params: {
60
+ name: string;
61
+ arguments: Record<string, JsonValue>;
62
+ };
63
+ };
64
+ export type McpHttpTransportConfig = {
65
+ url: string;
66
+ headers?: Record<string, string>;
67
+ fetch?: typeof fetch;
68
+ timeoutMs?: number;
69
+ };
70
+ export type McpStdioTransportConfig = {
71
+ command: string;
72
+ args?: string[];
73
+ cwd?: string;
74
+ env?: Record<string, string | undefined>;
75
+ timeoutMs?: number;
76
+ };
77
+ export type McpFixtureToolConfig = {
78
+ definition: McpToolDefinitionInput | McpToolDefinitionRecord;
79
+ fixtures: Record<string, JsonValue>;
80
+ };
81
+ export declare function createMcpToolDefinition(input: McpToolDefinitionInput): McpToolDefinitionRecord;
82
+ export declare function hashMcpToolDefinition(input: McpToolDefinitionInput): string;
83
+ export declare function createMcpAction(input: CreateMcpActionInput): NormalizedAction;
84
+ export declare function createMcpToolHandler(input: {
85
+ definition: McpToolDefinitionInput | McpToolDefinitionRecord;
86
+ invoke: McpToolInvoker;
87
+ }): ToolHandler;
88
+ export declare function createMcpHttpToolInvoker(config: McpHttpTransportConfig): McpToolInvoker;
89
+ export declare function createMcpStdioToolInvoker(config: McpStdioTransportConfig): McpToolInvoker;
90
+ export declare function createMcpFixtureToolHandler(config: McpFixtureToolConfig): ToolHandler;
91
+ export declare function toMcpJsonRpcRequest(call: McpToolCall): McpJsonRpcRequest;
92
+ export declare function parseMcpActionCall(action: NormalizedAction): McpToolCall;
93
+ export declare function parseMcpTransportResponse(text: string): JsonValue;
94
+ export declare function mcpToolResource(serverIdentity: string, toolName: string): string;
95
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
package/dist/core.js ADDED
@@ -0,0 +1,311 @@
1
+ import { createHash } from "node:crypto";
2
+ import { spawn } from "node:child_process";
3
+ import { ACTION_SCHEMA_VERSION, NormalizedActionSchema, } from "@axtary/actionpass";
4
+ import { z } from "zod";
5
+ export const MCP_WRAPPER_SCHEMA_VERSION = "axtary.mcp_wrapper.v0";
6
+ export const MCP_TOOL_CALL = "mcp.tool.call";
7
+ const JsonValueSchema = z.lazy(() => z.union([
8
+ z.string(),
9
+ z.number().finite(),
10
+ z.boolean(),
11
+ z.null(),
12
+ z.array(JsonValueSchema),
13
+ z.record(z.string(), JsonValueSchema),
14
+ ]));
15
+ export const McpToolDefinitionInputSchema = z.object({
16
+ serverIdentity: z.string().min(1),
17
+ serverVersion: z.string().min(1).optional(),
18
+ schemaVersion: z.string().min(1),
19
+ name: z.string().min(1),
20
+ description: z.string().optional(),
21
+ inputSchema: z.record(z.string(), JsonValueSchema).default({}),
22
+ });
23
+ export const McpToolDefinitionRecordSchema = McpToolDefinitionInputSchema.extend({
24
+ wrapperSchemaVersion: z.literal(MCP_WRAPPER_SCHEMA_VERSION),
25
+ definitionHash: z.string().regex(/^sha256:[a-f0-9]{64}$/),
26
+ actionTool: z.literal(MCP_TOOL_CALL),
27
+ resource: z.string().min(1),
28
+ });
29
+ export const McpToolCallSchema = z.object({
30
+ toolName: z.string().min(1),
31
+ arguments: z.record(z.string(), JsonValueSchema).default({}),
32
+ });
33
+ const McpJsonRpcErrorSchema = z.object({
34
+ code: z.number().int(),
35
+ message: z.string().min(1),
36
+ data: JsonValueSchema.optional(),
37
+ });
38
+ const McpJsonRpcResponseSchema = z.object({
39
+ jsonrpc: z.literal("2.0").optional(),
40
+ id: z.union([z.string(), z.number(), z.null()]).optional(),
41
+ result: JsonValueSchema.optional(),
42
+ error: McpJsonRpcErrorSchema.optional(),
43
+ });
44
+ export function createMcpToolDefinition(input) {
45
+ const definition = McpToolDefinitionInputSchema.parse(input);
46
+ const definitionHash = hashMcpToolDefinition(definition);
47
+ return McpToolDefinitionRecordSchema.parse({
48
+ ...definition,
49
+ wrapperSchemaVersion: MCP_WRAPPER_SCHEMA_VERSION,
50
+ definitionHash,
51
+ actionTool: MCP_TOOL_CALL,
52
+ resource: mcpToolResource(definition.serverIdentity, definition.name),
53
+ });
54
+ }
55
+ export function hashMcpToolDefinition(input) {
56
+ const definition = McpToolDefinitionInputSchema.parse(input);
57
+ return hashJson({
58
+ serverIdentity: definition.serverIdentity,
59
+ serverVersion: definition.serverVersion ?? null,
60
+ schemaVersion: definition.schemaVersion,
61
+ name: definition.name,
62
+ description: definition.description ?? null,
63
+ inputSchema: definition.inputSchema,
64
+ });
65
+ }
66
+ export function createMcpAction(input) {
67
+ const definition = createMcpToolDefinition(input.definition);
68
+ const call = McpToolCallSchema.parse(input.call);
69
+ if (call.toolName !== definition.name) {
70
+ throw new Error(`mcp_tool_name_mismatch:${definition.name}`);
71
+ }
72
+ const toolDefinition = {
73
+ serverIdentity: definition.serverIdentity,
74
+ schemaVersion: definition.schemaVersion,
75
+ definitionHash: definition.definitionHash,
76
+ };
77
+ if (input.signed) {
78
+ // The verification must be for this exact definition, or we would be
79
+ // binding a signature for a different tool — refuse rather than mislabel.
80
+ if (input.signed.definitionHash !== definition.definitionHash) {
81
+ throw new Error(`mcp_signed_definition_hash_mismatch:${definition.definitionHash}`);
82
+ }
83
+ toolDefinition.publisher = input.signed.publisher;
84
+ toolDefinition.publisherKeyId = input.signed.kid;
85
+ toolDefinition.semver = input.signed.semver;
86
+ if (input.signed.priorDefinitionHash) {
87
+ toolDefinition.priorDefinitionHash = input.signed.priorDefinitionHash;
88
+ }
89
+ }
90
+ return NormalizedActionSchema.parse({
91
+ schemaVersion: ACTION_SCHEMA_VERSION,
92
+ actor: input.actor,
93
+ intent: input.intent,
94
+ capability: {
95
+ tool: MCP_TOOL_CALL,
96
+ resource: definition.resource,
97
+ payload: {
98
+ toolName: call.toolName,
99
+ arguments: call.arguments,
100
+ },
101
+ constraints: input.constraints,
102
+ },
103
+ toolDefinition,
104
+ });
105
+ }
106
+ export function createMcpToolHandler(input) {
107
+ const definition = createMcpToolDefinition(input.definition);
108
+ return async ({ action }) => {
109
+ const call = parseMcpActionCall(action);
110
+ const error = validateMcpActionDefinition(action, definition, call);
111
+ if (error) {
112
+ throw new Error(error);
113
+ }
114
+ return input.invoke({
115
+ definition,
116
+ call,
117
+ action,
118
+ });
119
+ };
120
+ }
121
+ export function createMcpHttpToolInvoker(config) {
122
+ const fetchImpl = config.fetch ?? globalThis.fetch;
123
+ if (!fetchImpl) {
124
+ throw new Error("mcp_http_fetch_required");
125
+ }
126
+ return async ({ call }) => {
127
+ const response = await fetchWithTimeout(fetchImpl, config.url, {
128
+ method: "POST",
129
+ headers: {
130
+ ...config.headers,
131
+ "content-type": "application/json",
132
+ accept: "application/json",
133
+ },
134
+ body: JSON.stringify(toMcpJsonRpcRequest(call)),
135
+ }, config.timeoutMs);
136
+ const text = await response.text();
137
+ if (!response.ok) {
138
+ throw new Error(`mcp_http_error:${response.status}`);
139
+ }
140
+ return parseMcpTransportResponse(text);
141
+ };
142
+ }
143
+ export function createMcpStdioToolInvoker(config) {
144
+ return ({ call }) => new Promise((resolve, reject) => {
145
+ const timeoutMs = config.timeoutMs ?? 10_000;
146
+ let settled = false;
147
+ const child = spawn(config.command, config.args ?? [], {
148
+ cwd: config.cwd,
149
+ env: mergeEnv(config.env),
150
+ stdio: ["pipe", "pipe", "pipe"],
151
+ });
152
+ const timeout = setTimeout(() => {
153
+ settled = true;
154
+ child.kill("SIGTERM");
155
+ reject(new Error(`mcp_stdio_timeout:${timeoutMs}ms`));
156
+ }, timeoutMs);
157
+ let stdout = "";
158
+ let stderr = "";
159
+ child.stdout.setEncoding("utf8");
160
+ child.stderr.setEncoding("utf8");
161
+ child.stdout.on("data", (chunk) => {
162
+ stdout += chunk;
163
+ });
164
+ child.stderr.on("data", (chunk) => {
165
+ stderr += chunk;
166
+ });
167
+ child.on("error", (error) => {
168
+ if (settled) {
169
+ return;
170
+ }
171
+ settled = true;
172
+ clearTimeout(timeout);
173
+ reject(error);
174
+ });
175
+ child.on("close", (code) => {
176
+ if (settled) {
177
+ return;
178
+ }
179
+ settled = true;
180
+ clearTimeout(timeout);
181
+ if (code !== 0) {
182
+ reject(new Error(`mcp_stdio_exit:${code}:${stderr.trim()}`));
183
+ return;
184
+ }
185
+ try {
186
+ resolve(parseMcpTransportResponse(stdout));
187
+ }
188
+ catch (error) {
189
+ reject(error);
190
+ }
191
+ });
192
+ child.stdin.end(`${JSON.stringify(toMcpJsonRpcRequest(call))}\n`);
193
+ });
194
+ }
195
+ export function createMcpFixtureToolHandler(config) {
196
+ return createMcpToolHandler({
197
+ definition: config.definition,
198
+ invoke: ({ call }) => {
199
+ const fixtureKey = call.arguments.fixtureKey;
200
+ if (typeof fixtureKey !== "string" || fixtureKey.length === 0) {
201
+ throw new Error("mcp_fixture_key_required");
202
+ }
203
+ const fixture = config.fixtures[fixtureKey];
204
+ if (fixture === undefined) {
205
+ throw new Error(`mcp_fixture_not_found:${fixtureKey}`);
206
+ }
207
+ return fixture;
208
+ },
209
+ });
210
+ }
211
+ export function toMcpJsonRpcRequest(call) {
212
+ return {
213
+ jsonrpc: "2.0",
214
+ id: `axtary_mcp_${call.toolName}`,
215
+ method: "tools/call",
216
+ params: {
217
+ name: call.toolName,
218
+ arguments: call.arguments,
219
+ },
220
+ };
221
+ }
222
+ export function parseMcpActionCall(action) {
223
+ if (action.capability.tool !== MCP_TOOL_CALL) {
224
+ throw new Error(`mcp_action_tool_mismatch:${action.capability.tool}`);
225
+ }
226
+ return McpToolCallSchema.parse(action.capability.payload);
227
+ }
228
+ export function parseMcpTransportResponse(text) {
229
+ const line = text
230
+ .split(/\r?\n/)
231
+ .map((entry) => entry.trim())
232
+ .filter(Boolean)
233
+ .at(-1);
234
+ if (!line) {
235
+ throw new Error("mcp_transport_empty_response");
236
+ }
237
+ const parsed = JSON.parse(line);
238
+ const response = McpJsonRpcResponseSchema.safeParse(parsed);
239
+ if (!response.success) {
240
+ return JsonValueSchema.parse(parsed);
241
+ }
242
+ if (response.data.error) {
243
+ throw new Error(`mcp_transport_error:${response.data.error.message}`);
244
+ }
245
+ if (response.data.result === undefined) {
246
+ throw new Error("mcp_transport_missing_result");
247
+ }
248
+ return response.data.result;
249
+ }
250
+ export function mcpToolResource(serverIdentity, toolName) {
251
+ return `mcp:${encodeURIComponent(serverIdentity)}/tools/${encodeURIComponent(toolName)}`;
252
+ }
253
+ function validateMcpActionDefinition(action, definition, call) {
254
+ if (action.capability.resource !== definition.resource) {
255
+ return `mcp_resource_mismatch:${definition.resource}`;
256
+ }
257
+ if (call.toolName !== definition.name) {
258
+ return `mcp_tool_name_mismatch:${definition.name}`;
259
+ }
260
+ if (!action.toolDefinition) {
261
+ return "mcp_tool_definition_required";
262
+ }
263
+ if (action.toolDefinition.serverIdentity !== definition.serverIdentity) {
264
+ return `mcp_server_identity_mismatch:${definition.serverIdentity}`;
265
+ }
266
+ if (action.toolDefinition.schemaVersion !== definition.schemaVersion) {
267
+ return `mcp_schema_version_mismatch:${definition.schemaVersion}`;
268
+ }
269
+ if (action.toolDefinition.definitionHash !== definition.definitionHash) {
270
+ return `mcp_definition_hash_mismatch:${definition.definitionHash}`;
271
+ }
272
+ return null;
273
+ }
274
+ function hashJson(value) {
275
+ return `sha256:${createHash("sha256")
276
+ .update(stableStringify(value))
277
+ .digest("hex")}`;
278
+ }
279
+ function stableStringify(value) {
280
+ if (Array.isArray(value)) {
281
+ return `[${value.map((item) => stableStringify(item)).join(",")}]`;
282
+ }
283
+ if (value && typeof value === "object") {
284
+ return `{${Object.entries(value)
285
+ // UTF-16 code unit order per RFC 8785 (JCS), matching @axtary/actionpass.
286
+ .sort(([left], [right]) => (left < right ? -1 : left > right ? 1 : 0))
287
+ .map(([key, item]) => `${JSON.stringify(key)}:${stableStringify(item)}`)
288
+ .join(",")}}`;
289
+ }
290
+ return JSON.stringify(value);
291
+ }
292
+ async function fetchWithTimeout(fetchImpl, url, init, timeoutMs = 10_000) {
293
+ const controller = new AbortController();
294
+ const timeout = setTimeout(() => controller.abort(), timeoutMs);
295
+ try {
296
+ return await fetchImpl(url, {
297
+ ...init,
298
+ signal: controller.signal,
299
+ });
300
+ }
301
+ finally {
302
+ clearTimeout(timeout);
303
+ }
304
+ }
305
+ function mergeEnv(env) {
306
+ return {
307
+ ...process.env,
308
+ ...Object.fromEntries(Object.entries(env ?? {}).filter((entry) => typeof entry[1] === "string")),
309
+ };
310
+ }
311
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import type { JsonValue } from "@axtary/actionpass";
2
+ import type { McpUpstreamClient, McpUpstreamServerInfo, McpUpstreamToolListing } from "./server.js";
3
+ export type McpHttpClientConfig = {
4
+ url: string;
5
+ headers?: Record<string, string>;
6
+ fetch?: typeof fetch;
7
+ timeoutMs?: number;
8
+ clientName?: string;
9
+ clientVersion?: string;
10
+ };
11
+ /**
12
+ * Validate an upstream MCP URL before we send anything to it. `https://` is
13
+ * always allowed; `http://` is allowed only for loopback hosts. We never POST
14
+ * headers (which may carry credentials) in cleartext to a remote host — the
15
+ * same honesty rule that caught the Slack HTTP-loopback bug.
16
+ */
17
+ export declare function assertSafeMcpUrl(rawUrl: string): URL;
18
+ /**
19
+ * MCP client over the Streamable HTTP transport (spec 2025-06-18). Mirrors the
20
+ * surface of `McpStdioClient` so the governance path is transport-agnostic:
21
+ * every JSON-RPC message is a POST to the single MCP endpoint, the server may
22
+ * answer with one JSON object or an SSE stream, the session id from the
23
+ * InitializeResult is echoed on later requests, and the negotiated protocol
24
+ * version rides every post-init request.
25
+ */
26
+ export declare class McpHttpClient implements McpUpstreamClient {
27
+ private readonly url;
28
+ private readonly headers;
29
+ private readonly fetchImpl;
30
+ private readonly timeoutMs;
31
+ private sessionId;
32
+ private negotiatedVersion;
33
+ private closed;
34
+ serverInfo: McpUpstreamServerInfo | null;
35
+ private constructor();
36
+ static start(config: McpHttpClientConfig): Promise<McpHttpClient>;
37
+ listTools(): Promise<McpUpstreamToolListing[]>;
38
+ callTool(name: string, callArguments: Record<string, JsonValue>): Promise<JsonValue>;
39
+ close(): void;
40
+ private request;
41
+ private notify;
42
+ private post;
43
+ private readSseResponse;
44
+ private buildHeaders;
45
+ }
46
+ //# sourceMappingURL=http-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAQF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAwBpD;AAED;;;;;;;GAOG;AACH,qBAAa,aAAc,YAAW,iBAAiB;IACrD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAM;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,iBAAiB,CAAuB;IAChD,OAAO,CAAC,MAAM,CAAS;IACvB,UAAU,EAAE,qBAAqB,GAAG,IAAI,CAAQ;IAEhD,OAAO;WAaM,KAAK,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAiCjE,SAAS,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;IA+BpD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAIpF,KAAK,IAAI,IAAI;YAuBC,OAAO;YAoBP,MAAM;YAIN,IAAI;YAiEJ,eAAe;IA+C7B,OAAO,CAAC,YAAY;CAoBrB"}