@corsair-dev/mcp 0.1.3 → 0.1.5

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.
@@ -1,5 +1,5 @@
1
1
  import type { SdkMcpToolDefinition } from '@anthropic-ai/claude-agent-sdk';
2
- import { z } from 'zod';
2
+ import type { z } from 'zod';
3
3
  import type { BaseMcpOptions } from '../core/adapters.js';
4
4
  export declare class ClaudeProvider {
5
5
  readonly name = "claude";
@@ -1 +1 @@
1
- {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/adapters/claude.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAK1D,qBAAa,cAAc;IAC1B,QAAQ,CAAC,IAAI,YAAY;IAEnB,KAAK,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;CAMpF"}
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/adapters/claude.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAK1D,qBAAa,cAAc;IAC1B,QAAQ,CAAC,IAAI,YAAY;IAEnB,KAAK,CACV,OAAO,EAAE,cAAc,GACrB,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;CAMjD"}
@@ -1 +1 @@
1
- {"version":3,"file":"mastra.d.ts","sourceRoot":"","sources":["../../src/adapters/mastra.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAK1D,qBAAa,cAAc;IAC1B,QAAQ,CAAC,IAAI,YAAY;IAEnB,KAAK,CAAC,OAAO,EAAE,cAAc;;;CAuBnC"}
1
+ {"version":3,"file":"mastra.d.ts","sourceRoot":"","sources":["../../src/adapters/mastra.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAK1D,qBAAa,cAAc;IAC1B,QAAQ,CAAC,IAAI,YAAY;IAEnB,KAAK,CAAC,OAAO,EAAE,cAAc;;;CAyBnC"}
@@ -15,6 +15,7 @@ export type BaseMcpOptions = {
15
15
  type?: 'api' | 'webhooks' | 'db';
16
16
  }) => unknown;
17
17
  get_schema: (path: string) => unknown;
18
+ setup: () => Promise<void>;
18
19
  [key: string]: unknown;
19
20
  };
20
21
  permissions?: PermissionAdapter;
@@ -1 +1 @@
1
- {"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../src/core/adapters.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG;IAC/B,uBAAuB,CAAC,MAAM,EAAE;QAC/B,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9B,WAAW,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3D,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC5B,OAAO,EAAE;QACR,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE;YACxB,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,IAAI,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,IAAI,CAAC;SACjC,KAAK,OAAO,CAAC;QACd,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QACtC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACvB,CAAC;IACF,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC"}
1
+ {"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../src/core/adapters.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG;IAC/B,uBAAuB,CAAC,MAAM,EAAE;QAC/B,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9B,WAAW,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3D,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC5B,OAAO,EAAE;QACR,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE;YACxB,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,IAAI,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,IAAI,CAAC;SACjC,KAAK,OAAO,CAAC;QACd,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QACtC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACvB,CAAC;IACF,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC"}
@@ -1,5 +1,5 @@
1
- import { type CorsairToolDef } from './tools.js';
2
1
  import type { BaseMcpOptions } from './adapters.js';
2
+ import type { CorsairToolDef } from './tools.js';
3
3
  export declare abstract class BaseProvider<TOutput> {
4
4
  abstract readonly name: string;
5
5
  abstract wrapTool(def: CorsairToolDef): TOutput;
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/core/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,8BAAsB,YAAY,CAAC,OAAO;IACzC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO;IAE/C,KAAK,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,EAAE;CAGzC"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/core/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,8BAAsB,YAAY,CAAC,OAAO;IACzC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO;IAE/C,KAAK,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,EAAE;CAGzC"}
@@ -1 +1 @@
1
- {"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../../src/core/stdio.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpD,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAI9E"}
1
+ {"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../../src/core/stdio.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpD,wBAAsB,iBAAiB,CACtC,OAAO,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC,CAIf"}
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/core/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpD,MAAM,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC;IACrB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;CACpE,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,GAAG,cAAc,EAAE,CAyK9E"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/core/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC;IACrB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;CACpE,CAAC;AAEF,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,cAAc,GACrB,cAAc,EAAE,CA+LlB"}
package/dist/index.d.ts CHANGED
@@ -1,13 +1,13 @@
1
- export { createBaseMcpServer } from './core/base.js';
2
- export { createMcpRouter } from './core/http.js';
3
- export { runStdioMcpServer } from './core/stdio.js';
1
+ export { ClaudeProvider } from './adapters/claude.js';
2
+ export { MastraProvider } from './adapters/mastra.js';
4
3
  export type { OpenAIMcpConfig } from './adapters/openai.js';
5
4
  export { getOpenAIMcpConfig } from './adapters/openai.js';
6
5
  export type { VercelAiMcpClientOptions } from './adapters/vercel-ai.js';
7
6
  export { createVercelAiMcpClient } from './adapters/vercel-ai.js';
7
+ export type { BaseMcpOptions, PermissionAdapter } from './core/adapters.js';
8
+ export { createBaseMcpServer } from './core/base.js';
9
+ export { createMcpRouter } from './core/http.js';
8
10
  export { BaseProvider } from './core/provider.js';
9
- export { ClaudeProvider } from './adapters/claude.js';
10
- export { MastraProvider } from './adapters/mastra.js';
11
+ export { runStdioMcpServer } from './core/stdio.js';
11
12
  export type { CorsairToolDef } from './core/tools.js';
12
- export type { BaseMcpOptions, PermissionAdapter } from './core/adapters.js';
13
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,3 @@
1
- // src/core/base.ts
2
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
- import { z as z2 } from "zod";
4
-
5
1
  // src/core/tools.ts
6
2
  import { z } from "zod";
7
3
  function buildCorsairToolDefs(options) {
@@ -79,7 +75,9 @@ function buildCorsairToolDefs(options) {
79
75
  };
80
76
  }
81
77
  try {
82
- const result = await fn(args);
78
+ const result = await fn(
79
+ args
80
+ );
83
81
  return {
84
82
  content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
85
83
  };
@@ -100,6 +98,25 @@ ${full}`
100
98
  };
101
99
  }
102
100
  }
101
+ },
102
+ {
103
+ name: "corsair_setup",
104
+ description: "Helps the user configure Corsair. Call this to see if any keys or tokens need to be set up. It will also provide the instructions to set them up.",
105
+ shape: {},
106
+ handler: async () => {
107
+ try {
108
+ await corsair.setup();
109
+ return {
110
+ content: [{ type: "text", text: "Corsair setup complete." }]
111
+ };
112
+ } catch (err) {
113
+ const message = err instanceof Error ? err.message : String(err);
114
+ return {
115
+ isError: true,
116
+ content: [{ type: "text", text: `Setup failed: ${message}` }]
117
+ };
118
+ }
119
+ }
103
120
  }
104
121
  ];
105
122
  if (permissions && basePermissionUrl) {
@@ -140,7 +157,74 @@ ${full}`
140
157
  return defs;
141
158
  }
142
159
 
160
+ // src/adapters/claude.ts
161
+ var ClaudeProvider = class {
162
+ name = "claude";
163
+ async build(options) {
164
+ const { tool } = await import("@anthropic-ai/claude-agent-sdk");
165
+ return buildCorsairToolDefs(options).map(
166
+ (def) => tool(def.name, def.description, def.shape, def.handler)
167
+ );
168
+ }
169
+ };
170
+
171
+ // src/adapters/mastra.ts
172
+ import { z as z2 } from "zod";
173
+ var MastraProvider = class {
174
+ name = "mastra";
175
+ async build(options) {
176
+ const { createTool } = await import("@mastra/core/tools");
177
+ return buildCorsairToolDefs(options).map(
178
+ (def) => createTool({
179
+ id: def.name,
180
+ description: def.description,
181
+ inputSchema: z2.object(def.shape),
182
+ execute: async (inputData) => {
183
+ const result = await def.handler(
184
+ inputData
185
+ );
186
+ const textItems = result.content.filter((c) => c.type === "text");
187
+ if (result.isError) {
188
+ throw new Error(textItems.map((c) => c.text).join("\n"));
189
+ }
190
+ const text = textItems[0]?.text ?? "";
191
+ try {
192
+ return JSON.parse(text);
193
+ } catch {
194
+ return text;
195
+ }
196
+ }
197
+ })
198
+ );
199
+ }
200
+ };
201
+
202
+ // src/adapters/openai.ts
203
+ function getOpenAIMcpConfig(baseUrl, headers) {
204
+ return {
205
+ serverLabel: "corsair",
206
+ serverUrl: baseUrl,
207
+ headers
208
+ };
209
+ }
210
+
211
+ // src/adapters/vercel-ai.ts
212
+ async function createVercelAiMcpClient(options) {
213
+ const { createMCPClient } = await import("@ai-sdk/mcp");
214
+ const { url, headers } = options;
215
+ const client = await createMCPClient({
216
+ transport: {
217
+ type: "http",
218
+ url,
219
+ headers
220
+ }
221
+ });
222
+ return client;
223
+ }
224
+
143
225
  // src/core/base.ts
226
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
227
+ import { z as z3 } from "zod";
144
228
  function createBaseMcpServer(options) {
145
229
  const server = new McpServer({
146
230
  name: "corsair",
@@ -150,7 +234,7 @@ function createBaseMcpServer(options) {
150
234
  for (const def of buildCorsairToolDefs(options)) {
151
235
  server.registerTool(
152
236
  def.name,
153
- { description: def.description, inputSchema: z2.object(def.shape) },
237
+ { description: def.description, inputSchema: z3.object(def.shape) },
154
238
  def.handler
155
239
  );
156
240
  }
@@ -216,37 +300,6 @@ function createMcpRouter(createServer) {
216
300
  return router;
217
301
  }
218
302
 
219
- // src/core/stdio.ts
220
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
221
- async function runStdioMcpServer(options) {
222
- const server = createBaseMcpServer(options);
223
- const transport = new StdioServerTransport();
224
- await server.connect(transport);
225
- }
226
-
227
- // src/adapters/openai.ts
228
- function getOpenAIMcpConfig(baseUrl, headers) {
229
- return {
230
- serverLabel: "corsair",
231
- serverUrl: baseUrl,
232
- headers
233
- };
234
- }
235
-
236
- // src/adapters/vercel-ai.ts
237
- async function createVercelAiMcpClient(options) {
238
- const { createMCPClient } = await import("@ai-sdk/mcp");
239
- const { url, headers } = options;
240
- const client = await createMCPClient({
241
- transport: {
242
- type: "http",
243
- url,
244
- headers
245
- }
246
- });
247
- return client;
248
- }
249
-
250
303
  // src/core/provider.ts
251
304
  var BaseProvider = class {
252
305
  build(options) {
@@ -254,46 +307,13 @@ var BaseProvider = class {
254
307
  }
255
308
  };
256
309
 
257
- // src/adapters/claude.ts
258
- import "zod";
259
- var ClaudeProvider = class {
260
- name = "claude";
261
- async build(options) {
262
- const { tool } = await import("@anthropic-ai/claude-agent-sdk");
263
- return buildCorsairToolDefs(options).map(
264
- (def) => tool(def.name, def.description, def.shape, def.handler)
265
- );
266
- }
267
- };
268
-
269
- // src/adapters/mastra.ts
270
- import { z as z4 } from "zod";
271
- var MastraProvider = class {
272
- name = "mastra";
273
- async build(options) {
274
- const { createTool } = await import("@mastra/core/tools");
275
- return buildCorsairToolDefs(options).map(
276
- (def) => createTool({
277
- id: def.name,
278
- description: def.description,
279
- inputSchema: z4.object(def.shape),
280
- execute: async (inputData) => {
281
- const result = await def.handler(inputData);
282
- const textItems = result.content.filter((c) => c.type === "text");
283
- if (result.isError) {
284
- throw new Error(textItems.map((c) => c.text).join("\n"));
285
- }
286
- const text = textItems[0]?.text ?? "";
287
- try {
288
- return JSON.parse(text);
289
- } catch {
290
- return text;
291
- }
292
- }
293
- })
294
- );
295
- }
296
- };
310
+ // src/core/stdio.ts
311
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
312
+ async function runStdioMcpServer(options) {
313
+ const server = createBaseMcpServer(options);
314
+ const transport = new StdioServerTransport();
315
+ await server.connect(transport);
316
+ }
297
317
  export {
298
318
  BaseProvider,
299
319
  ClaudeProvider,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@corsair-dev/mcp",
3
- "version": "0.1.3",
4
- "description": "Base MCP server and SDK extensions for Corsair (workflows, cron, permissions)",
3
+ "version": "0.1.5",
4
+ "description": "MCP server and SDK adapters for Corsair — list operations, inspect schemas, run API calls",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.js",
@@ -20,7 +20,7 @@
20
20
  "@modelcontextprotocol/sdk": "^1.27.1",
21
21
  "express": "^4.21.0",
22
22
  "zod": "^3.25.0",
23
- "corsair": "0.1.28"
23
+ "corsair": "0.1.30"
24
24
  },
25
25
  "peerDependencies": {
26
26
  "@ai-sdk/mcp": ">=0.0.1",