Skip to main content
Glama

MCP-NOSTR

by pablof7z
list_snippets.ts3.06 kB
import { z } from "zod"; import type { CodeSnippet, FindSnippetsParams } from "../lib/types/index.js"; import { getSnippets } from "../lib/nostr/snippets.js"; import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { toMetadataString } from "../lib/converters/index.js"; /** * List snippets with metadata * @param params Parameters to filter snippets * @returns List of snippet metadata */ export async function listSnippets( params: FindSnippetsParams = {} ): Promise<{ content: Array<{ type: "text", text: string }> }> { try { const result = await getSnippets(params); let list = result.snippets .map(toMetadataString) .join("\n\n------------------\n\n"); const extra = result.otherSnippets .map(toMetadataString) .join("\n\n------------------\n\n"); // Include partial matches if they exist if (result.otherSnippets.length > 0) { list += "\n\nSome other events not included in this result since they had less in common with your search, here is a list of the events that had partial matches:\n\n"; list += extra; } if (list.length === 0) { return { content: [ { type: "text", text: "No snippets found", }, ], }; } return { content: [ { type: "text", text: list, }, ], }; } catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : String(error); throw new Error(`Failed to list snippets: ${errorMessage}`); } } export function addListSnippetsCommand(server: McpServer) { server.tool( "list_snippets", "List code snippets metadata (without code content) with filtering by language and tags. Use this to get a large list of available code snippets.", { since: z .number() .optional() .describe("Fetch snippets newer than this timestamp"), until: z .number() .optional() .describe("Fetch snippets older than this timestamp"), authors: z .array(z.string()) .optional() .describe( "List of author names to filter by (in username format!)" ), languages: z .array(z.string()) .optional() .describe("List of programming languages to filter by"), tags: z .array(z.string()) .optional() .describe( "List of tags to filter by, be exhaustive, e.g. [ 'ndk', 'nostr', 'pubkey', 'signer' ], we use OR matches" ), }, async (args) => listSnippets(args) ); }

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/pablof7z/mcp-code'

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