Skip to main content
Glama

docs_rs_search_crates

Search for Rust crates on crates.io using keywords to find relevant packages for your project needs.

Instructions

Search for Rust crates by keywords on crates.io.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYesSearch keywords for finding relevant crates. Keywords should be in English.
per_pageNoNumber of results per page (default: 10, max: 100)
sortNoSort order: 'relevance', 'downloads', 'recent-downloads', 'recent-updates', 'new' (default: relevance)

Implementation Reference

  • The primary handler function that executes the tool logic: searches crates.io API with the given query, processes results into a formatted markdown response.
    private async searchCrates(args: any) { const { query, per_page = 10, sort = "relevance" } = args; try { const response = await axios.get<{ crates: any[] }>("https://crates.io/api/v1/crates", { params: { q: query, per_page: Math.min(per_page, 100), sort, }, }); const crates = response.data.crates.map((crate: any) => ({ name: crate.name, description: crate.description || "No description available", downloads: crate.downloads, version: crate.newest_version, documentation: crate.documentation, })); return { content: [ { type: "text", text: `# Crate Search Results for "${query}"\n\n${crates .map( (crate: CrateSearchResult) => `## ${crate.name} (${crate.version})\n\n` + `**Description:** ${crate.description}\n\n` + `**Downloads:** ${crate.downloads.toLocaleString()}\n\n` + `**Documentation:** ${crate.documentation || "N/A"}\n\n---\n` ) .join("\n")}`, }, ], }; } catch (error) { throw new Error(`Failed to search crates: ${error}`); } }
  • Defines the input schema for the tool, specifying parameters like query, per_page, and sort.
    type: "object", properties: { query: { type: "string", description: "Search keywords for finding relevant crates. Keywords should be in English.", }, per_page: { type: "number", description: "Number of results per page (default: 10, max: 100)", }, sort: { type: "string", description: "Sort order: 'relevance', 'downloads', 'recent-downloads', 'recent-updates', 'new' (default: relevance)", }, }, required: ["query"], },
  • src/index.ts:50-71 (registration)
    Tool registration in the ListTools response, including name, description, and schema.
    { name: "docs_rs_search_crates", description: "Search for Rust crates by keywords on crates.io.", inputSchema: { type: "object", properties: { query: { type: "string", description: "Search keywords for finding relevant crates. Keywords should be in English.", }, per_page: { type: "number", description: "Number of results per page (default: 10, max: 100)", }, sort: { type: "string", description: "Sort order: 'relevance', 'downloads', 'recent-downloads', 'recent-updates', 'new' (default: relevance)", }, }, required: ["query"], }, },
  • src/index.ts:149-150 (registration)
    Dispatches the tool call to the searchCrates handler in the CallToolRequestSchema switch.
    case "docs_rs_search_crates": return await this.searchCrates(request.params.arguments);

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/nuskey8/docs-rs-mcp'

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