mcp-openapi 0.1.0 → 0.1.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 CHANGED
@@ -316,20 +316,10 @@ console.log(`Loaded ${tools.length} tools from ${spec.info.title}`);
316
316
  Contributions are welcome. Here is how to get started:
317
317
 
318
318
  ```bash
319
- # Clone the repo
320
- git clone https://github.com/Docat0209/auto-revenue.git
321
- cd auto-revenue
322
-
323
- # Install dependencies
319
+ git clone https://github.com/Docat0209/mcp-openapi.git
320
+ cd mcp-openapi
324
321
  pnpm install
325
-
326
- # Navigate to the package
327
- cd packages/mcp-servers/openapi
328
-
329
- # Run tests
330
322
  pnpm test
331
-
332
- # Build
333
323
  pnpm build
334
324
  ```
335
325
 
@@ -117,7 +117,7 @@ function printHelp() {
117
117
  mcp-openapi - Convert any OpenAPI/Swagger spec into MCP tools
118
118
 
119
119
  USAGE:
120
- npx @autorev/mcp-openapi --spec <url-or-path> [options]
120
+ npx mcp-openapi --spec <url-or-path> [options]
121
121
 
122
122
  OPTIONS:
123
123
  -s, --spec <url|path> OpenAPI spec URL or local file path (required)
@@ -146,9 +146,9 @@ AUTH OPTIONS:
146
146
  --auth-scopes <scopes>
147
147
 
148
148
  EXAMPLES:
149
- npx @autorev/mcp-openapi --spec https://petstore3.swagger.io/api/v3/openapi.json
150
- npx @autorev/mcp-openapi --spec ./api.yaml --auth-type bearer --auth-token '$API_KEY'
151
- npx @autorev/mcp-openapi --spec ./api.json --prefix github --include 'listRepos,getRepo'
149
+ npx mcp-openapi --spec https://petstore3.swagger.io/api/v3/openapi.json
150
+ npx mcp-openapi --spec ./api.yaml --auth-type bearer --auth-token '$API_KEY'
151
+ npx mcp-openapi --spec ./api.json --prefix github --include 'listRepos,getRepo'
152
152
  `);
153
153
  }
154
154
  //# sourceMappingURL=cli-args.js.map
@@ -1,8 +1,42 @@
1
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
1
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
2
  import type { McpOpenApiConfig } from "./config/types.js";
3
+ import type { GeneratedTool } from "./generator/tool-generator.js";
3
4
  export declare function createServer(config: McpOpenApiConfig): Promise<{
4
- server: McpServer;
5
- tools: import("./index.js").GeneratedTool[];
5
+ server: Server<{
6
+ method: string;
7
+ params?: {
8
+ [x: string]: unknown;
9
+ _meta?: {
10
+ [x: string]: unknown;
11
+ progressToken?: string | number | undefined;
12
+ "io.modelcontextprotocol/related-task"?: {
13
+ taskId: string;
14
+ } | undefined;
15
+ } | undefined;
16
+ } | undefined;
17
+ }, {
18
+ method: string;
19
+ params?: {
20
+ [x: string]: unknown;
21
+ _meta?: {
22
+ [x: string]: unknown;
23
+ progressToken?: string | number | undefined;
24
+ "io.modelcontextprotocol/related-task"?: {
25
+ taskId: string;
26
+ } | undefined;
27
+ } | undefined;
28
+ } | undefined;
29
+ }, {
30
+ [x: string]: unknown;
31
+ _meta?: {
32
+ [x: string]: unknown;
33
+ progressToken?: string | number | undefined;
34
+ "io.modelcontextprotocol/related-task"?: {
35
+ taskId: string;
36
+ } | undefined;
37
+ } | undefined;
38
+ }>;
39
+ tools: GeneratedTool[];
6
40
  spec: import("./index.js").NormalizedSpec;
7
41
  }>;
8
42
  export declare function startServer(config: McpOpenApiConfig): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAS1D,wBAAsB,YAAY,CAAC,MAAM,EAAE,gBAAgB;;;;GAiE1D;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,gBAAgB,iBAOzD"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAOnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAM1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAInE,wBAAsB,YAAY,CAAC,MAAM,EAAE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyF1D;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,gBAAgB,iBAOzD"}
@@ -1,5 +1,6 @@
1
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
1
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
2
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
3
4
  import { createAuthProvider } from "./auth/index.js";
4
5
  import { DEFAULT_CONFIG } from "./config/types.js";
5
6
  import { buildRequest } from "./executor/request-builder.js";
@@ -24,31 +25,57 @@ export async function createServer(config) {
24
25
  }
25
26
  // Create auth provider
26
27
  const authProvider = createAuthProvider(mergedConfig.auth);
27
- // Create MCP server
28
- const server = new McpServer({
28
+ // Build tool lookup
29
+ const toolMap = new Map();
30
+ for (const tool of tools) {
31
+ toolMap.set(tool.name, tool);
32
+ }
33
+ // Create MCP server using low-level API
34
+ const server = new Server({
29
35
  name: `mcp-openapi: ${spec.info.title}`,
30
36
  version: spec.info.version,
37
+ }, {
38
+ capabilities: {
39
+ tools: {},
40
+ },
31
41
  });
32
- // Register each tool
33
- for (const tool of tools) {
34
- server.tool(tool.name, tool.description, tool.inputSchema.properties
35
- ? tool.inputSchema
36
- : { properties: {} }, async (args) => {
37
- // Build HTTP request from tool call args
38
- let request = buildRequest(args, tool.endpointRef, mergedConfig.headers);
39
- // Apply auth
40
- if (authProvider) {
41
- request = await authProvider.apply(request);
42
- }
43
- // Execute HTTP request
44
- const response = await executeRequest(request, {
45
- timeout: mergedConfig.timeout,
46
- maxRetries: mergedConfig.maxRetries,
47
- });
48
- // Map to MCP result
49
- return mapResponse(response);
42
+ // Handle list tools
43
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
44
+ tools: tools.map((t) => ({
45
+ name: t.name,
46
+ description: t.description,
47
+ inputSchema: {
48
+ type: "object",
49
+ properties: t.inputSchema.properties ?? {},
50
+ ...(t.inputSchema.required ? { required: t.inputSchema.required } : {}),
51
+ },
52
+ })),
53
+ }));
54
+ // Handle call tool
55
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
56
+ const tool = toolMap.get(request.params.name);
57
+ if (!tool) {
58
+ return {
59
+ content: [{ type: "text", text: `Unknown tool: ${request.params.name}` }],
60
+ isError: true,
61
+ };
62
+ }
63
+ const args = (request.params.arguments ?? {});
64
+ // Build HTTP request from tool call args
65
+ let httpRequest = buildRequest(args, tool.endpointRef, mergedConfig.headers);
66
+ // Apply auth
67
+ if (authProvider) {
68
+ httpRequest = await authProvider.apply(httpRequest);
69
+ }
70
+ // Execute HTTP request
71
+ const response = await executeRequest(httpRequest, {
72
+ timeout: mergedConfig.timeout,
73
+ maxRetries: mergedConfig.maxRetries,
50
74
  });
51
- }
75
+ // Map to MCP result
76
+ const result = mapResponse(response);
77
+ return { ...result };
78
+ });
52
79
  logger.info(`Registered ${tools.length} tools from ${spec.info.title} v${spec.info.version}`);
53
80
  return { server, tools, spec };
54
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-openapi",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "LLM-aware OpenAPI/Swagger to MCP tools converter. Point at any API spec, get instant MCP tools.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -46,9 +46,9 @@
46
46
  "tools"
47
47
  ],
48
48
  "license": "MIT",
49
+ "homepage": "https://github.com/Docat0209/mcp-openapi#readme",
49
50
  "repository": {
50
51
  "type": "git",
51
- "url": "https://github.com/Docat0209/auto-revenue",
52
- "directory": "packages/mcp-servers/openapi"
52
+ "url": "https://github.com/Docat0209/mcp-openapi"
53
53
  }
54
54
  }