Skip to main content
Glama

MCP Advisor

MIT License
88
64
  • Apple
  • Linux
rerankMcpService.cases.ts6.07 kB
import type { MCPServerResponse } from '../../../types/index.js'; interface ProviderResult { providerName: string; results: MCPServerResponse[]; } export type RerankTestCase = [ /* title */ string, /* provider results */ ProviderResult[], /* options */ Record<string, any>, /* expected titles */ string[] ]; export const caseTable: RerankTestCase[] = [ [ 'sorts by similarity descending', [ { providerName: 'Provider1', results: [ { title: 'Lower Similarity', description: '', sourceUrl: 'url-low', similarity: 0.75, } as MCPServerResponse, ], }, { providerName: 'Provider2', results: [ { title: 'Higher Similarity', description: '', sourceUrl: 'url-high', similarity: 0.9, } as MCPServerResponse, ], }, ], {}, ['Higher Similarity', 'Lower Similarity'], ], [ 'deduplicates using higher similarity then provider priority', [ { providerName: 'Provider1', results: [ { title: 'Duplicate', description: '', sourceUrl: 'same-url', similarity: 0.8, } as MCPServerResponse, ], }, { providerName: 'Provider2', results: [ { title: 'Duplicate', description: '', sourceUrl: 'same-url', similarity: 0.8, } as MCPServerResponse, ], }, ], {}, ['Duplicate'], ], [ 'applies minSimilarity filter', [ { providerName: 'Provider1', results: [ { title: 'Below Threshold', description: '', sourceUrl: 'url-below', similarity: 0.3, } as MCPServerResponse, { title: 'Above Threshold', description: '', sourceUrl: 'url-above', similarity: 0.7, } as MCPServerResponse, ], }, ], { minSimilarity: 0.5 }, ['Above Threshold'], ], [ 'respects limit option', [ { providerName: 'Provider1', results: new Array(5).fill(null).map((_, idx) => ({ title: `Server ${idx}`, description: '', sourceUrl: `url-${idx}`, similarity: 1 - idx * 0.1, })) as MCPServerResponse[], }, ], { limit: 3 }, ['Server 0', 'Server 1', 'Server 2'], ], [ 'respects limit option', [ { providerName: 'Provider1', results: [ { title: 'Result 1', description: '', sourceUrl: 'url-1', similarity: 0.9, } as MCPServerResponse, { title: 'Result 2', description: '', sourceUrl: 'url-2', similarity: 0.8, } as MCPServerResponse, { title: 'Result 3', description: '', sourceUrl: 'url-3', similarity: 0.7, } as MCPServerResponse, ], }, ], { limit: 2 }, ['Result 1', 'Result 2'], ], [ 'uses existing score field when present', [ { providerName: 'Provider1', results: [ { title: 'High Score', description: '', sourceUrl: 'url-high-score', similarity: 0.5, // Lower similarity score: 0.95, // But higher score } as MCPServerResponse, { title: 'Low Score', description: '', sourceUrl: 'url-low-score', similarity: 0.9, // Higher similarity score: 0.3, // But lower score } as MCPServerResponse, ], }, ], {}, ['High Score', 'Low Score'], // Should sort by score, not similarity ], [ 'calculates score from providerPriority * similarity when score is missing', [ { providerName: 'Provider1', // Priority 1 results: [ { title: 'Provider1 Result', description: '', sourceUrl: 'url-p1', similarity: 0.8, // Score will be 1 * 0.8 = 0.8 } as MCPServerResponse, ], }, { providerName: 'Provider2', // Priority 2 results: [ { title: 'Provider2 Result', description: '', sourceUrl: 'url-p2', similarity: 0.6, // Score will be 2 * 0.6 = 1.2 } as MCPServerResponse, ], }, ], {}, ['Provider2 Result', 'Provider1 Result'], // Provider2 should rank higher due to calculated score ], [ 'applies minScore filter correctly', [ { providerName: 'Provider1', results: [ { title: 'High Score Result', description: '', sourceUrl: 'url-high', similarity: 0.9, score: 0.8, } as MCPServerResponse, { title: 'Low Score Result', description: '', sourceUrl: 'url-low', similarity: 0.7, score: 0.3, } as MCPServerResponse, ], }, ], { minScore: 0.5 }, ['High Score Result'], // Only high score result should pass the filter ], [ 'backward compatibility: minSimilarity works as minScore fallback', [ { providerName: 'Provider1', results: [ { title: 'High Similarity', description: '', sourceUrl: 'url-high', similarity: 0.8, } as MCPServerResponse, { title: 'Low Similarity', description: '', sourceUrl: 'url-low', similarity: 0.3, } as MCPServerResponse, ], }, ], { minSimilarity: 0.5 }, // Should filter based on similarity when no score present ['High Similarity'], ], ];

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/istarwyh/mcpadvisor'

If you have feedback or need assistance with the MCP directory API, please join our Discord server