@mcp-apps/api-tools-mcp-server
Version:
MCP server for interacting with APIs and web services
94 lines (84 loc) • 3.72 kB
text/typescript
import { fetchOpenApiSchemaTool } from '../src/tools/fetch-openapi-schema';
import { getOpenApiEndpointsTool } from '../src/tools/get-openapi-endpoints';
import { getOpenApiOperationsTool } from '../src/tools/get-openapi-operations';
import { getOpenApiOperationDetailsTool } from '../src/tools/get-openapi-operation-details';
// Public OpenAPI API for testing
const PETSTORE_API_URL = 'https://petstore.swagger.io/v2/swagger.json';
async function testFetchOpenApiSchema() {
console.log('\n--- Testing fetch_openapi_schema tool ---');
try {
const result = await fetchOpenApiSchemaTool.handler({
schemaUrl: PETSTORE_API_URL
});
console.log('Schema info:', JSON.parse(result.content[0].text).info);
console.log('Schema contains', JSON.parse(result.content[0].text).endpoints.length, 'endpoints');
console.log('✅ Test passed!');
} catch (error) {
console.error('❌ Test failed:', error);
}
}
async function testGetOpenApiEndpoints() {
console.log('\n--- Testing get_openapi_endpoints tool ---');
try {
const result = await getOpenApiEndpointsTool.handler({
schemaUrl: PETSTORE_API_URL
});
const endpoints = JSON.parse(result.content[0].text);
console.log(`Found ${endpoints.length} endpoints:`);
endpoints.slice(0, 3).forEach((endpoint: any) => {
console.log(`- ${endpoint.path} (${endpoint.methods.map((m: any) => m.method).join(', ')})`);
});
if (endpoints.length > 3) {
console.log(`...and ${endpoints.length - 3} more`);
}
console.log('✅ Test passed!');
} catch (error) {
console.error('❌ Test failed:', error);
}
}
async function testGetOpenApiOperations() {
console.log('\n--- Testing get_openapi_operations tool ---');
try {
const result = await getOpenApiOperationsTool.handler({
schemaUrl: PETSTORE_API_URL,
path: '/pet'
});
const operations = JSON.parse(result.content[0].text);
console.log(`Found ${operations.length} operations for /pet endpoint:`);
operations.forEach((op: any) => {
console.log(`- ${op.method} (operationId: ${op.operationId}): ${op.summary}`);
});
console.log('✅ Test passed!');
} catch (error) {
console.error('❌ Test failed:', error);
}
}
async function testGetOpenApiOperationDetails() {
console.log('\n--- Testing get_openapi_operation_details tool ---');
try {
const result = await getOpenApiOperationDetailsTool.handler({
schemaUrl: PETSTORE_API_URL,
operationId: 'getPetById'
});
const details = JSON.parse(result.content[0].text);
console.log(`Found operation details for '${details.operation.operationId}':`);
console.log(`- Path: ${details.operation.path}`);
console.log(`- Method: ${details.operation.method}`);
console.log(`- Summary: ${details.operation.summary}`);
console.log('Sample request:');
console.log(`- URL: ${details.sample.url}`);
console.log(`- Method: ${details.sample.method}`);
console.log('✅ Test passed!');
} catch (error) {
console.error('❌ Test failed:', error);
}
}
async function runTests() {
console.log('Running OpenAPI tool tests...');
await testFetchOpenApiSchema();
await testGetOpenApiEndpoints();
await testGetOpenApiOperations();
await testGetOpenApiOperationDetails();
console.log('\nAll tests completed!');
}
runTests().catch(console.error);