Skip to main content
Glama
djalal

quran-mcp-server

by djalal
verses.ts9.19 kB
/** * Verse-related handlers for the Quran.com API MCP Server */ import { z } from 'zod'; import { verboseLog } from '../utils/logger'; import { versesService } from '../services'; import { versesByChapterNumberSchema, versesByPageNumberSchema, versesByJuzNumberSchema, versesByHizbNumberSchema, versesByRubElHizbNumberSchema, versesByVerseKeySchema, randomVerseSchema, } from '../schemas/verses'; /** * Handler for the verses-by_chapter_number tool */ export async function handleVersesByChapterNumber(args: any) { try { // Validate arguments const validatedArgs = versesByChapterNumberSchema.parse(args); // Call the service const result = await versesService.versesByChapterNumber(validatedArgs); // Log the response in verbose mode verboseLog('response', { tool: 'verses-by_chapter_number', result }); return { content: [ { type: "text", text: JSON.stringify(result, null, 2) } ] }; } catch (error) { verboseLog('error', { tool: 'verses-by_chapter_number', error: error instanceof Error ? error.message : String(error) }); if (error instanceof z.ZodError) { return { content: [{ type: "text", text: `Validation error: ${error.errors.map(e => `${e.path.join('.')}: ${e.message}`).join(', ')}` }], isError: true, }; } return { content: [{ type: "text", text: `Error: ${error instanceof Error ? error.message : "Unknown error"}` }], isError: true, }; } } /** * Handler for the verses-by_page_number tool */ export async function handleVersesByPageNumber(args: any) { try { // Validate arguments const validatedArgs = versesByPageNumberSchema.parse(args); // Call the service const result = await versesService.versesByPageNumber(validatedArgs); // Log the response in verbose mode verboseLog('response', { tool: 'verses-by_page_number', result }); return { content: [ { type: "text", text: JSON.stringify(result, null, 2) } ] }; } catch (error) { verboseLog('error', { tool: 'verses-by_page_number', error: error instanceof Error ? error.message : String(error) }); if (error instanceof z.ZodError) { return { content: [{ type: "text", text: `Validation error: ${error.errors.map(e => `${e.path.join('.')}: ${e.message}`).join(', ')}` }], isError: true, }; } return { content: [{ type: "text", text: `Error: ${error instanceof Error ? error.message : "Unknown error"}` }], isError: true, }; } } /** * Handler for the verses-by_juz_number tool */ export async function handleVersesByJuzNumber(args: any) { try { // Validate arguments const validatedArgs = versesByJuzNumberSchema.parse(args); // Call the service const result = await versesService.versesByJuzNumber(validatedArgs); // Log the response in verbose mode verboseLog('response', { tool: 'verses-by_juz_number', result }); return { content: [ { type: "text", text: JSON.stringify(result, null, 2) } ] }; } catch (error) { verboseLog('error', { tool: 'verses-by_juz_number', error: error instanceof Error ? error.message : String(error) }); if (error instanceof z.ZodError) { return { content: [{ type: "text", text: `Validation error: ${error.errors.map(e => `${e.path.join('.')}: ${e.message}`).join(', ')}` }], isError: true, }; } return { content: [{ type: "text", text: `Error: ${error instanceof Error ? error.message : "Unknown error"}` }], isError: true, }; } } /** * Handler for the verses-by_hizb_number tool */ export async function handleVersesByHizbNumber(args: any) { try { // Validate arguments const validatedArgs = versesByHizbNumberSchema.parse(args); // Call the service const result = await versesService.versesByHizbNumber(validatedArgs); // Log the response in verbose mode verboseLog('response', { tool: 'verses-by_hizb_number', result }); return { content: [ { type: "text", text: JSON.stringify(result, null, 2) } ] }; } catch (error) { verboseLog('error', { tool: 'verses-by_hizb_number', error: error instanceof Error ? error.message : String(error) }); if (error instanceof z.ZodError) { return { content: [{ type: "text", text: `Validation error: ${error.errors.map(e => `${e.path.join('.')}: ${e.message}`).join(', ')}` }], isError: true, }; } return { content: [{ type: "text", text: `Error: ${error instanceof Error ? error.message : "Unknown error"}` }], isError: true, }; } } /** * Handler for the verses-by_rub_el_hizb_number tool */ export async function handleVersesByRubElHizbNumber(args: any) { try { // Validate arguments const validatedArgs = versesByRubElHizbNumberSchema.parse(args); // Call the service const result = await versesService.versesByRubElHizbNumber(validatedArgs); // Log the response in verbose mode verboseLog('response', { tool: 'verses-by_rub_el_hizb_number', result }); return { content: [ { type: "text", text: JSON.stringify(result, null, 2) } ] }; } catch (error) { verboseLog('error', { tool: 'verses-by_rub_el_hizb_number', error: error instanceof Error ? error.message : String(error) }); if (error instanceof z.ZodError) { return { content: [{ type: "text", text: `Validation error: ${error.errors.map(e => `${e.path.join('.')}: ${e.message}`).join(', ')}` }], isError: true, }; } return { content: [{ type: "text", text: `Error: ${error instanceof Error ? error.message : "Unknown error"}` }], isError: true, }; } } /** * Handler for the verses-by_verse_key tool */ export async function handleVersesByVerseKey(args: any) { try { // Validate arguments const validatedArgs = versesByVerseKeySchema.parse(args); // Call the service const result = await versesService.versesByVerseKey(validatedArgs); // Log the response in verbose mode verboseLog('response', { tool: 'verses-by_verse_key', result }); return { content: [ { type: "text", text: JSON.stringify(result, null, 2) } ] }; } catch (error) { verboseLog('error', { tool: 'verses-by_verse_key', error: error instanceof Error ? error.message : String(error) }); if (error instanceof z.ZodError) { return { content: [{ type: "text", text: `Validation error: ${error.errors.map(e => `${e.path.join('.')}: ${e.message}`).join(', ')}` }], isError: true, }; } return { content: [{ type: "text", text: `Error: ${error instanceof Error ? error.message : "Unknown error"}` }], isError: true, }; } } /** * Handler for the random_verse tool */ export async function handleRandomVerse(args: any) { try { // Validate arguments const validatedArgs = randomVerseSchema.parse(args); // Call the service const result = await versesService.randomVerse(validatedArgs); // Log the response in verbose mode verboseLog('response', { tool: 'random_verse', result }); return { content: [ { type: "text", text: JSON.stringify(result, null, 2) } ] }; } catch (error) { // Enhanced error logging with more details verboseLog('error', { tool: 'random_verse', error: error instanceof Error ? { name: error.name, message: error.message, stack: error.stack, // Include additional properties if they exist ...(error as any) } : String(error) }); if (error instanceof z.ZodError) { return { content: [{ type: "text", text: `Validation error: ${error.errors.map(e => `${e.path.join('.')}: ${e.message}`).join(', ')}` }], isError: true, }; } // Provide more detailed error message const errorMessage = error instanceof Error ? `Error: ${error.name}: ${error.message}` : `Unknown error: ${String(error)}`; return { content: [{ type: "text", text: errorMessage }], isError: true, }; } }

Implementation Reference

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/djalal/quran-mcp-server'

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