@outfitter/mcp 0.4.2 → 0.4.3

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/schema.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  zodToJsonSchema
4
- } from "./shared/@outfitter/mcp-zy7b487d.js";
4
+ } from "./shared/@outfitter/mcp-hw5wz4gb.js";
5
5
  export {
6
6
  zodToJsonSchema
7
7
  };
package/dist/server.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { createMcpServer, definePrompt, defineResource, defineResourceTemplate, defineTool } from "./shared/@outfitter/mcp-5b5726ga.js";
2
- import "./shared/@outfitter/mcp-fks4zt1z.js";
1
+ import { createMcpServer, definePrompt, defineResource, defineResourceTemplate, defineTool } from "./shared/@outfitter/mcp-knq080yt.js";
2
+ import "./shared/@outfitter/mcp-gqjg15f5.js";
3
3
  import "./shared/@outfitter/mcp-cqpyer9m.js";
4
4
  export { defineTool, defineResourceTemplate, defineResource, definePrompt, createMcpServer };
package/dist/server.js CHANGED
@@ -5,10 +5,10 @@ import {
5
5
  defineResource,
6
6
  defineResourceTemplate,
7
7
  defineTool
8
- } from "./shared/@outfitter/mcp-hh12tqfg.js";
8
+ } from "./shared/@outfitter/mcp-b502y16n.js";
9
9
  import"./shared/@outfitter/mcp-fjtxsa0x.js";
10
- import"./shared/@outfitter/mcp-zy7b487d.js";
11
10
  import"./shared/@outfitter/mcp-9m5hs2z0.js";
11
+ import"./shared/@outfitter/mcp-hw5wz4gb.js";
12
12
  export {
13
13
  defineTool,
14
14
  defineResourceTemplate,
@@ -1,4 +1,4 @@
1
- import { McpServer } from "./mcp-fks4zt1z.js";
1
+ import { McpServer } from "./mcp-gqjg15f5.js";
2
2
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
3
3
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
4
  import { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
@@ -2,12 +2,12 @@
2
2
  import {
3
3
  shouldEmitLog
4
4
  } from "./mcp-fjtxsa0x.js";
5
- import {
6
- zodToJsonSchema
7
- } from "./mcp-zy7b487d.js";
8
5
  import {
9
6
  McpError
10
7
  } from "./mcp-9m5hs2z0.js";
8
+ import {
9
+ zodToJsonSchema
10
+ } from "./mcp-hw5wz4gb.js";
11
11
 
12
12
  // packages/mcp/src/server.ts
13
13
  import { getEnvironment, getEnvironmentDefaults } from "@outfitter/config";
@@ -1,4 +1,4 @@
1
- import { ToolDefinition } from "./mcp-fks4zt1z.js";
1
+ import { ToolDefinition } from "./mcp-gqjg15f5.js";
2
2
  import { ActionRegistry, ActionSurface, AnyActionSpec } from "@outfitter/contracts";
3
3
  interface BuildMcpToolsOptions {
4
4
  readonly includeSurfaces?: readonly ActionSurface[];
@@ -80,41 +80,11 @@ interface ToolAnnotations {
80
80
  * limitation; presets + spread cover most edge cases.
81
81
  */
82
82
  declare const TOOL_ANNOTATIONS: {
83
- /** Read-only, safe to call repeatedly. */
84
- readonly readOnly: {
85
- readonly readOnlyHint: true;
86
- readonly destructiveHint: false;
87
- readonly idempotentHint: true;
88
- readonly openWorldHint: false;
89
- };
90
- /** Creates or updates state, not destructive. */
91
- readonly write: {
92
- readonly readOnlyHint: false;
93
- readonly destructiveHint: false;
94
- readonly idempotentHint: false;
95
- readonly openWorldHint: false;
96
- };
97
- /** Idempotent write (PUT-like). */
98
- readonly writeIdempotent: {
99
- readonly readOnlyHint: false;
100
- readonly destructiveHint: false;
101
- readonly idempotentHint: true;
102
- readonly openWorldHint: false;
103
- };
104
- /** Deletes or permanently modifies data. */
105
- readonly destructive: {
106
- readonly readOnlyHint: false;
107
- readonly destructiveHint: true;
108
- readonly idempotentHint: true;
109
- readonly openWorldHint: false;
110
- };
111
- /** Interacts with external systems (APIs, network). */
112
- readonly openWorld: {
113
- readonly readOnlyHint: false;
114
- readonly destructiveHint: false;
115
- readonly idempotentHint: false;
116
- readonly openWorldHint: true;
117
- };
83
+ readonly destructive: ToolAnnotations;
84
+ readonly openWorld: ToolAnnotations;
85
+ readonly readOnly: ToolAnnotations;
86
+ readonly write: ToolAnnotations;
87
+ readonly writeIdempotent: ToolAnnotations;
118
88
  };
119
89
  /**
120
90
  * Definition of an MCP tool that can be invoked by clients.
@@ -0,0 +1 @@
1
+ export { zodToJsonSchema } from "@outfitter/contracts/schema";
@@ -1,4 +1,4 @@
1
- import { McpServer, McpServerOptions, PromptDefinition, ResourceDefinition, ResourceTemplateDefinition, ToolDefinition } from "./mcp-fks4zt1z.js";
1
+ import { McpServer, McpServerOptions, PromptDefinition, ResourceDefinition, ResourceTemplateDefinition, ToolDefinition } from "./mcp-gqjg15f5.js";
2
2
  import { OutfitterError } from "@outfitter/contracts";
3
3
  /**
4
4
  * Create an MCP server instance.
@@ -1,4 +1,4 @@
1
- import { ToolDefinition } from "./mcp-fks4zt1z.js";
1
+ import { ToolDefinition } from "./mcp-gqjg15f5.js";
2
2
  import { HandlerContext, OutfitterError } from "@outfitter/contracts";
3
3
  import { Result } from "@outfitter/contracts";
4
4
  type DocsSection = "overview" | "tools" | "examples" | "schemas";
@@ -1,4 +1,4 @@
1
- import { McpToolResponse, connectStdio, createSdkServer, wrapToolError, wrapToolResult } from "./shared/@outfitter/mcp-s3gfhcdk.js";
2
- import "./shared/@outfitter/mcp-fks4zt1z.js";
1
+ import { McpToolResponse, connectStdio, createSdkServer, wrapToolError, wrapToolResult } from "./shared/@outfitter/mcp-7kcw2814.js";
2
+ import "./shared/@outfitter/mcp-gqjg15f5.js";
3
3
  import "./shared/@outfitter/mcp-cqpyer9m.js";
4
4
  export { wrapToolResult, wrapToolError, createSdkServer, connectStdio, McpToolResponse };
package/dist/transport.js CHANGED
@@ -1,10 +1,166 @@
1
1
  // @bun
2
+ // packages/mcp/src/transport.ts
3
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
4
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
2
5
  import {
3
- connectStdio,
4
- createSdkServer,
5
- wrapToolError,
6
- wrapToolResult
7
- } from "./shared/@outfitter/mcp-mzky3ck8.js";
6
+ CallToolRequestSchema,
7
+ CompleteRequestSchema,
8
+ GetPromptRequestSchema,
9
+ ListPromptsRequestSchema,
10
+ ListResourcesRequestSchema,
11
+ ListResourceTemplatesRequestSchema,
12
+ ListToolsRequestSchema,
13
+ ReadResourceRequestSchema,
14
+ McpError as SdkMcpError,
15
+ SetLevelRequestSchema,
16
+ SubscribeRequestSchema,
17
+ UnsubscribeRequestSchema
18
+ } from "@modelcontextprotocol/sdk/types.js";
19
+ import { safeStringify } from "@outfitter/contracts";
20
+ function isMcpToolResponse(value) {
21
+ if (!value || typeof value !== "object") {
22
+ return false;
23
+ }
24
+ const content = value.content;
25
+ return Array.isArray(content);
26
+ }
27
+ function toTextPayload(value) {
28
+ if (typeof value === "string") {
29
+ return value;
30
+ }
31
+ return safeStringify(value);
32
+ }
33
+ function serializeError(error) {
34
+ if (error && typeof error === "object") {
35
+ const record = error;
36
+ return {
37
+ _tag: record._tag ?? "McpError",
38
+ message: record.message ?? "Unknown error",
39
+ code: record.code,
40
+ context: record.context
41
+ };
42
+ }
43
+ return {
44
+ _tag: "McpError",
45
+ message: String(error)
46
+ };
47
+ }
48
+ function wrapToolResult(value) {
49
+ if (isMcpToolResponse(value)) {
50
+ return value;
51
+ }
52
+ const structuredContent = value && typeof value === "object" && !Array.isArray(value) ? value : undefined;
53
+ return {
54
+ content: [
55
+ {
56
+ type: "text",
57
+ text: toTextPayload(value)
58
+ }
59
+ ],
60
+ ...structuredContent ? { structuredContent } : {}
61
+ };
62
+ }
63
+ function wrapToolError(error) {
64
+ return {
65
+ content: [
66
+ {
67
+ type: "text",
68
+ text: toTextPayload(serializeError(error))
69
+ }
70
+ ],
71
+ isError: true
72
+ };
73
+ }
74
+ function toSdkError(error) {
75
+ return new SdkMcpError(error.code, error.message, error.context);
76
+ }
77
+ function createSdkServer(server) {
78
+ const capabilities = {
79
+ tools: { listChanged: true },
80
+ resources: { listChanged: true, subscribe: true },
81
+ prompts: { listChanged: true },
82
+ completions: {},
83
+ logging: {}
84
+ };
85
+ const sdkServer = new Server({ name: server.name, version: server.version }, { capabilities });
86
+ sdkServer.setRequestHandler(ListToolsRequestSchema, async () => ({
87
+ tools: server.getTools()
88
+ }));
89
+ sdkServer.setRequestHandler(CallToolRequestSchema, async (request) => {
90
+ const { name, arguments: args } = request.params;
91
+ const progressToken = request.params._meta?.progressToken;
92
+ const options = progressToken !== undefined ? { progressToken } : undefined;
93
+ const result = await server.invokeTool(name, args ?? {}, options);
94
+ if (result.isErr()) {
95
+ return wrapToolError(result.error);
96
+ }
97
+ return wrapToolResult(result.value);
98
+ });
99
+ sdkServer.setRequestHandler(ListResourcesRequestSchema, async () => ({
100
+ resources: server.getResources().map((r) => ({
101
+ uri: r.uri,
102
+ name: r.name,
103
+ ...r.description ? { description: r.description } : {},
104
+ ...r.mimeType ? { mimeType: r.mimeType } : {}
105
+ }))
106
+ }));
107
+ sdkServer.setRequestHandler(ListResourceTemplatesRequestSchema, async () => ({
108
+ resourceTemplates: server.getResourceTemplates().map((t) => ({
109
+ uriTemplate: t.uriTemplate,
110
+ name: t.name,
111
+ ...t.description ? { description: t.description } : {},
112
+ ...t.mimeType ? { mimeType: t.mimeType } : {}
113
+ }))
114
+ }));
115
+ sdkServer.setRequestHandler(ReadResourceRequestSchema, async (request) => {
116
+ const { uri } = request.params;
117
+ const result = await server.readResource(uri);
118
+ if (result.isErr()) {
119
+ throw toSdkError(result.error);
120
+ }
121
+ return { contents: result.value };
122
+ });
123
+ sdkServer.setRequestHandler(SubscribeRequestSchema, async (request) => {
124
+ server.subscribe(request.params.uri);
125
+ return {};
126
+ });
127
+ sdkServer.setRequestHandler(UnsubscribeRequestSchema, async (request) => {
128
+ server.unsubscribe(request.params.uri);
129
+ return {};
130
+ });
131
+ sdkServer.setRequestHandler(ListPromptsRequestSchema, async () => ({
132
+ prompts: server.getPrompts()
133
+ }));
134
+ sdkServer.setRequestHandler(GetPromptRequestSchema, async (request) => {
135
+ const { name, arguments: args } = request.params;
136
+ const result = await server.getPrompt(name, args ?? {});
137
+ if (result.isErr()) {
138
+ throw toSdkError(result.error);
139
+ }
140
+ return { ...result.value };
141
+ });
142
+ sdkServer.setRequestHandler(CompleteRequestSchema, async (request) => {
143
+ const { ref, argument } = request.params;
144
+ const completionRef = ref.type === "ref/prompt" ? { type: "ref/prompt", name: ref.name } : { type: "ref/resource", uri: ref.uri };
145
+ const result = await server.complete(completionRef, argument.name, argument.value);
146
+ if (result.isErr()) {
147
+ throw toSdkError(result.error);
148
+ }
149
+ return { completion: result.value };
150
+ });
151
+ sdkServer.setRequestHandler(SetLevelRequestSchema, async (request) => {
152
+ const level = request.params.level;
153
+ server.setLogLevel?.(level);
154
+ return {};
155
+ });
156
+ server.bindSdkServer?.(sdkServer);
157
+ return sdkServer;
158
+ }
159
+ async function connectStdio(server, transport = new StdioServerTransport) {
160
+ const sdkServer = createSdkServer(server);
161
+ await sdkServer.connect(transport);
162
+ return sdkServer;
163
+ }
8
164
  export {
9
165
  wrapToolResult,
10
166
  wrapToolError,
package/dist/types.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { BlobResourceContent, CompletionHandler, CompletionRef, CompletionResult, ContentAnnotations, InvokeToolOptions, McpError, McpHandlerContext, McpServer, McpServerOptions, ProgressReporter, PromptArgument, PromptDefinition, PromptHandler, PromptMessage, PromptMessageContent, PromptResult, ResourceContent, ResourceDefinition, ResourceReadHandler, ResourceTemplateDefinition, ResourceTemplateReadHandler, Result, SerializedTool, TOOL_ANNOTATIONS, TaggedError, TextResourceContent, ToolAnnotations, ToolDefinition, adaptHandler } from "./shared/@outfitter/mcp-fks4zt1z.js";
1
+ import { BlobResourceContent, CompletionHandler, CompletionRef, CompletionResult, ContentAnnotations, InvokeToolOptions, McpError, McpHandlerContext, McpServer, McpServerOptions, ProgressReporter, PromptArgument, PromptDefinition, PromptHandler, PromptMessage, PromptMessageContent, PromptResult, ResourceContent, ResourceDefinition, ResourceReadHandler, ResourceTemplateDefinition, ResourceTemplateReadHandler, Result, SerializedTool, TOOL_ANNOTATIONS, TaggedError, TextResourceContent, ToolAnnotations, ToolDefinition, adaptHandler } from "./shared/@outfitter/mcp-gqjg15f5.js";
2
2
  import "./shared/@outfitter/mcp-cqpyer9m.js";
3
3
  export { adaptHandler, ToolDefinition, ToolAnnotations, TextResourceContent, TaggedError, TOOL_ANNOTATIONS, SerializedTool, Result, ResourceTemplateReadHandler, ResourceTemplateDefinition, ResourceReadHandler, ResourceDefinition, ResourceContent, PromptResult, PromptMessageContent, PromptMessage, PromptHandler, PromptDefinition, PromptArgument, ProgressReporter, McpServerOptions, McpServer, McpHandlerContext, McpError, InvokeToolOptions, ContentAnnotations, CompletionResult, CompletionRef, CompletionHandler, BlobResourceContent };
package/package.json CHANGED
@@ -1,11 +1,25 @@
1
1
  {
2
2
  "name": "@outfitter/mcp",
3
+ "version": "0.4.3",
3
4
  "description": "MCP server framework with typed tools for Outfitter",
4
- "version": "0.4.2",
5
- "type": "module",
5
+ "keywords": [
6
+ "mcp",
7
+ "model-context-protocol",
8
+ "outfitter",
9
+ "tools",
10
+ "typescript"
11
+ ],
12
+ "license": "MIT",
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "https://github.com/outfitter-dev/outfitter.git",
16
+ "directory": "packages/mcp"
17
+ },
6
18
  "files": [
7
19
  "dist"
8
20
  ],
21
+ "type": "module",
22
+ "sideEffects": false,
9
23
  "module": "./dist/index.js",
10
24
  "types": "./dist/index.d.ts",
11
25
  "exports": {
@@ -59,11 +73,13 @@
59
73
  }
60
74
  }
61
75
  },
62
- "sideEffects": false,
76
+ "publishConfig": {
77
+ "access": "public"
78
+ },
63
79
  "scripts": {
64
- "build": "bunup --filter @outfitter/mcp",
65
- "lint": "biome lint ./src",
66
- "lint:fix": "biome lint --write ./src",
80
+ "build": "cd ../.. && bunup --filter @outfitter/mcp",
81
+ "lint": "oxlint ./src",
82
+ "lint:fix": "oxlint --fix ./src",
67
83
  "test": "bun test",
68
84
  "typecheck": "tsc --noEmit",
69
85
  "clean": "rm -rf dist",
@@ -73,32 +89,16 @@
73
89
  "@modelcontextprotocol/sdk": "^1.12.1",
74
90
  "zod": "^4.3.5"
75
91
  },
92
+ "devDependencies": {
93
+ "@outfitter/config": "0.3.4",
94
+ "@outfitter/contracts": "0.4.2",
95
+ "@outfitter/logging": "0.4.2",
96
+ "@types/bun": "^1.3.9",
97
+ "typescript": "^5.9.3"
98
+ },
76
99
  "peerDependencies": {
77
100
  "@outfitter/config": ">=0.3.0",
78
101
  "@outfitter/contracts": ">=0.2.0",
79
102
  "@outfitter/logging": ">=0.3.0"
80
- },
81
- "devDependencies": {
82
- "@outfitter/config": "0.3.3",
83
- "@outfitter/contracts": "0.4.1",
84
- "@outfitter/logging": "0.4.1",
85
- "@types/bun": "latest",
86
- "typescript": "^5.8.0"
87
- },
88
- "keywords": [
89
- "outfitter",
90
- "mcp",
91
- "model-context-protocol",
92
- "tools",
93
- "typescript"
94
- ],
95
- "license": "MIT",
96
- "repository": {
97
- "type": "git",
98
- "url": "https://github.com/outfitter-dev/outfitter.git",
99
- "directory": "packages/mcp"
100
- },
101
- "publishConfig": {
102
- "access": "public"
103
103
  }
104
104
  }
@@ -1,165 +0,0 @@
1
- // @bun
2
- // packages/mcp/src/transport.ts
3
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
4
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
5
- import {
6
- CallToolRequestSchema,
7
- CompleteRequestSchema,
8
- GetPromptRequestSchema,
9
- ListPromptsRequestSchema,
10
- ListResourcesRequestSchema,
11
- ListResourceTemplatesRequestSchema,
12
- ListToolsRequestSchema,
13
- ReadResourceRequestSchema,
14
- McpError as SdkMcpError,
15
- SetLevelRequestSchema,
16
- SubscribeRequestSchema,
17
- UnsubscribeRequestSchema
18
- } from "@modelcontextprotocol/sdk/types.js";
19
- import { safeStringify } from "@outfitter/contracts";
20
- function isMcpToolResponse(value) {
21
- if (!value || typeof value !== "object") {
22
- return false;
23
- }
24
- const content = value.content;
25
- return Array.isArray(content);
26
- }
27
- function toTextPayload(value) {
28
- if (typeof value === "string") {
29
- return value;
30
- }
31
- return safeStringify(value);
32
- }
33
- function serializeError(error) {
34
- if (error && typeof error === "object") {
35
- const record = error;
36
- return {
37
- _tag: record._tag ?? "McpError",
38
- message: record.message ?? "Unknown error",
39
- code: record.code,
40
- context: record.context
41
- };
42
- }
43
- return {
44
- _tag: "McpError",
45
- message: String(error)
46
- };
47
- }
48
- function wrapToolResult(value) {
49
- if (isMcpToolResponse(value)) {
50
- return value;
51
- }
52
- const structuredContent = value && typeof value === "object" && !Array.isArray(value) ? value : undefined;
53
- return {
54
- content: [
55
- {
56
- type: "text",
57
- text: toTextPayload(value)
58
- }
59
- ],
60
- ...structuredContent ? { structuredContent } : {}
61
- };
62
- }
63
- function wrapToolError(error) {
64
- return {
65
- content: [
66
- {
67
- type: "text",
68
- text: toTextPayload(serializeError(error))
69
- }
70
- ],
71
- isError: true
72
- };
73
- }
74
- function toSdkError(error) {
75
- return new SdkMcpError(error.code, error.message, error.context);
76
- }
77
- function createSdkServer(server) {
78
- const capabilities = {
79
- tools: { listChanged: true },
80
- resources: { listChanged: true, subscribe: true },
81
- prompts: { listChanged: true },
82
- completions: {},
83
- logging: {}
84
- };
85
- const sdkServer = new Server({ name: server.name, version: server.version }, { capabilities });
86
- sdkServer.setRequestHandler(ListToolsRequestSchema, async () => ({
87
- tools: server.getTools()
88
- }));
89
- sdkServer.setRequestHandler(CallToolRequestSchema, async (request) => {
90
- const { name, arguments: args } = request.params;
91
- const progressToken = request.params._meta?.progressToken;
92
- const options = progressToken !== undefined ? { progressToken } : undefined;
93
- const result = await server.invokeTool(name, args ?? {}, options);
94
- if (result.isErr()) {
95
- return wrapToolError(result.error);
96
- }
97
- return wrapToolResult(result.value);
98
- });
99
- sdkServer.setRequestHandler(ListResourcesRequestSchema, async () => ({
100
- resources: server.getResources().map((r) => ({
101
- uri: r.uri,
102
- name: r.name,
103
- ...r.description ? { description: r.description } : {},
104
- ...r.mimeType ? { mimeType: r.mimeType } : {}
105
- }))
106
- }));
107
- sdkServer.setRequestHandler(ListResourceTemplatesRequestSchema, async () => ({
108
- resourceTemplates: server.getResourceTemplates().map((t) => ({
109
- uriTemplate: t.uriTemplate,
110
- name: t.name,
111
- ...t.description ? { description: t.description } : {},
112
- ...t.mimeType ? { mimeType: t.mimeType } : {}
113
- }))
114
- }));
115
- sdkServer.setRequestHandler(ReadResourceRequestSchema, async (request) => {
116
- const { uri } = request.params;
117
- const result = await server.readResource(uri);
118
- if (result.isErr()) {
119
- throw toSdkError(result.error);
120
- }
121
- return { contents: result.value };
122
- });
123
- sdkServer.setRequestHandler(SubscribeRequestSchema, async (request) => {
124
- server.subscribe(request.params.uri);
125
- return {};
126
- });
127
- sdkServer.setRequestHandler(UnsubscribeRequestSchema, async (request) => {
128
- server.unsubscribe(request.params.uri);
129
- return {};
130
- });
131
- sdkServer.setRequestHandler(ListPromptsRequestSchema, async () => ({
132
- prompts: server.getPrompts()
133
- }));
134
- sdkServer.setRequestHandler(GetPromptRequestSchema, async (request) => {
135
- const { name, arguments: args } = request.params;
136
- const result = await server.getPrompt(name, args ?? {});
137
- if (result.isErr()) {
138
- throw toSdkError(result.error);
139
- }
140
- return { ...result.value };
141
- });
142
- sdkServer.setRequestHandler(CompleteRequestSchema, async (request) => {
143
- const { ref, argument } = request.params;
144
- const completionRef = ref.type === "ref/prompt" ? { type: "ref/prompt", name: ref.name } : { type: "ref/resource", uri: ref.uri };
145
- const result = await server.complete(completionRef, argument.name, argument.value);
146
- if (result.isErr()) {
147
- throw toSdkError(result.error);
148
- }
149
- return { completion: result.value };
150
- });
151
- sdkServer.setRequestHandler(SetLevelRequestSchema, async (request) => {
152
- const level = request.params.level;
153
- server.setLogLevel?.(level);
154
- return {};
155
- });
156
- server.bindSdkServer?.(sdkServer);
157
- return sdkServer;
158
- }
159
- async function connectStdio(server, transport = new StdioServerTransport) {
160
- const sdkServer = createSdkServer(server);
161
- await sdkServer.connect(transport);
162
- return sdkServer;
163
- }
164
-
165
- export { wrapToolResult, wrapToolError, createSdkServer, connectStdio };
@@ -1,28 +0,0 @@
1
- // @bun
2
- import {
3
- defineTool
4
- } from "./mcp-hh12tqfg.js";
5
-
6
- // packages/mcp/src/actions.ts
7
- import { DEFAULT_REGISTRY_SURFACES } from "@outfitter/contracts";
8
- function isActionRegistry(source) {
9
- return "list" in source;
10
- }
11
- function buildMcpTools(source, options = {}) {
12
- const actions = isActionRegistry(source) ? source.list() : source;
13
- const includeSurfaces = options.includeSurfaces ?? [
14
- "mcp"
15
- ];
16
- return actions.filter((action) => {
17
- const surfaces = action.surfaces ?? DEFAULT_REGISTRY_SURFACES;
18
- return surfaces.some((surface) => includeSurfaces.includes(surface));
19
- }).map((action) => defineTool({
20
- name: action.mcp?.tool ?? action.id,
21
- description: action.mcp?.description ?? action.description ?? action.id,
22
- inputSchema: action.input,
23
- handler: async (input, ctx) => action.handler(input, ctx),
24
- ...action.mcp?.deferLoading !== undefined ? { deferLoading: action.mcp.deferLoading } : {}
25
- }));
26
- }
27
-
28
- export { buildMcpTools };