Skip to main content
Glama
test-crates-search.ts•2.73 kB
#!/usr/bin/env bun import { assertContains, callTool, type TestOptions, withMCPServer } from "./utils" const testCratesSearch = async (options: TestOptions): Promise<void> => { console.log("\nšŸ” Testing crates search functionality...") await withMCPServer(options.executable, async (server) => { // Test 1: Search for popular crate console.log("\nšŸ“¦ Test 1: Searching for 'tinc'...") const tincResponse = await callTool( server, "search_crates", { query: "tinc", limit: 5 }, 2 ) const tincText = tincResponse.result?.content?.[0]?.text || "" assertContains(tincText, "tinc", "Should find tinc crate") console.log("āœ… Found tinc crate") // Test 2: Partial match search console.log("\nšŸ“¦ Test 2: Partial match search for 'tokio'...") const partialResponse = await callTool( server, "search_crates", { query: "tokio", limit: 10 }, 3 ) const partialText = partialResponse.result?.content?.[0]?.text || "" assertContains(partialText, "tokio", "Should find tokio crate") console.log("āœ… Found tokio crate") // Test 3: Non-existent crate console.log("\nšŸ“¦ Test 3: Searching for non-existent crate...") const nonExistentResponse = await callTool( server, "search_crates", { query: "this-crate-definitely-does-not-exist-12345", limit: 5 }, 4 ) const nonExistentText = nonExistentResponse.result?.content?.[0]?.text || "" assertContains(nonExistentText, "No crates found", "Should report no crates found") console.log("āœ… Correctly handled non-existent crate") // Test 4: Special characters console.log("\nšŸ“¦ Test 4: Searching with special characters...") const specialResponse = await callTool( server, "search_crates", { query: "clap-derive", limit: 5 }, 5 ) const specialText = specialResponse.result?.content?.[0]?.text || "" if (!specialText.includes("clap_derive") && !specialText.includes("clap-derive")) { throw new Error("Should handle hyphenated names") } console.log("āœ… Special characters handled correctly") console.log("\nāœ… All crates search tests passed") }) } export const runCratesSearchTests = async (options: TestOptions): Promise<void> => { await testCratesSearch(options) } // Main execution if (import.meta.main) { const args = process.argv.slice(2) if (args.length < 2) { console.error("Usage: bun test/integration/test-crates-search.ts <executable> <target>") process.exit(1) } const [executable, target] = args const options: TestOptions = { executable, target } try { await runCratesSearchTests(options) } catch (error) { console.error(`\nāŒ Crates search tests failed: ${error}`) process.exit(1) } }

Latest Blog Posts

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/vexxvakan/mcp-docsrs'

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