{
    "name": "Frank Feruch MCP Server",
    "version": "1.0.0",
    "description": "MCP server providing access to Frank Feruch content",
    "protocol": "2025-06-18",
    "endpoints": {
        "http": "https://frankferuch.com/wp-json/mcp/v1"
    },
    "capabilities": {
        "tools": {
            "listChanged": false
        },
        "resources": {
            "subscribe": false,
            "listChanged": false
        },
        "prompts": {
            "listChanged": false
        }
    },
    "tools": [
        {
            "name": "search_content",
            "description": "Search website content by keywords. Returns matching posts, pages, and other content with relevance scores.",
            "inputSchema": {
                "type": "object",
                "properties": {
                    "query": {
                        "type": "string",
                        "description": "Search query keywords"
                    },
                    "limit": {
                        "type": "integer",
                        "description": "Maximum number of results (default: 10, max: 50)",
                        "default": 10
                    },
                    "post_type": {
                        "type": "string",
                        "description": "Filter by post type (post, page, or all)",
                        "enum": [
                            "post",
                            "page",
                            "all"
                        ],
                        "default": "all"
                    }
                },
                "required": [
                    "query"
                ]
            }
        },
        {
            "name": "get_post",
            "description": "Get full content of a specific post or page by ID or slug. Returns title, content, metadata, and related information.",
            "inputSchema": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "Post ID"
                    },
                    "slug": {
                        "type": "string",
                        "description": "Post slug (URL-friendly name)"
                    },
                    "format": {
                        "type": "string",
                        "description": "Output format",
                        "enum": [
                            "markdown",
                            "html",
                            "plain"
                        ],
                        "default": "markdown"
                    }
                }
            }
        },
        {
            "name": "list_posts",
            "description": "List recent posts with optional filtering by category, tag, or date range.",
            "inputSchema": {
                "type": "object",
                "properties": {
                    "limit": {
                        "type": "integer",
                        "description": "Number of posts to return (default: 10, max: 100)",
                        "default": 10
                    },
                    "offset": {
                        "type": "integer",
                        "description": "Number of posts to skip",
                        "default": 0
                    },
                    "category": {
                        "type": "string",
                        "description": "Filter by category slug"
                    },
                    "tag": {
                        "type": "string",
                        "description": "Filter by tag slug"
                    },
                    "orderby": {
                        "type": "string",
                        "description": "Order by field",
                        "enum": [
                            "date",
                            "title",
                            "modified",
                            "relevance"
                        ],
                        "default": "date"
                    },
                    "order": {
                        "type": "string",
                        "description": "Sort order",
                        "enum": [
                            "asc",
                            "desc"
                        ],
                        "default": "desc"
                    }
                }
            }
        },
        {
            "name": "get_site_info",
            "description": "Get information about the website including name, description, structure, and available content types.",
            "inputSchema": {
                "type": "object",
                "properties": []
            }
        },
        {
            "name": "get_categories",
            "description": "Get all categories with post counts.",
            "inputSchema": {
                "type": "object",
                "properties": {
                    "hide_empty": {
                        "type": "boolean",
                        "description": "Hide categories with no posts",
                        "default": true
                    }
                }
            }
        },
        {
            "name": "get_tags",
            "description": "Get all tags with post counts.",
            "inputSchema": {
                "type": "object",
                "properties": {
                    "limit": {
                        "type": "integer",
                        "description": "Maximum number of tags to return",
                        "default": 50
                    },
                    "orderby": {
                        "type": "string",
                        "description": "Order by field",
                        "enum": [
                            "name",
                            "count"
                        ],
                        "default": "count"
                    }
                }
            }
        },
        {
            "name": "get_related_posts",
            "description": "Get posts related to a specific post based on shared categories and tags.",
            "inputSchema": {
                "type": "object",
                "properties": {
                    "post_id": {
                        "type": "integer",
                        "description": "Post ID to find related content for"
                    },
                    "limit": {
                        "type": "integer",
                        "description": "Number of related posts to return",
                        "default": 5
                    }
                },
                "required": [
                    "post_id"
                ]
            }
        }
    ],
    "resources": [
        {
            "uri": "site://sitemap",
            "name": "Site Map",
            "description": "Complete site structure and navigation",
            "mimeType": "text/markdown"
        },
        {
            "uri": "site://about",
            "name": "About This Site",
            "description": "Site description, purpose, and key information",
            "mimeType": "text/markdown"
        },
        {
            "uri": "site://recent",
            "name": "Recent Content",
            "description": "List of recently published content",
            "mimeType": "text/markdown"
        },
        {
            "uri": "post://229",
            "name": "The Real Cost of Building Apps Without Dev Knowledge",
            "description": "Vibe coding makes building an app feel as easy as ordering pizza: type a prompt, click accept, and ship it.&hellip;",
            "mimeType": "text/markdown"
        },
        {
            "uri": "post://231",
            "name": "\ud83c\udfb5 Welcome to the Era of Vibe Coding",
            "description": "Imagine telling your computer \"make me an app, but like... make it feel cozy\" \u2014 and it just... does it.&hellip;",
            "mimeType": "text/markdown"
        },
        {
            "uri": "post://239",
            "name": "Building a Simple MCP Server in Drupal 10: A Full-Stack Developer's Guide",
            "description": "By a Drupal Full-Stack Developer &amp; Solution Architect \u00a0|\u00a0 Drupal 10 / 11 \u00a0|\u00a0 March 2026 Table of Contents What&hellip;",
            "mimeType": "text/markdown"
        },
        {
            "uri": "post://195",
            "name": "RAG AI Search: Building a Contextual Answer Layer on Top of Drupal's Search API",
            "description": "There's a problem I kept running into on enterprise and government Drupal builds: users searching a content-heavy site and getting&hellip;",
            "mimeType": "text/markdown"
        },
        {
            "uri": "post://241",
            "name": "How AI Is Transforming Wine Production \u2014 From Vineyard to Glass",
            "description": "The wine industry has always blended tradition with innovation \u2014 and today, artificial intelligence is becoming one of the most&hellip;",
            "mimeType": "text/markdown"
        },
        {
            "uri": "post://219",
            "name": "More traffic. More sales. No tech headaches. Web & AI solutions \u2014 FREE consult.",
            "description": "Tri-Cities, WA &nbsp;&middot;&nbsp; Web &amp; AI SolutionsYour website should beworking harder than you.Custom websites, SEO &amp; AI automation &mdash; built&hellip;",
            "mimeType": "text/markdown"
        },
        {
            "uri": "post://65",
            "name": "Contact",
            "description": "&nbsp; [forminator_form id=\"15\"]",
            "mimeType": "text/markdown"
        },
        {
            "uri": "post://28",
            "name": "About",
            "description": "frankferuch.com Frank Feruch Solutions Architect &nbsp;&middot;&nbsp; Principal Developer &nbsp;&middot;&nbsp; Technical Account Manager Enterprise platform specialist with 15+ years delivering secure,&hellip;",
            "mimeType": "text/markdown"
        },
        {
            "uri": "post://2",
            "name": "Welcome",
            "description": "Senior Architect &amp; AI Solutions Developer 15+ years building enterprise platforms for federal agencies, Fortune 500 companies, and leading institutions.&hellip;",
            "mimeType": "text/markdown"
        },
        {
            "uri": "post://185",
            "name": "The AI Ready Enterprise",
            "description": "New Release \u00b7 Enterprise &amp; AI Your team is using AI.But they're not using it well. Ad hoc usage. No&hellip;",
            "mimeType": "text/markdown"
        },
        {
            "uri": "post://68",
            "name": "AI RAG Search",
            "description": "Below is a WordPress implementation of a Retrieval-Augmented Generation (RAG) search system that pulls information directly from your website content.&hellip;",
            "mimeType": "text/markdown"
        },
        {
            "uri": "post://24",
            "name": "Making Your Website LLM-Ready: A Complete Technical Guide",
            "description": "A comprehensive guide to AI discovery files, Model Context Protocol (MCP), structured data, and rate limiting strategies for optimal LLM&hellip;",
            "mimeType": "text/markdown"
        },
        {
            "uri": "post://90",
            "name": "test",
            "description": "[ai_search]",
            "mimeType": "text/markdown"
        },
        {
            "uri": "post://32",
            "name": "Posts",
            "description": "Catch up on what\u2019s new! Here\u2019s a list of our latest posts and updates",
            "mimeType": "text/markdown"
        },
        {
            "uri": "post://63",
            "name": "RAG Search",
            "description": "[ai_search]",
            "mimeType": "text/markdown"
        },
        {
            "uri": "post://46",
            "name": "Rate Limiting with Apache 2: A Practical Guide to Protecting Your Web Applications",
            "description": "Rate limiting is one of the most effective defensive measures you can implement to protect web applications from abuse, brute&hellip;",
            "mimeType": "text/markdown"
        },
        {
            "uri": "post://52",
            "name": "Resume",
            "description": "Download My Resume Get a copy of my full resume with 15+ years of enterprise platform experience, federal engagements, and&hellip;",
            "mimeType": "text/markdown"
        }
    ],
    "prompts": [
        {
            "name": "summarize_content",
            "description": "Generate a summary of specific content or the entire site",
            "arguments": [
                {
                    "name": "topic",
                    "description": "Topic or section to summarize (optional)",
                    "required": false
                },
                {
                    "name": "length",
                    "description": "Summary length: brief, standard, or detailed",
                    "required": false
                }
            ]
        },
        {
            "name": "find_information",
            "description": "Find specific information on the site",
            "arguments": [
                {
                    "name": "question",
                    "description": "The question to answer",
                    "required": true
                }
            ]
        },
        {
            "name": "compare_content",
            "description": "Compare two or more pieces of content",
            "arguments": [
                {
                    "name": "items",
                    "description": "Comma-separated list of post IDs or slugs to compare",
                    "required": true
                }
            ]
        }
    ]
}