Skip to main content
Glama
cswkim

Discogs MCP Server

by cswkim

search

Search the Discogs music database to find artists, labels, masters, or releases using specific criteria like title, artist, genre, year, or format.

Instructions

Issue a search query to the Discogs database

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
qNo
typeNo
titleNo
release_titleNo
creditNo
artistNo
anvNo
labelNo
genreNo
styleNo
countryNo
yearNo
formatNo
catnoNo
barcodeNo
trackNo
submitterNo
contributorNo
pageNo
per_pageNo
sortNo
sort_orderNo

Implementation Reference

  • MCP tool handler for the 'search' tool. Defines the tool with name 'search', input schema, and execute function that calls DatabaseService.search and returns JSON stringified results.
    export const searchTool: Tool<FastMCPSessionAuth, typeof SearchParamsSchema> = { name: 'search', description: 'Issue a search query to the Discogs database', parameters: SearchParamsSchema, execute: async (args) => { try { const databaseService = new DatabaseService(); const searchResults = await databaseService.search(args); return JSON.stringify(searchResults); } catch (error) { throw formatDiscogsError(error); } }, };
  • Input schema (SearchParamsSchema) for the search tool parameters, defining optional search fields like q, type, title, etc., merged with query params.
    export const SearchParamsSchema = z .object({ q: z.string().optional(), type: z.enum(['artist', 'label', 'master', 'release']).optional(), title: z.string().optional(), release_title: z.string().optional(), credit: z.string().optional(), artist: z.string().optional(), anv: z.string().optional(), label: z.string().optional(), genre: z.string().optional(), style: z.string().optional(), country: z.string().optional(), year: z.string().optional(), format: z.string().optional(), catno: z.string().optional(), barcode: z.string().optional(), track: z.string().optional(), submitter: z.string().optional(), contributor: z.string().optional(), }) .merge(QueryParamsSchema(['title', 'artist', 'year']));
  • Function to register all database-related tools, including server.addTool(searchTool) for the search tool.
    export function registerDatabaseTools(server: FastMCP): void { server.addTool(getReleaseTool); server.addTool(getReleaseRatingTool); server.addTool(editReleaseRatingTool); server.addTool(deleteReleaseRatingTool); server.addTool(getReleaseCommunityRatingTool); server.addTool(getMasterReleaseTool); server.addTool(getMasterReleaseVersionsTool); server.addTool(getArtistTool); server.addTool(getArtistReleasesTool); server.addTool(getLabelTool); server.addTool(getLabelReleasesTool); server.addTool(searchTool); }
  • Helper method in DatabaseService that performs the actual search request to Discogs API endpoint '/database/search', validates response with SearchResultsSchema.
    async search(params: SearchParams): Promise<SearchResults> { try { const response = await this.request<SearchResults>('/search', { params }); const validatedResponse = SearchResultsSchema.parse(response); return validatedResponse; } catch (error) { if (isDiscogsError(error)) { throw error; } throw new Error(`Failed to search database: ${String(error)}`); } }

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/cswkim/discogs-mcp-server'

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