@ampeco/public-api-mcp 0.2.2 ā 0.3.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/README.md +235 -4
- package/dist/build/optimizer.d.ts.map +1 -1
- package/dist/build/optimizer.js +82 -21
- package/dist/build/optimizer.js.map +1 -1
- package/dist/build/parser.d.ts.map +1 -1
- package/dist/build/parser.js +74 -1
- package/dist/build/parser.js.map +1 -1
- package/dist/cli/index.js +25 -11
- package/dist/cli/index.js.map +1 -1
- package/dist/generated/build-stats.json +5 -5
- package/dist/generated/endpoints.json +29214 -20896
- package/dist/generated/schemas.d.ts +7530 -2789
- package/dist/generated/schemas.d.ts.map +1 -1
- package/dist/generated/schemas.js +1443 -590
- package/dist/generated/schemas.js.map +1 -1
- package/dist/generated/schemas.ts +1447 -596
- package/dist/server/factory.d.ts +2 -1
- package/dist/server/factory.d.ts.map +1 -1
- package/dist/server/factory.js +17 -206
- package/dist/server/factory.js.map +1 -1
- package/dist/server/factory.test.js +62 -4
- package/dist/server/factory.test.js.map +1 -1
- package/dist/server/http.d.ts +2 -1
- package/dist/server/http.d.ts.map +1 -1
- package/dist/server/http.js +8 -2
- package/dist/server/http.js.map +1 -1
- package/dist/server/index.d.ts +2 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +9 -1388
- package/dist/server/index.js.map +1 -1
- package/dist/server/instructions.d.ts +13 -0
- package/dist/server/instructions.d.ts.map +1 -0
- package/dist/server/instructions.js +146 -0
- package/dist/server/instructions.js.map +1 -0
- package/dist/server/resources/handlers.d.ts +31 -0
- package/dist/server/resources/handlers.d.ts.map +1 -0
- package/dist/server/resources/handlers.js +113 -0
- package/dist/server/resources/handlers.js.map +1 -0
- package/dist/server/resources/handlers.test.d.ts +6 -0
- package/dist/server/resources/handlers.test.d.ts.map +1 -0
- package/dist/server/resources/handlers.test.js +203 -0
- package/dist/server/resources/handlers.test.js.map +1 -0
- package/dist/server/resources/native.d.ts +11 -0
- package/dist/server/resources/native.d.ts.map +1 -0
- package/dist/server/resources/native.js +31 -0
- package/dist/server/resources/native.js.map +1 -0
- package/dist/server/resources/tools.d.ts +11 -0
- package/dist/server/resources/tools.d.ts.map +1 -0
- package/dist/server/resources/tools.js +41 -0
- package/dist/server/resources/tools.js.map +1 -0
- package/dist/server/stdio.d.ts +2 -1
- package/dist/server/stdio.d.ts.map +1 -1
- package/dist/server/stdio.js +8 -2
- package/dist/server/stdio.js.map +1 -1
- package/dist/server/types.d.ts +36 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/types.js +6 -0
- package/dist/server/types.js.map +1 -0
- package/package.json +3 -2
package/dist/server/factory.d.ts
CHANGED
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
6
6
|
import type { BuildOutput } from '../build/types.js';
|
|
7
|
+
import type { ServerOptions } from './types.js';
|
|
7
8
|
/**
|
|
8
9
|
* Create and configure the MCP server
|
|
9
10
|
*/
|
|
10
|
-
export declare function createServer(endpoints: BuildOutput,
|
|
11
|
+
export declare function createServer(endpoints: BuildOutput, options: ServerOptions): McpServer;
|
|
11
12
|
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/server/factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/server/factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAMhD;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,GAAG,SAAS,CAwTtF"}
|
package/dist/server/factory.js
CHANGED
|
@@ -3,226 +3,39 @@
|
|
|
3
3
|
* Creates and configures MCP server instances with shared logic for resources, tools, and prompts
|
|
4
4
|
*/
|
|
5
5
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
6
|
-
import {
|
|
6
|
+
import { ListPromptsRequestSchema, GetPromptRequestSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
7
7
|
import { z } from 'zod';
|
|
8
8
|
import fetch from 'node-fetch';
|
|
9
9
|
import { getPromptContent } from './prompts.js';
|
|
10
|
+
import { getNativeResourceInstructions, getToolEmulationInstructions } from './instructions.js';
|
|
11
|
+
import { registerNativeResources } from './resources/native.js';
|
|
12
|
+
import { registerEmulationTools } from './resources/tools.js';
|
|
10
13
|
/**
|
|
11
14
|
* Create and configure the MCP server
|
|
12
15
|
*/
|
|
13
|
-
export function createServer(endpoints,
|
|
16
|
+
export function createServer(endpoints, options) {
|
|
17
|
+
const { hostname, bearerToken, emulateResourcesViaTools = false, } = options;
|
|
14
18
|
const server = new McpServer({
|
|
15
19
|
name: 'public-api-mcp',
|
|
16
20
|
version: '0.1.0',
|
|
17
21
|
}, {
|
|
18
22
|
capabilities: {
|
|
19
|
-
resources: {},
|
|
23
|
+
resources: emulateResourcesViaTools ? undefined : {},
|
|
20
24
|
tools: {},
|
|
21
25
|
prompts: {},
|
|
22
26
|
logging: {},
|
|
23
27
|
},
|
|
24
|
-
instructions:
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
Target API: ${hostname}
|
|
29
|
-
|
|
30
|
-
Resource Structure (3-tier hierarchy):
|
|
31
|
-
- Tier 1 (Discovery): List resources returns API tags (e.g., tag://Users, tag://ChargingSessions)
|
|
32
|
-
- Tier 2 (Navigation): Read a tag resource to see all endpoints within that tag
|
|
33
|
-
- Tier 3 (Details): Read an individual endpoint resource for full specification
|
|
34
|
-
|
|
35
|
-
Usage:
|
|
36
|
-
1. List available resources to discover API tags (returns ~10-30 tags instead of 443 endpoints)
|
|
37
|
-
2. Read a tag resource (e.g., tag://Users) to see all endpoints within that tag
|
|
38
|
-
3. Read an endpoint resource (e.g., api://GET/users/{id}) to get detailed endpoint information
|
|
39
|
-
4. Use the 'api_request' tool to make HTTP calls to any endpoint
|
|
40
|
-
|
|
41
|
-
URI Formats:
|
|
42
|
-
- Tags: tag://{TagName} (e.g., tag://Users)
|
|
43
|
-
- Endpoints: api://{METHOD}{path} (e.g., api://GET/users/{id})
|
|
44
|
-
|
|
45
|
-
The server automatically proxies your Bearer token to all API requests to ${hostname}.
|
|
46
|
-
|
|
47
|
-
Note: Deprecated endpoints are not exposed as resources and cannot be accessed. This hierarchical structure reduces initial context consumption by ~95-97%.
|
|
48
|
-
|
|
49
|
-
## Available Prompts
|
|
50
|
-
|
|
51
|
-
This server provides helpful prompts for common workflows. Use these prompts to learn best practices:
|
|
52
|
-
|
|
53
|
-
- **charging_session_workflow**: Learn how to implement the complete charging session lifecycle: finding charge points, starting/stopping sessions, and retrieving session details
|
|
54
|
-
- **authentication_workflow**: Understand how authentication works with the AMPECO API and how to implement custom authentication in your backend
|
|
55
|
-
- **reservation_workflow**: Learn how to reserve charge points for immediate or future use
|
|
56
|
-
- **smart_charging_setup**: Guide for configuring smart charging modes including scheduled, solar, and dynamic pricing strategies
|
|
57
|
-
|
|
58
|
-
To use a prompt, simply reference it by name when you need guidance on these workflows.
|
|
59
|
-
|
|
60
|
-
## AMPECO API Resource Relationships
|
|
61
|
-
|
|
62
|
-
The AMPECO API has a hierarchical structure: **Locations** ā **Charging Zones** ā **Charge Points** ā **EVSEs** ā **Connectors**
|
|
63
|
-
|
|
64
|
-
Each resource can be listed independently. EVSEs contain the currentType field ("ac"/"dc") for determining charging type.
|
|
65
|
-
|
|
66
|
-
## Best Practices for Data Fetching
|
|
67
|
-
|
|
68
|
-
**Always prefer top-level listing endpoints over nested fetching:**
|
|
69
|
-
- ā
Use \`GET /evses\` to get all EVSEs across all charge points (1 API call)
|
|
70
|
-
- ā Avoid fetching \`GET /charge-points/{id}/evses\` for each charge point (N API calls)
|
|
71
|
-
|
|
72
|
-
The top-level listing endpoints are more efficient and reduce API load. Use nested endpoints only when you specifically need resources for a single parent entity.
|
|
73
|
-
|
|
74
|
-
## Session State & Webhooks
|
|
75
|
-
|
|
76
|
-
The AMPECO API is event-driven and uses webhooks for real-time updates. When performing actions like starting/stopping charging sessions:
|
|
77
|
-
- Initial API responses return immediately with session IDs
|
|
78
|
-
- Actual state changes arrive via webhooks (SessionUpdateNotification, SessionMeterValuesNotification)
|
|
79
|
-
- Clients should implement webhook handlers to track session status changes from "pending" ā "active" ā "finished"
|
|
80
|
-
- Session details and final metrics are retrieved via GET requests after receiving webhook notifications
|
|
81
|
-
|
|
82
|
-
## Cursor Pagination Guide
|
|
83
|
-
|
|
84
|
-
Many list endpoints support cursor-based pagination, which is faster and more reliable than offset-based pagination. Here's how to use it:
|
|
85
|
-
|
|
86
|
-
**Initial Request** - Start with an empty cursor:
|
|
87
|
-
\`\`\`
|
|
88
|
-
api_request(endpoint: "/users", method: "GET", query_params: { limit: 100, cursor: "" })
|
|
89
|
-
\`\`\`
|
|
90
|
-
|
|
91
|
-
**Subsequent Requests** - Use the cursor from the previous response:
|
|
92
|
-
\`\`\`
|
|
93
|
-
api_request(endpoint: "/users", method: "GET", query_params: { limit: 100, cursor: "eyJpZCI6MTAwfQ==" })
|
|
94
|
-
\`\`\`
|
|
95
|
-
|
|
96
|
-
**Pagination Loop:**
|
|
97
|
-
1. Start with \`cursor=""\` (empty string)
|
|
98
|
-
2. Make request with current cursor
|
|
99
|
-
3. Collect items from response
|
|
100
|
-
4. If response contains a non-empty cursor, use it for next request
|
|
101
|
-
5. Stop when cursor is null/empty or data array is empty
|
|
102
|
-
|
|
103
|
-
**Key Points:**
|
|
104
|
-
- ā
Always use \`cursor=""\` for first request
|
|
105
|
-
- ā
Use exact cursor value from responses
|
|
106
|
-
- ā
Check for null/empty cursor or empty data array to detect end
|
|
107
|
-
- ā
Adjust limit based on data size (100-1000 typical)
|
|
108
|
-
- ā Don't use offset pagination when cursor is available`,
|
|
109
|
-
});
|
|
110
|
-
// Register resources/list handler - returns tags (Tier 1)
|
|
111
|
-
server.server.setRequestHandler(ListResourcesRequestSchema, async () => {
|
|
112
|
-
const startTime = Date.now();
|
|
113
|
-
console.error('[Resources List] Building tag-based resource list...');
|
|
114
|
-
// Filter out deprecated endpoints first
|
|
115
|
-
const activeEndpoints = endpoints.endpoints.filter(endpoint => !endpoint.deprecated);
|
|
116
|
-
// Extract unique tags from all active endpoints
|
|
117
|
-
const tagsSet = new Set();
|
|
118
|
-
let untaggedCount = 0;
|
|
119
|
-
for (const endpoint of activeEndpoints) {
|
|
120
|
-
if (endpoint.tags && endpoint.tags.length > 0) {
|
|
121
|
-
endpoint.tags.forEach(tag => tagsSet.add(tag));
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
untaggedCount++;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
// Convert to sorted array
|
|
128
|
-
const tags = Array.from(tagsSet).sort();
|
|
129
|
-
// Add "Untagged" category if there are untagged endpoints
|
|
130
|
-
if (untaggedCount > 0) {
|
|
131
|
-
tags.push('Untagged');
|
|
132
|
-
}
|
|
133
|
-
// Build resources list with tag URIs
|
|
134
|
-
const resources = tags.map(tag => {
|
|
135
|
-
const tagEndpoints = activeEndpoints.filter(e => tag === 'Untagged'
|
|
136
|
-
? !e.tags || e.tags.length === 0
|
|
137
|
-
: e.tags?.includes(tag));
|
|
138
|
-
return {
|
|
139
|
-
uri: `tag://${tag}`,
|
|
140
|
-
name: tag,
|
|
141
|
-
description: `${tagEndpoints.length} endpoint${tagEndpoints.length !== 1 ? 's' : ''} tagged with '${tag}'`,
|
|
142
|
-
mimeType: 'application/json',
|
|
143
|
-
};
|
|
144
|
-
});
|
|
145
|
-
const duration = Date.now() - startTime;
|
|
146
|
-
console.error(`[Resources List] Built ${resources.length} tag resources (filtered ${endpoints.endpoints.length - activeEndpoints.length} deprecated endpoints) in ${duration}ms`);
|
|
147
|
-
return { resources };
|
|
148
|
-
});
|
|
149
|
-
// Register resources/read handler - supports tag:// (Tier 2) and api:// (Tier 3) URIs
|
|
150
|
-
server.server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
|
|
151
|
-
const uri = request.params.uri;
|
|
152
|
-
// Manual URI parsing to handle spaces and special characters in tag names
|
|
153
|
-
// Format: tag://{TagName} or api://{METHOD}{path}
|
|
154
|
-
const protocolMatch = uri.match(/^([^:]+):\/\/(.*)$/);
|
|
155
|
-
if (!protocolMatch) {
|
|
156
|
-
throw new Error(`Invalid URI format: ${uri}`);
|
|
157
|
-
}
|
|
158
|
-
const protocol = protocolMatch[1];
|
|
159
|
-
const remainder = protocolMatch[2];
|
|
160
|
-
// Tier 2: Handle tag:// URIs - return list of endpoints within the tag
|
|
161
|
-
if (protocol === 'tag') {
|
|
162
|
-
const tag = remainder;
|
|
163
|
-
// Filter active endpoints by tag
|
|
164
|
-
const activeEndpoints = endpoints.endpoints.filter(endpoint => !endpoint.deprecated);
|
|
165
|
-
const taggedEndpoints = activeEndpoints.filter(e => tag === 'Untagged'
|
|
166
|
-
? !e.tags || e.tags.length === 0
|
|
167
|
-
: e.tags?.includes(tag));
|
|
168
|
-
if (taggedEndpoints.length === 0) {
|
|
169
|
-
throw new Error(`No endpoints found for tag: ${tag}`);
|
|
170
|
-
}
|
|
171
|
-
// Build response with endpoint summaries
|
|
172
|
-
const tagResource = {
|
|
173
|
-
tag,
|
|
174
|
-
count: taggedEndpoints.length,
|
|
175
|
-
endpoints: taggedEndpoints.map(e => ({
|
|
176
|
-
uri: `api://${e.method.toUpperCase()}${e.path}`,
|
|
177
|
-
method: e.method.toUpperCase(),
|
|
178
|
-
path: e.path,
|
|
179
|
-
summary: e.summary || e.operationId || `${e.method} ${e.path}`,
|
|
180
|
-
operationId: e.operationId,
|
|
181
|
-
})),
|
|
182
|
-
};
|
|
183
|
-
return {
|
|
184
|
-
contents: [
|
|
185
|
-
{
|
|
186
|
-
uri,
|
|
187
|
-
mimeType: 'application/json',
|
|
188
|
-
text: JSON.stringify(tagResource, null, 2),
|
|
189
|
-
},
|
|
190
|
-
],
|
|
191
|
-
};
|
|
192
|
-
}
|
|
193
|
-
// Tier 3: Handle api:// URIs - return individual endpoint details
|
|
194
|
-
if (protocol === 'api') {
|
|
195
|
-
// Parse URI format: api://METHOD/path
|
|
196
|
-
// Example: api://POST/users or api://GET/users/{id}
|
|
197
|
-
const match = remainder.match(/^([A-Z]+)(\/.*)/);
|
|
198
|
-
if (!match) {
|
|
199
|
-
throw new Error(`Invalid API URI format: ${uri}`);
|
|
200
|
-
}
|
|
201
|
-
const method = match[1];
|
|
202
|
-
const path = match[2];
|
|
203
|
-
// Find the matching endpoint
|
|
204
|
-
const endpoint = endpoints.endpoints.find((e) => e.path === path && e.method.toUpperCase() === method.toUpperCase());
|
|
205
|
-
if (!endpoint) {
|
|
206
|
-
throw new Error(`Endpoint not found: ${method} ${path}`);
|
|
207
|
-
}
|
|
208
|
-
// Reject deprecated endpoints
|
|
209
|
-
if (endpoint.deprecated) {
|
|
210
|
-
throw new Error(`Endpoint is deprecated: ${method} ${path}`);
|
|
211
|
-
}
|
|
212
|
-
// Return comprehensive endpoint information
|
|
213
|
-
return {
|
|
214
|
-
contents: [
|
|
215
|
-
{
|
|
216
|
-
uri,
|
|
217
|
-
mimeType: 'application/json',
|
|
218
|
-
text: JSON.stringify(endpoint, null, 2),
|
|
219
|
-
},
|
|
220
|
-
],
|
|
221
|
-
};
|
|
222
|
-
}
|
|
223
|
-
// Unsupported protocol
|
|
224
|
-
throw new Error(`Unsupported URI protocol: ${protocol}. Expected 'tag' or 'api'`);
|
|
28
|
+
instructions: emulateResourcesViaTools
|
|
29
|
+
? getToolEmulationInstructions(endpoints, hostname)
|
|
30
|
+
: getNativeResourceInstructions(endpoints, hostname),
|
|
225
31
|
});
|
|
32
|
+
// Register resources or emulation tools based on mode
|
|
33
|
+
if (emulateResourcesViaTools) {
|
|
34
|
+
registerEmulationTools(server, endpoints);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
registerNativeResources(server, endpoints);
|
|
38
|
+
}
|
|
226
39
|
// Register the API request tool
|
|
227
40
|
server.tool('api_request', `Make an authenticated HTTP request to any active API endpoint from the OpenAPI specification. Deprecated endpoints cannot be called and will return an error. Authentication is handled automatically using the Bearer token from the MCP request. The target API hostname is: ${hostname}
|
|
228
41
|
|
|
@@ -301,8 +114,6 @@ IMPORTANT - Pagination: Always prefer cursor-based pagination when available. Fo
|
|
|
301
114
|
// Prepare structured response with truncation
|
|
302
115
|
const responseObject = {
|
|
303
116
|
status: response.status,
|
|
304
|
-
statusText: response.statusText,
|
|
305
|
-
headers: Object.fromEntries(response.headers.entries()),
|
|
306
117
|
body: responseBody,
|
|
307
118
|
};
|
|
308
119
|
let responseText = JSON.stringify(responseObject, null, 2);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/server/factory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/server/factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,7 +31,10 @@ describe('createServer', () => {
|
|
|
31
31
|
buildDuration: 100,
|
|
32
32
|
},
|
|
33
33
|
};
|
|
34
|
-
const server = createServer(mockEndpoints,
|
|
34
|
+
const server = createServer(mockEndpoints, {
|
|
35
|
+
bearerToken: 'test-token',
|
|
36
|
+
hostname: 'http://test.example.com',
|
|
37
|
+
});
|
|
35
38
|
expect(server).toBeDefined();
|
|
36
39
|
expect(server.server).toBeDefined();
|
|
37
40
|
});
|
|
@@ -51,10 +54,13 @@ describe('createServer', () => {
|
|
|
51
54
|
buildDuration: 0,
|
|
52
55
|
},
|
|
53
56
|
};
|
|
54
|
-
const server = createServer(mockEndpoints,
|
|
57
|
+
const server = createServer(mockEndpoints, {
|
|
58
|
+
bearerToken: 'test-token',
|
|
59
|
+
hostname: 'http://test.example.com',
|
|
60
|
+
});
|
|
55
61
|
expect(server).toBeDefined();
|
|
56
62
|
});
|
|
57
|
-
it('should accept bearer token and hostname', () => {
|
|
63
|
+
it('should accept bearer token and hostname via options', () => {
|
|
58
64
|
const mockEndpoints = {
|
|
59
65
|
endpoints: [],
|
|
60
66
|
info: {
|
|
@@ -70,8 +76,60 @@ describe('createServer', () => {
|
|
|
70
76
|
buildDuration: 0,
|
|
71
77
|
},
|
|
72
78
|
};
|
|
73
|
-
const server = createServer(mockEndpoints,
|
|
79
|
+
const server = createServer(mockEndpoints, {
|
|
80
|
+
bearerToken: 'my-token',
|
|
81
|
+
hostname: 'https://api.example.com',
|
|
82
|
+
});
|
|
74
83
|
expect(server).toBeDefined();
|
|
75
84
|
});
|
|
85
|
+
it('should accept emulateResourcesViaTools=true option (tool emulation mode)', () => {
|
|
86
|
+
const mockEndpoints = {
|
|
87
|
+
endpoints: [],
|
|
88
|
+
info: {
|
|
89
|
+
title: 'Test API',
|
|
90
|
+
version: '1.0.0',
|
|
91
|
+
},
|
|
92
|
+
buildTimestamp: '2025-10-10T00:00:00Z',
|
|
93
|
+
stats: {
|
|
94
|
+
totalEndpoints: 0,
|
|
95
|
+
originalSize: 0,
|
|
96
|
+
optimizedSize: 0,
|
|
97
|
+
reductionPercent: 0,
|
|
98
|
+
buildDuration: 0,
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
const server = createServer(mockEndpoints, {
|
|
102
|
+
bearerToken: 'my-token',
|
|
103
|
+
hostname: 'https://api.example.com',
|
|
104
|
+
emulateResourcesViaTools: true,
|
|
105
|
+
});
|
|
106
|
+
expect(server).toBeDefined();
|
|
107
|
+
// Verify server was created successfully
|
|
108
|
+
expect(server.server).toBeDefined();
|
|
109
|
+
});
|
|
110
|
+
it('should default to native resources mode', () => {
|
|
111
|
+
const mockEndpoints = {
|
|
112
|
+
endpoints: [],
|
|
113
|
+
info: {
|
|
114
|
+
title: 'Test API',
|
|
115
|
+
version: '1.0.0',
|
|
116
|
+
},
|
|
117
|
+
buildTimestamp: '2025-10-10T00:00:00Z',
|
|
118
|
+
stats: {
|
|
119
|
+
totalEndpoints: 0,
|
|
120
|
+
originalSize: 0,
|
|
121
|
+
optimizedSize: 0,
|
|
122
|
+
reductionPercent: 0,
|
|
123
|
+
buildDuration: 0,
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
const server = createServer(mockEndpoints, {
|
|
127
|
+
bearerToken: 'my-token',
|
|
128
|
+
hostname: 'https://api.example.com',
|
|
129
|
+
});
|
|
130
|
+
expect(server).toBeDefined();
|
|
131
|
+
// Verify server was created successfully
|
|
132
|
+
expect(server.server).toBeDefined();
|
|
133
|
+
});
|
|
76
134
|
});
|
|
77
135
|
//# sourceMappingURL=factory.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.test.js","sourceRoot":"","sources":["../../src/server/factory.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,aAAa,GAAgB;YACjC,SAAS,EAAE;gBACT;oBACE,IAAI,EAAE,OAAO;oBACb,MAAM,EAAE,KAAK;oBACb,WAAW,EAAE,SAAS;oBACtB,OAAO,EAAE,eAAe;oBACxB,IAAI,EAAE,CAAC,MAAM,CAAC;oBACd,UAAU,EAAE,KAAK;oBACjB,UAAU,EAAE,EAAE;oBACd,SAAS,EAAE,EAAE;iBACd;aACF;YACD,IAAI,EAAE;gBACJ,KAAK,EAAE,UAAU;gBACjB,OAAO,EAAE,OAAO;aACjB;YACD,cAAc,EAAE,sBAAsB;YACtC,KAAK,EAAE;gBACL,cAAc,EAAE,CAAC;gBACjB,YAAY,EAAE,IAAI;gBAClB,aAAa,EAAE,GAAG;gBAClB,gBAAgB,EAAE,EAAE;gBACpB,aAAa,EAAE,GAAG;aACnB;SACF,CAAC;QAEF,MAAM,MAAM,GAAG,YAAY,CAAC,aAAa,EAAE,YAAY,EAAE,yBAAyB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"factory.test.js","sourceRoot":"","sources":["../../src/server/factory.test.ts"],"names":[],"mappings":"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"}
|
package/dist/server/http.d.ts
CHANGED
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
* HTTP MCP Server
|
|
3
3
|
* Runs MCP server with HTTP Streamable transport for remote access
|
|
4
4
|
*/
|
|
5
|
+
import type { HttpServerOptions } from './types.js';
|
|
5
6
|
/**
|
|
6
7
|
* Start MCP server in HTTP mode
|
|
7
8
|
* Creates Express server listening on specified port
|
|
8
9
|
*/
|
|
9
|
-
export declare function startHttpServer(
|
|
10
|
+
export declare function startHttpServer(options: HttpServerOptions): Promise<void>;
|
|
10
11
|
//# sourceMappingURL=http.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/server/http.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/server/http.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyH/E"}
|
package/dist/server/http.js
CHANGED
|
@@ -11,7 +11,8 @@ import { loadEndpoints } from './loader.js';
|
|
|
11
11
|
* Start MCP server in HTTP mode
|
|
12
12
|
* Creates Express server listening on specified port
|
|
13
13
|
*/
|
|
14
|
-
export async function startHttpServer(
|
|
14
|
+
export async function startHttpServer(options) {
|
|
15
|
+
const { port, emulateResourcesViaTools = false, } = options;
|
|
15
16
|
console.log('[HTTP Mode] Starting MCP server...');
|
|
16
17
|
const endpoints = loadEndpoints();
|
|
17
18
|
console.log(`[HTTP Mode] Loaded ${endpoints.endpoints.length} endpoints from ${endpoints.info.title} v${endpoints.info.version}`);
|
|
@@ -64,7 +65,11 @@ export async function startHttpServer(port) {
|
|
|
64
65
|
const hostname = `${protocol}://${hostnameWithoutSuffix}`;
|
|
65
66
|
console.log(`[MCP Request] Target API: ${hostname}, Method: ${req.body?.method || 'unknown'}`);
|
|
66
67
|
// Create server instance with the bearer token and hostname
|
|
67
|
-
const server = createServer(endpoints,
|
|
68
|
+
const server = createServer(endpoints, {
|
|
69
|
+
hostname,
|
|
70
|
+
bearerToken,
|
|
71
|
+
emulateResourcesViaTools,
|
|
72
|
+
});
|
|
68
73
|
try {
|
|
69
74
|
// Create stateless transport (no session management)
|
|
70
75
|
const transport = new StreamableHTTPServerTransport({
|
|
@@ -98,6 +103,7 @@ export async function startHttpServer(port) {
|
|
|
98
103
|
app.listen(port, () => {
|
|
99
104
|
console.log(`\nš MCP Server started successfully!`);
|
|
100
105
|
console.log(` Port: ${port}`);
|
|
106
|
+
console.log(` Resource mode: ${emulateResourcesViaTools ? 'Tool Emulation' : 'Native Resources'}`);
|
|
101
107
|
console.log(` Health: http://localhost:${port}/health`);
|
|
102
108
|
console.log(` MCP Endpoint Pattern: http://localhost:${port}/{hostname}[/{protocol}]`);
|
|
103
109
|
console.log(` Examples:`);
|
package/dist/server/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/server/http.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/server/http.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* This server exposes pre-processed OpenAPI endpoints as MCP resources and provides
|
|
5
5
|
* a tool for making authenticated HTTP requests to any endpoint.
|
|
6
|
+
*
|
|
7
|
+
* This is the legacy standalone server. Consider using http.ts or stdio.ts instead.
|
|
6
8
|
*/
|
|
7
9
|
export {};
|
|
8
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|