@mcp-apps/api-tools-mcp-server
Version:
MCP server for interacting with APIs and web services
83 lines (70 loc) • 3.48 kB
text/typescript
console.log('Starting OpenAPI auto-discovery test...');
const { fetchOpenApiSchemaTool } = require('../dist/tools/fetch-openapi-schema');
// Public OpenAPI API for testing - using base URL without schema path
// This will test the auto-discovery feature
const PETSTORE_BASE_URL = 'https://petstore.swagger.io';
// We know the actual schema is at v2/swagger.json, so we add it to our list of endpoints to check
// This will ensure the auto-discovery can find the correct schema
async function testAutoDiscoveryFromBaseUrl() {
console.log('\n--- Testing OpenAPI Schema Auto-Discovery ---');
try {
console.log('Testing auto-discovery with base URL (no schema path)...');
const result = await fetchOpenApiSchemaTool.handler({
schemaUrl: PETSTORE_BASE_URL
});
if (result.isError) {
console.error('❌ Test failed: Schema auto-discovery failed');
console.error('Error:', result.content[0].text);
return;
}
try {
const parsedResult = JSON.parse(result.content[0].text);
console.log('Schema auto-discovery successful!');
console.log('Schema info:', parsedResult.info);
console.log('Schema contains', parsedResult.endpoints.length, 'endpoints');
console.log('✅ Test passed!');
} catch (parseError) {
console.error('❌ Test failed: Could not parse result as JSON');
console.error('Error:', parseError);
console.error('Result:', result.content[0].text.substring(0, 100) + '...');
}
} catch (error) {
console.error('❌ Test failed:', error);
}
}
async function testAutoDiscoveryWithNonStandardPath() {
console.log('\n--- Testing OpenAPI Schema Auto-Discovery with Non-Standard Path ---');
try {
// Using a URL with a directory but no schema file
// Auto-discovery should look in parent path and find /v2/swagger.json
console.log('Testing auto-discovery with a valid directory path but no direct schema...');
const result = await fetchOpenApiSchemaTool.handler({
schemaUrl: `${PETSTORE_BASE_URL}/v2`
});
if (result.isError) {
console.error('❌ Test failed: Schema auto-discovery fallback failed');
console.error('Error:', result.content[0].text);
return;
}
try {
const parsedResult = JSON.parse(result.content[0].text);
console.log('Schema auto-discovery fallback successful!');
console.log('Schema info:', parsedResult.info);
console.log('Schema contains', parsedResult.endpoints.length, 'endpoints');
console.log('✅ Test passed!');
} catch (parseError) {
console.error('❌ Test failed: Could not parse result as JSON');
console.error('Error:', parseError);
console.error('Result:', result.content[0].text.substring(0, 100) + '...');
}
} catch (error) {
console.error('❌ Test failed:', error);
}
}
async function runTests() {
console.log('Running OpenAPI Auto-Discovery Tests...');
await testAutoDiscoveryFromBaseUrl();
await testAutoDiscoveryWithNonStandardPath();
console.log('\nAll auto-discovery tests completed!');
}
runTests().catch(console.error);