@axtary/mcp 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -0
- package/dist/index.d.ts +87 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +296 -0
- package/dist/index.js.map +1 -0
- package/package.json +48 -0
package/README.md
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# @axtary/mcp
|
|
2
|
+
|
|
3
|
+
MCP tool provenance helpers for Axtary's local runtime plane.
|
|
4
|
+
|
|
5
|
+
This package keeps transport execution behind Axtary's policy and ledger path. It normalizes MCP tool definitions and calls into Axtary actions, then provides local JSON-RPC HTTP/stdio invokers and fixture handlers that execute only after the proxy has evaluated policy, issued an ActionPass, written the ledger, and rechecked the tool definition hash.
|
|
6
|
+
|
|
7
|
+
## What It Does
|
|
8
|
+
|
|
9
|
+
- Normalizes MCP tool definitions with server identity, schema version, name, description, and input schema.
|
|
10
|
+
- Computes deterministic `sha256:` definition hashes.
|
|
11
|
+
- Creates `mcp.tool.call` normalized Axtary actions with `toolDefinition` provenance.
|
|
12
|
+
- Wraps MCP-style tool invokers as Axtary proxy handlers.
|
|
13
|
+
- Calls local MCP-compatible HTTP endpoints with JSON-RPC `tools/call` requests.
|
|
14
|
+
- Calls local stdio MCP-style processes with one JSON-RPC request per invocation.
|
|
15
|
+
- Provides fixture-backed handlers for deterministic demos and tests.
|
|
16
|
+
- Fails closed if the action's tool name, server identity, schema version, or definition hash no longer matches the registered tool.
|
|
17
|
+
|
|
18
|
+
## Design Notes
|
|
19
|
+
|
|
20
|
+
MCP tool poisoning and schema drift are runtime authorization problems, not just connection setup problems. Axtary records the tool definition hash in the action and checks it again at execution time, so a changed tool schema requires a fresh policy/approval path.
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { type JsonValue, type NormalizedAction } from "@axtary/actionpass";
|
|
2
|
+
import type { ToolHandler } from "@axtary/proxy";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
export declare const MCP_WRAPPER_SCHEMA_VERSION = "axtary.mcp_wrapper.v0";
|
|
5
|
+
export declare const MCP_TOOL_CALL = "mcp.tool.call";
|
|
6
|
+
export declare const McpToolDefinitionInputSchema: z.ZodObject<{
|
|
7
|
+
serverIdentity: z.ZodString;
|
|
8
|
+
serverVersion: z.ZodOptional<z.ZodString>;
|
|
9
|
+
schemaVersion: z.ZodString;
|
|
10
|
+
name: z.ZodString;
|
|
11
|
+
description: z.ZodOptional<z.ZodString>;
|
|
12
|
+
inputSchema: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>>;
|
|
13
|
+
}, z.core.$strip>;
|
|
14
|
+
export type McpToolDefinitionInput = z.input<typeof McpToolDefinitionInputSchema>;
|
|
15
|
+
export type McpToolDefinition = z.output<typeof McpToolDefinitionInputSchema>;
|
|
16
|
+
export declare const McpToolDefinitionRecordSchema: z.ZodObject<{
|
|
17
|
+
serverIdentity: z.ZodString;
|
|
18
|
+
serverVersion: z.ZodOptional<z.ZodString>;
|
|
19
|
+
schemaVersion: z.ZodString;
|
|
20
|
+
name: z.ZodString;
|
|
21
|
+
description: z.ZodOptional<z.ZodString>;
|
|
22
|
+
inputSchema: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>>;
|
|
23
|
+
wrapperSchemaVersion: z.ZodLiteral<"axtary.mcp_wrapper.v0">;
|
|
24
|
+
definitionHash: z.ZodString;
|
|
25
|
+
actionTool: z.ZodLiteral<"mcp.tool.call">;
|
|
26
|
+
resource: z.ZodString;
|
|
27
|
+
}, z.core.$strip>;
|
|
28
|
+
export type McpToolDefinitionRecord = z.infer<typeof McpToolDefinitionRecordSchema>;
|
|
29
|
+
export declare const McpToolCallSchema: z.ZodObject<{
|
|
30
|
+
toolName: z.ZodString;
|
|
31
|
+
arguments: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>>;
|
|
32
|
+
}, z.core.$strip>;
|
|
33
|
+
export type McpToolCall = z.infer<typeof McpToolCallSchema>;
|
|
34
|
+
export type CreateMcpActionInput = {
|
|
35
|
+
definition: McpToolDefinitionInput | McpToolDefinitionRecord;
|
|
36
|
+
actor: NormalizedAction["actor"];
|
|
37
|
+
intent: NormalizedAction["intent"];
|
|
38
|
+
call: McpToolCall;
|
|
39
|
+
constraints?: Record<string, JsonValue>;
|
|
40
|
+
};
|
|
41
|
+
export type McpToolInvokerRequest = {
|
|
42
|
+
definition: McpToolDefinitionRecord;
|
|
43
|
+
call: McpToolCall;
|
|
44
|
+
action: NormalizedAction;
|
|
45
|
+
};
|
|
46
|
+
export type McpToolInvoker = (request: McpToolInvokerRequest) => JsonValue | Promise<JsonValue>;
|
|
47
|
+
export type McpJsonRpcRequest = {
|
|
48
|
+
jsonrpc: "2.0";
|
|
49
|
+
id: string | number;
|
|
50
|
+
method: "tools/call";
|
|
51
|
+
params: {
|
|
52
|
+
name: string;
|
|
53
|
+
arguments: Record<string, JsonValue>;
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
export type McpHttpTransportConfig = {
|
|
57
|
+
url: string;
|
|
58
|
+
headers?: Record<string, string>;
|
|
59
|
+
fetch?: typeof fetch;
|
|
60
|
+
timeoutMs?: number;
|
|
61
|
+
};
|
|
62
|
+
export type McpStdioTransportConfig = {
|
|
63
|
+
command: string;
|
|
64
|
+
args?: string[];
|
|
65
|
+
cwd?: string;
|
|
66
|
+
env?: Record<string, string | undefined>;
|
|
67
|
+
timeoutMs?: number;
|
|
68
|
+
};
|
|
69
|
+
export type McpFixtureToolConfig = {
|
|
70
|
+
definition: McpToolDefinitionInput | McpToolDefinitionRecord;
|
|
71
|
+
fixtures: Record<string, JsonValue>;
|
|
72
|
+
};
|
|
73
|
+
export declare function createMcpToolDefinition(input: McpToolDefinitionInput): McpToolDefinitionRecord;
|
|
74
|
+
export declare function hashMcpToolDefinition(input: McpToolDefinitionInput): string;
|
|
75
|
+
export declare function createMcpAction(input: CreateMcpActionInput): NormalizedAction;
|
|
76
|
+
export declare function createMcpToolHandler(input: {
|
|
77
|
+
definition: McpToolDefinitionInput | McpToolDefinitionRecord;
|
|
78
|
+
invoke: McpToolInvoker;
|
|
79
|
+
}): ToolHandler;
|
|
80
|
+
export declare function createMcpHttpToolInvoker(config: McpHttpTransportConfig): McpToolInvoker;
|
|
81
|
+
export declare function createMcpStdioToolInvoker(config: McpStdioTransportConfig): McpToolInvoker;
|
|
82
|
+
export declare function createMcpFixtureToolHandler(config: McpFixtureToolConfig): ToolHandler;
|
|
83
|
+
export declare function toMcpJsonRpcRequest(call: McpToolCall): McpJsonRpcRequest;
|
|
84
|
+
export declare function parseMcpActionCall(action: NormalizedAction): McpToolCall;
|
|
85
|
+
export declare function parseMcpTransportResponse(text: string): JsonValue;
|
|
86
|
+
export declare function mcpToolResource(serverIdentity: string, toolName: string): string;
|
|
87
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,296 @@
|
|
|
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
|
+
return NormalizedActionSchema.parse({
|
|
73
|
+
schemaVersion: ACTION_SCHEMA_VERSION,
|
|
74
|
+
actor: input.actor,
|
|
75
|
+
intent: input.intent,
|
|
76
|
+
capability: {
|
|
77
|
+
tool: MCP_TOOL_CALL,
|
|
78
|
+
resource: definition.resource,
|
|
79
|
+
payload: {
|
|
80
|
+
toolName: call.toolName,
|
|
81
|
+
arguments: call.arguments,
|
|
82
|
+
},
|
|
83
|
+
constraints: input.constraints,
|
|
84
|
+
},
|
|
85
|
+
toolDefinition: {
|
|
86
|
+
serverIdentity: definition.serverIdentity,
|
|
87
|
+
schemaVersion: definition.schemaVersion,
|
|
88
|
+
definitionHash: definition.definitionHash,
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
export function createMcpToolHandler(input) {
|
|
93
|
+
const definition = createMcpToolDefinition(input.definition);
|
|
94
|
+
return async ({ action }) => {
|
|
95
|
+
const call = parseMcpActionCall(action);
|
|
96
|
+
const error = validateMcpActionDefinition(action, definition, call);
|
|
97
|
+
if (error) {
|
|
98
|
+
throw new Error(error);
|
|
99
|
+
}
|
|
100
|
+
return input.invoke({
|
|
101
|
+
definition,
|
|
102
|
+
call,
|
|
103
|
+
action,
|
|
104
|
+
});
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
export function createMcpHttpToolInvoker(config) {
|
|
108
|
+
const fetchImpl = config.fetch ?? globalThis.fetch;
|
|
109
|
+
if (!fetchImpl) {
|
|
110
|
+
throw new Error("mcp_http_fetch_required");
|
|
111
|
+
}
|
|
112
|
+
return async ({ call }) => {
|
|
113
|
+
const response = await fetchWithTimeout(fetchImpl, config.url, {
|
|
114
|
+
method: "POST",
|
|
115
|
+
headers: {
|
|
116
|
+
...config.headers,
|
|
117
|
+
"content-type": "application/json",
|
|
118
|
+
accept: "application/json",
|
|
119
|
+
},
|
|
120
|
+
body: JSON.stringify(toMcpJsonRpcRequest(call)),
|
|
121
|
+
}, config.timeoutMs);
|
|
122
|
+
const text = await response.text();
|
|
123
|
+
if (!response.ok) {
|
|
124
|
+
throw new Error(`mcp_http_error:${response.status}`);
|
|
125
|
+
}
|
|
126
|
+
return parseMcpTransportResponse(text);
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
export function createMcpStdioToolInvoker(config) {
|
|
130
|
+
return ({ call }) => new Promise((resolve, reject) => {
|
|
131
|
+
const timeoutMs = config.timeoutMs ?? 10_000;
|
|
132
|
+
let settled = false;
|
|
133
|
+
const child = spawn(config.command, config.args ?? [], {
|
|
134
|
+
cwd: config.cwd,
|
|
135
|
+
env: mergeEnv(config.env),
|
|
136
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
137
|
+
});
|
|
138
|
+
const timeout = setTimeout(() => {
|
|
139
|
+
settled = true;
|
|
140
|
+
child.kill("SIGTERM");
|
|
141
|
+
reject(new Error(`mcp_stdio_timeout:${timeoutMs}ms`));
|
|
142
|
+
}, timeoutMs);
|
|
143
|
+
let stdout = "";
|
|
144
|
+
let stderr = "";
|
|
145
|
+
child.stdout.setEncoding("utf8");
|
|
146
|
+
child.stderr.setEncoding("utf8");
|
|
147
|
+
child.stdout.on("data", (chunk) => {
|
|
148
|
+
stdout += chunk;
|
|
149
|
+
});
|
|
150
|
+
child.stderr.on("data", (chunk) => {
|
|
151
|
+
stderr += chunk;
|
|
152
|
+
});
|
|
153
|
+
child.on("error", (error) => {
|
|
154
|
+
if (settled) {
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
settled = true;
|
|
158
|
+
clearTimeout(timeout);
|
|
159
|
+
reject(error);
|
|
160
|
+
});
|
|
161
|
+
child.on("close", (code) => {
|
|
162
|
+
if (settled) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
settled = true;
|
|
166
|
+
clearTimeout(timeout);
|
|
167
|
+
if (code !== 0) {
|
|
168
|
+
reject(new Error(`mcp_stdio_exit:${code}:${stderr.trim()}`));
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
try {
|
|
172
|
+
resolve(parseMcpTransportResponse(stdout));
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
reject(error);
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
child.stdin.end(`${JSON.stringify(toMcpJsonRpcRequest(call))}\n`);
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
export function createMcpFixtureToolHandler(config) {
|
|
182
|
+
return createMcpToolHandler({
|
|
183
|
+
definition: config.definition,
|
|
184
|
+
invoke: ({ call }) => {
|
|
185
|
+
const fixtureKey = call.arguments.fixtureKey;
|
|
186
|
+
if (typeof fixtureKey !== "string" || fixtureKey.length === 0) {
|
|
187
|
+
throw new Error("mcp_fixture_key_required");
|
|
188
|
+
}
|
|
189
|
+
const fixture = config.fixtures[fixtureKey];
|
|
190
|
+
if (fixture === undefined) {
|
|
191
|
+
throw new Error(`mcp_fixture_not_found:${fixtureKey}`);
|
|
192
|
+
}
|
|
193
|
+
return fixture;
|
|
194
|
+
},
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
export function toMcpJsonRpcRequest(call) {
|
|
198
|
+
return {
|
|
199
|
+
jsonrpc: "2.0",
|
|
200
|
+
id: `axtary_mcp_${call.toolName}`,
|
|
201
|
+
method: "tools/call",
|
|
202
|
+
params: {
|
|
203
|
+
name: call.toolName,
|
|
204
|
+
arguments: call.arguments,
|
|
205
|
+
},
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
export function parseMcpActionCall(action) {
|
|
209
|
+
if (action.capability.tool !== MCP_TOOL_CALL) {
|
|
210
|
+
throw new Error(`mcp_action_tool_mismatch:${action.capability.tool}`);
|
|
211
|
+
}
|
|
212
|
+
return McpToolCallSchema.parse(action.capability.payload);
|
|
213
|
+
}
|
|
214
|
+
export function parseMcpTransportResponse(text) {
|
|
215
|
+
const line = text
|
|
216
|
+
.split(/\r?\n/)
|
|
217
|
+
.map((entry) => entry.trim())
|
|
218
|
+
.filter(Boolean)
|
|
219
|
+
.at(-1);
|
|
220
|
+
if (!line) {
|
|
221
|
+
throw new Error("mcp_transport_empty_response");
|
|
222
|
+
}
|
|
223
|
+
const parsed = JSON.parse(line);
|
|
224
|
+
const response = McpJsonRpcResponseSchema.safeParse(parsed);
|
|
225
|
+
if (!response.success) {
|
|
226
|
+
return JsonValueSchema.parse(parsed);
|
|
227
|
+
}
|
|
228
|
+
if (response.data.error) {
|
|
229
|
+
throw new Error(`mcp_transport_error:${response.data.error.message}`);
|
|
230
|
+
}
|
|
231
|
+
if (response.data.result === undefined) {
|
|
232
|
+
throw new Error("mcp_transport_missing_result");
|
|
233
|
+
}
|
|
234
|
+
return response.data.result;
|
|
235
|
+
}
|
|
236
|
+
export function mcpToolResource(serverIdentity, toolName) {
|
|
237
|
+
return `mcp:${encodeURIComponent(serverIdentity)}/tools/${encodeURIComponent(toolName)}`;
|
|
238
|
+
}
|
|
239
|
+
function validateMcpActionDefinition(action, definition, call) {
|
|
240
|
+
if (action.capability.resource !== definition.resource) {
|
|
241
|
+
return `mcp_resource_mismatch:${definition.resource}`;
|
|
242
|
+
}
|
|
243
|
+
if (call.toolName !== definition.name) {
|
|
244
|
+
return `mcp_tool_name_mismatch:${definition.name}`;
|
|
245
|
+
}
|
|
246
|
+
if (!action.toolDefinition) {
|
|
247
|
+
return "mcp_tool_definition_required";
|
|
248
|
+
}
|
|
249
|
+
if (action.toolDefinition.serverIdentity !== definition.serverIdentity) {
|
|
250
|
+
return `mcp_server_identity_mismatch:${definition.serverIdentity}`;
|
|
251
|
+
}
|
|
252
|
+
if (action.toolDefinition.schemaVersion !== definition.schemaVersion) {
|
|
253
|
+
return `mcp_schema_version_mismatch:${definition.schemaVersion}`;
|
|
254
|
+
}
|
|
255
|
+
if (action.toolDefinition.definitionHash !== definition.definitionHash) {
|
|
256
|
+
return `mcp_definition_hash_mismatch:${definition.definitionHash}`;
|
|
257
|
+
}
|
|
258
|
+
return null;
|
|
259
|
+
}
|
|
260
|
+
function hashJson(value) {
|
|
261
|
+
return `sha256:${createHash("sha256")
|
|
262
|
+
.update(stableStringify(value))
|
|
263
|
+
.digest("hex")}`;
|
|
264
|
+
}
|
|
265
|
+
function stableStringify(value) {
|
|
266
|
+
if (Array.isArray(value)) {
|
|
267
|
+
return `[${value.map((item) => stableStringify(item)).join(",")}]`;
|
|
268
|
+
}
|
|
269
|
+
if (value && typeof value === "object") {
|
|
270
|
+
return `{${Object.entries(value)
|
|
271
|
+
.sort(([left], [right]) => left.localeCompare(right))
|
|
272
|
+
.map(([key, item]) => `${JSON.stringify(key)}:${stableStringify(item)}`)
|
|
273
|
+
.join(",")}}`;
|
|
274
|
+
}
|
|
275
|
+
return JSON.stringify(value);
|
|
276
|
+
}
|
|
277
|
+
async function fetchWithTimeout(fetchImpl, url, init, timeoutMs = 10_000) {
|
|
278
|
+
const controller = new AbortController();
|
|
279
|
+
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
280
|
+
try {
|
|
281
|
+
return await fetchImpl(url, {
|
|
282
|
+
...init,
|
|
283
|
+
signal: controller.signal,
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
finally {
|
|
287
|
+
clearTimeout(timeout);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
function mergeEnv(env) {
|
|
291
|
+
return {
|
|
292
|
+
...process.env,
|
|
293
|
+
...Object.fromEntries(Object.entries(env ?? {}).filter((entry) => typeof entry[1] === "string")),
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@axtary/mcp",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"private": false,
|
|
5
|
+
"description": "MCP tool provenance helpers and fail-closed handler wrappers for Axtary.",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"license": "UNLICENSED",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/axtary/axtary.git",
|
|
11
|
+
"directory": "packages/mcp"
|
|
12
|
+
},
|
|
13
|
+
"keywords": [
|
|
14
|
+
"ai-agents",
|
|
15
|
+
"authorization",
|
|
16
|
+
"mcp",
|
|
17
|
+
"tool-provenance"
|
|
18
|
+
],
|
|
19
|
+
"engines": {
|
|
20
|
+
"node": "^20.19.0 || ^22.13.0 || >=24"
|
|
21
|
+
},
|
|
22
|
+
"scripts": {
|
|
23
|
+
"prebuild": "npm run build -w @axtary/actionpass && npm run build -w @axtary/proxy",
|
|
24
|
+
"build": "npm run clean && tsc -p tsconfig.json",
|
|
25
|
+
"clean": "rm -rf dist",
|
|
26
|
+
"prepack": "npm run build"
|
|
27
|
+
},
|
|
28
|
+
"files": [
|
|
29
|
+
"README.md",
|
|
30
|
+
"dist"
|
|
31
|
+
],
|
|
32
|
+
"publishConfig": {
|
|
33
|
+
"access": "public"
|
|
34
|
+
},
|
|
35
|
+
"main": "./dist/index.js",
|
|
36
|
+
"exports": {
|
|
37
|
+
".": {
|
|
38
|
+
"types": "./dist/index.d.ts",
|
|
39
|
+
"import": "./dist/index.js"
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"types": "./dist/index.d.ts",
|
|
43
|
+
"dependencies": {
|
|
44
|
+
"@axtary/actionpass": "0.0.1",
|
|
45
|
+
"@axtary/proxy": "0.0.1",
|
|
46
|
+
"zod": "^4.4.3"
|
|
47
|
+
}
|
|
48
|
+
}
|