Skip to main content
Glama

Claudeus WordPress MCP

by deus-h
handlers.ts3.44 kB
import { ShopAPI } from '../../api/shop.js'; import { ProductFilters, OrderFilters, SalesFilters } from '../../types/index.js'; import { DEFAULT_SITE } from '../../config.js'; export async function handleShopTools(name: string, args: Record<string, unknown>, shopAPI: ShopAPI) { // Debug logging console.error('Debug - Tool name:', name); console.error('Debug - Args:', JSON.stringify(args, null, 2)); // Always set the default site args = { site: DEFAULT_SITE, ...args }; console.error('Debug - Args after default:', JSON.stringify(args, null, 2)); console.error('Debug - Filters:', JSON.stringify(args.filters, null, 2)); // Helper function to parse filters const parseFilters = (filters: unknown) => { if (typeof filters === 'string') { try { return JSON.parse(filters); } catch (error: unknown) { const e = error as Error; throw new Error(`Invalid filters format: ${e.message}`); } } return filters; }; switch (name) { case 'claudeus_wp_shop__get_products': { const filters = parseFilters(args.filters); const response = await shopAPI.getProducts(filters as ProductFilters); const totalProducts = parseInt(response.headers['x-wp-total'] || '0'); const totalPages = parseInt(response.headers['x-wp-totalpages'] || '1'); return { content: [{ type: "text", text: JSON.stringify({ data: response.data, pagination: { total: totalProducts, totalPages: totalPages, currentPage: (filters as ProductFilters)?.page || 1, perPage: (filters as ProductFilters)?.per_page || 10 } }, null, 2) }] }; } case 'claudeus_wp_shop__get_orders': { const filters = parseFilters(args.filters); const response = await shopAPI.getOrders(filters as OrderFilters); const totalOrders = parseInt(response.headers['x-wp-total'] || '0'); const totalPages = parseInt(response.headers['x-wp-totalpages'] || '1'); return { content: [{ type: "text", text: JSON.stringify({ data: response.data, pagination: { total: totalOrders, totalPages: totalPages, currentPage: (filters as OrderFilters)?.page || 1, perPage: (filters as OrderFilters)?.per_page || 10 } }, null, 2) }] }; } case 'claudeus_wp_shop__get_sales': { const filters = parseFilters(args.filters); const response = await shopAPI.getSalesStats(filters as SalesFilters); return { content: [{ type: "text", text: JSON.stringify(response.data, null, 2) }] }; } default: throw new Error(`Unknown shop tool: ${name}`); } }

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/deus-h/claudeus-wp-mcp'

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