{"id":44383,"date":"2025-10-16T10:17:42","date_gmt":"2025-10-16T04:47:42","guid":{"rendered":"https:\/\/mobisoftinfotech.com\/resources\/?p=44383"},"modified":"2026-03-12T14:16:58","modified_gmt":"2026-03-12T08:46:58","slug":"ai-agent-development-custom-mcp-server-code-review","status":"publish","type":"post","link":"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review","title":{"rendered":"AI Agent Development Example with Custom MCP Server: Build A Code Review Agent &#8211; Part I"},"content":{"rendered":"<p>Using MCP servers can make your AI agents intelligent and more rooted in the context of the task, which is why many organizations invest in <a href=\"https:\/\/mobisoftinfotech.com\/services\/mcp-server-development-consultation\">MCP server development.<\/a> This ensures that the LLM model gets right context about your task so that it can produce results specific to your goals.<\/p>\n\n\n\n<p>In this comprehensive guide, we&#8217;ll demonstrate AI agent development by building a practical example: a code review agent that integrates with Claude Desktop using the Model Context Protocol (MCP). Through this hands-on MCP development tutorial, you&#8217;ll learn how to create AI agents for software development that can&nbsp; &nbsp; &nbsp; automatically detect your project&#8217;s programming language, load appropriate review checklists, and provide structured feedback.<\/p>\n\n\n\n<p>By the end of this guide, you&#8217;ll understand the fundamentals of building AI agents and have a fully functional code review tool that you can customize for your team&#8217;s specific needs or adapt for entirely different use cases.<\/p>\n\n\n\n<p>Explore more about MCP and its role in AI systems:<a href=\"https:\/\/mobisoftinfotech.com\/services\/mcp-server-development-consultation?utm_source=blog&amp;utm_campaign=ai-agent-development-custom-mcp-server-code-review\"> Learn more about MCP and its role in AI systems here<\/a><\/p>\n\n\n\n<p><strong>What we will build:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A code review agent that works with Claude Desktop<\/li>\n\n\n\n<li>Automatic technology detection for Python, JavaScript, Java, Go, Rust, and TypeScript<\/li>\n\n\n\n<li>Customizable review checklists with security, quality, and performance checks<\/li>\n\n\n\n<li>Pattern-based code analysis using regular expressions<\/li>\n\n\n\n<li>Real-time progress tracking during reviews<\/li>\n<\/ul>\n\n\n\n<p><b>Time required: <\/b><span style=\"font-weight: 400;\">30-45 minutes<\/span><\/p>\n<p><b>Skill level:<\/b><span style=\"font-weight: 400;\"> Intermediate Python knowledge<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Prerequisites:<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Python 3.11 or higher installed<\/li>\n\n\n\n<li>Claude Desktop application<\/li>\n\n\n\n<li>Basic command line familiarity<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong><strong>Understanding AI Agent Development Through a Code Review Implementation<\/strong><\/strong><\/h2>\n\n\n\n<p>Before we dive in, let&#8217;s clarify exactly how this code review system works:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong><strong>How the Code Review Process Works in Our AI Agent<\/strong><\/strong><\/h3>\n\n\n\n<p>Our implementation uses static code analysis, not AI-based code review. Here&#8217;s what happens:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Pattern Matching: <\/strong>Devs create a YAML checklist containing regex patterns based on specific requirements. The system used this checklist to check flag errors line by line (e.g., eval(, hardcoded passwords, console.log).<\/li>\n\n\n\n<li><strong>File Validation: <\/strong>Checks if required files exist (e.g., requirements.txt, package.json)<\/li>\n\n\n\n<li><strong>Static Analysis: <\/strong>No actual code execution &#8211; just text pattern matching<\/li>\n<\/ol>\n\n\n\n<p>Discover more about AI solutions for businesses:<a href=\"https:\/\/mobisoftinfotech.com\/services\/artificial-intelligence?utm_source=blog&amp;utm_campaign=ai-agent-development-custom-mcp-server-code-review\"> Check out our AI services for businesses to explore custom AI solutions.<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong><strong>The AI Agent&#8217;s Role: How Claude Orchestrates MCP Tools<\/strong><\/strong><\/h3>\n\n\n\n<p>Claude&#8217;s role is limited to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Natural Language Interface: <\/strong>You can ask &#8220;review my Python code&#8221; instead of calling command-line tools<\/li>\n\n\n\n<li><strong>Tool Orchestration:<\/strong> Claude decides which MCP server development tools to call based on your request<\/li>\n\n\n\n<li><strong>Result Presentation:<\/strong> Claude formats and explains the findings in conversational language<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/mobisoftinfotech.com\/services\/mcp-server-development-consultation?utm_source=blog_cta&amp;utm_campaign=ai-agent-development-custom-mcp-server-code-review\"><noscript><img decoding=\"async\" width=\"855\" height=\"363\" src=\"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/seamlessly-connect-ai-agents-mcp-development.png\" alt=\"Seamlessly connect artificial intelligence agents to your systems using custom MCP development\" class=\"wp-image-44397\" title=\"Seamlessly Connect Your AI to Everything with MCP Development\"><\/noscript><img decoding=\"async\" width=\"855\" height=\"363\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20855%20363%22%3E%3C%2Fsvg%3E\" alt=\"Seamlessly connect artificial intelligence agents to your systems using custom MCP development\" class=\"wp-image-44397 lazyload\" title=\"Seamlessly Connect Your AI to Everything with MCP Development\" data-src=\"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/seamlessly-connect-ai-agents-mcp-development.png\"><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong><strong>What This Means for AI Agent Development<\/strong><\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Regex patterns do the actual code review you define in YAML files<\/li>\n\n\n\n<li><strong>Not AI-based:<\/strong> Claude doesn&#8217;t analyze your code semantically or understand logic<\/li>\n\n\n\n<li><strong>Pattern-based: <\/strong>You define what to look for (like &#8220;find all eval() calls&#8221;)<\/li>\n\n\n\n<li><strong>Customizable:<\/strong> You control exactly what gets checked by editing YAML checklists<\/li>\n\n\n\n<li><strong>Deterministic:<\/strong> Same code always produces the same results (no AI variability)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong><strong>Why Building AI Agents with MCP This Way Is Effective ?<\/strong><\/strong><\/h3>\n\n\n\n<p>This hybrid approach gives you:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Control: <\/strong>You define the exact rules via YAML checklists<\/li>\n\n\n\n<li><strong>Speed: <\/strong>Pattern matching is fast, no AI inference needed for scanning<\/li>\n\n\n\n<li><strong>Consistency: <\/strong>Deterministic results every time<\/li>\n\n\n\n<li><strong>Extensibility:<\/strong> Easy to add new checks without AI training<\/li>\n\n\n\n<li><strong>Convenience: <\/strong>Natural language interface via Claude Desktop<\/li>\n<\/ul>\n\n\n\n<p>Think of it as linting rules + Claude&#8217;s conversational interface. You&#8217;re essentially building an AI agent with MCP that runs as a customizable linter through natural conversation.<\/p>\n\n\n\n<p>Learn how consulting can optimize AI agent workflows:<a href=\"https:\/\/mobisoftinfotech.com\/services\/ai-strategy-consulting?utm_source=blog&amp;utm_campaign=ai-agent-development-custom-mcp-server-code-review\"> AI Strategy Consulting Services<\/a><\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Table of Contents<\/strong><\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"#toc-6\">Understanding the Model Context Protocol<\/a><\/li>\n\n\n\n<li><a href=\"#toc-10\">Project Architecture<\/a><\/li>\n\n\n\n<li><a href=\"#toc-11\">Setting Up the Project<\/a><\/li>\n\n\n\n<li><a href=\"#toc-15\">Building the Technology Detector<\/a><\/li>\n\n\n\n<li><a href=\"#toc-20\">Building the Validation System<\/a><\/li>\n\n\n\n<li><a href=\"#toc-37\">Building the Progress Tracker<\/a><\/li>\n\n\n\n<li><a href=\"#toc-42\">Building the Checklist Engine<\/a><\/li>\n\n\n\n<li><a href=\"#toc-47\">Creating YAML Checklists<\/a><\/li>\n<\/ol>\n\n\n\n<p>Continue to Part 2 for MCP server development, testing, and deployment.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Understanding the Model Context Protocol<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><noscript><img decoding=\"async\" width=\"855\" height=\"340\" src=\"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/ai-agent-architecture-diagram-mcp-server.png\" alt=\"Architecture diagram of AI Agent Development and MCP Server integration for software automation\" class=\"wp-image-44398\" title=\"AI Agent Architecture with Custom MCP Server Integration\"><\/noscript><img decoding=\"async\" width=\"855\" height=\"340\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20855%20340%22%3E%3C%2Fsvg%3E\" alt=\"Architecture diagram of AI Agent Development and MCP Server integration for software automation\" class=\"wp-image-44398 lazyload\" title=\"AI Agent Architecture with Custom MCP Server Integration\" data-src=\"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/ai-agent-architecture-diagram-mcp-server.png\"><\/figure>\n\n\n\n<p>Before we dive into AI Agent Development, let&#8217;s understand what MCP is and why it matters.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What is MCP?<\/strong><\/h3>\n\n\n\n<p>The Model Context Protocol is an open standard developed by Anthropic. It is used for smoothly connecting artificial intelligence agents with external data sources and forms the foundation for modern MCP software development. In simple terms, it\u2019s a bridge that lets your AI talk to external tools or data sources.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Why does MCP matter?<\/strong><\/h3>\n\n\n\n<p>Without MCP, every integration between AI Agents and your development tools would need custom code. MCP provides<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A standard way to expose tools to artificial intelligence agents<\/li>\n\n\n\n<li>Secure, local execution of code analysis<\/li>\n\n\n\n<li>Bidirectional communication between Claude and your tools<\/li>\n\n\n\n<li>Extensibility for custom integrations<\/li>\n<\/ul>\n\n\n\n<p>For advanced AI agent examples, see:<a href=\"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-machine-learning\/custom-ai-agent-development-crew-ai-framework?utm_source=blog&amp;utm_campaign=ai-agent-development-custom-mcp-server-code-review\"> Custom AI Agent Development<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>How it works<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><noscript><img decoding=\"async\" width=\"855\" height=\"340\" src=\"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/mcp-server-interaction-with-ai-agents.png\" alt=\"MCP Server Development interaction process with artificial intelligence agents for efficient automation\" class=\"wp-image-44399\" title=\"MCP Server Interaction with AI Agents for Smarter Development\"><\/noscript><img decoding=\"async\" width=\"855\" height=\"340\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20855%20340%22%3E%3C%2Fsvg%3E\" alt=\"MCP Server Development interaction process with artificial intelligence agents for efficient automation\" class=\"wp-image-44399 lazyload\" title=\"MCP Server Interaction with AI Agents for Smarter Development\" data-src=\"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/mcp-server-interaction-with-ai-agents.png\"><\/figure>\n\n\n\n<p>The flow is straightforward:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>You interact with the Claude Desktop<\/li>\n\n\n\n<li>Claude identifies when it needs to use your MCP tools<\/li>\n\n\n\n<li>Claude sends a request to your MCP server<\/li>\n\n\n\n<li>Your MCP server executes the code review<\/li>\n\n\n\n<li>Results are sent back to Claude<\/li>\n\n\n\n<li>Claude presents the findings in natural language<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Project Architecture<\/strong><\/h3>\n\n\n\n<p>Our code review agent consists of several components that work together:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">mcp-code-reviewer\/\n\u251c\u2500\u2500 main.py                      <span class=\"hljs-comment\"># MCP server with tool definitions<\/span>\n\u251c\u2500\u2500 technology_detector.py       <span class=\"hljs-comment\"># Detects project programming language<\/span>\n\u251c\u2500\u2500 checklist_engine.py          <span class=\"hljs-comment\"># Orchestrates the review process<\/span>\n\u251c\u2500\u2500 validators\/\n\u2502   \u251c\u2500\u2500 __init__.py\n\u2502   \u251c\u2500\u2500 base_validator.py        <span class=\"hljs-comment\"># Base class for all validators<\/span>\n\u2502   \u251c\u2500\u2500 pattern_validator.py     <span class=\"hljs-comment\"># Regex-based code scanning<\/span>\n\u2502   \u2514\u2500\u2500 file_validator.py        <span class=\"hljs-comment\"># File existence checks<\/span>\n\u251c\u2500\u2500 reporters\/\n\u2502   \u251c\u2500\u2500 __init__.py\n\u2502   \u2514\u2500\u2500 progress_tracker.py      <span class=\"hljs-comment\"># Tracks review progress<\/span>\n\u251c\u2500\u2500 checklists\/\n\u2502   \u251c\u2500\u2500 python.yaml              <span class=\"hljs-comment\"># Python review rules<\/span>\n\u2502   \u251c\u2500\u2500 javascript.yaml          <span class=\"hljs-comment\"># JavaScript review rules<\/span>\n\u2502   \u2514\u2500\u2500 java.yaml                <span class=\"hljs-comment\"># Java review rules<\/span>\n\u2514\u2500\u2500 pyproject.toml              <span class=\"hljs-comment\"># Project metadata and dependencies<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h4 class=\"wp-block-heading\"><strong>Component Overview:<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Technology Detector identifies what programming language your project uses<\/li>\n\n\n\n<li>Checklist Engine loads the appropriate YAML checklist and coordinates execution<\/li>\n\n\n\n<li>Validators run the actual checks against your code<\/li>\n\n\n\n<li>Progress Tracker monitors execution and collects results<\/li>\n\n\n\n<li>MCP Server exposes everything as tools that Claude can use<\/li>\n<\/ul>\n\n\n\n<p>For AI analytics integration, see:<a href=\"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-machine-learning\/conversational-analytics-sql-ai-agent-database?utm_source=blog&amp;utm_campaign=ai-agent-development-custom-mcp-server-code-review\"> Conversational Analytics with SQL<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Setting Up Your MCP Development Project<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><noscript><img decoding=\"async\" width=\"855\" height=\"400\" src=\"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/building-ai-code-review-agent-mcp-development.png\" alt=\"Building AI Agent for software development with MCP Server for automated code review\" class=\"wp-image-44400\" title=\"Building an AI Code Review Agent Using Custom MCP Server\"><\/noscript><img decoding=\"async\" width=\"855\" height=\"400\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20855%20400%22%3E%3C%2Fsvg%3E\" alt=\"Building AI Agent for software development with MCP Server for automated code review\" class=\"wp-image-44400 lazyload\" title=\"Building an AI Code Review Agent Using Custom MCP Server\" data-src=\"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/building-ai-code-review-agent-mcp-development.png\"><\/figure>\n\n\n\n<p>Firstly, we need to create the project structure and install the required dependencies for efficient MCP software development.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 1: Create the project directory<\/strong><\/h3>\n\n\n\n<p>Open your terminal and run these commands:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\"># Create main project folder<\/span>\nmkdir mcp-code-reviewer\ncd mcp-code-reviewer\n\n\n<span class=\"hljs-comment\"># Create subdirectories for different components<\/span>\nmkdir checklists validators reporters\n\n\n<span class=\"hljs-comment\"># Create __init__.py files for Python packages<\/span>\ntouch validators\/__init__.py\ntouch reporters\/__init__.py\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 2: Define project dependencies<\/strong><\/h3>\n\n\n\n<p>Create a file called pyproject.toml in the project root:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">&#091;project]\nname = <span class=\"hljs-string\">\"mcp-code-reviewer\"<\/span>\nversion = <span class=\"hljs-string\">\"0.1.0\"<\/span>\ndescription = <span class=\"hljs-string\">\"MCP server for automated code review\"<\/span>\nrequires-python = <span class=\"hljs-string\">\"&gt;=3.11\"<\/span>\ndependencies = &#091;\n    <span class=\"hljs-string\">\"mcp&#091;cli]&gt;=1.16.0\"<\/span>,\n    <span class=\"hljs-string\">\"pyyaml&gt;=6.0\"<\/span>,\n    <span class=\"hljs-string\">\"pathspec&gt;=0.11.0\"<\/span>,\n]\n\n\n&#091;project.scripts]\nmcp-code-reviewer = <span class=\"hljs-string\">\"main:mcp.run\"<\/span>\n\n\n&#091;build-system]\nrequires = &#091;<span class=\"hljs-string\">\"hatchling\"<\/span>]\nbuild-backend = <span class=\"hljs-string\">\"hatchling.build\"<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h4 class=\"wp-block-heading\"><strong>Dependency Explanation:<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>mcp[cli]:<\/strong> The official MCP SDK from Anthropic, including CLI tools for MCP development<\/li>\n\n\n\n<li><strong>pyyaml:<\/strong> Parses YAML files where we store our review checklists<\/li>\n\n\n\n<li><strong>pathspec: <\/strong>Handles file pattern matching (similar to .gitignore patterns)<\/li>\n<\/ul>\n\n\n\n<p><strong>Important<\/strong>: The entry point mcp-code-reviewer = &#8220;main:mcp.run&#8221; tells Python to call the run() method on the MCP server object in main.py. This is crucial for the&nbsp; MCP server to work correctly.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 3: Install dependencies<\/strong><\/h3>\n\n\n\n<p>We will use uv, a fast Python package manager. If you don&#8217;t have it installed:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">pip install uv<\/code><\/span><\/pre>\n\n\n<p>Now install the project dependencies:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">uv sync<\/code><\/span><\/pre>\n\n\n<p>This creates a virtual environment and installs all required packages automatically.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Building the Technology Detector<\/strong><\/h2>\n\n\n\n<p>The technology detector is the first component we need. It automatically identifies what programming language a project uses by looking for indicator files and counting source code files.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What it does:<\/strong><\/h3>\n\n\n\n<p>The <strong>technology detector<\/strong> automatically identifies your project&#8217;s programming language by analyzing indicator files and source code files.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>How it works:<\/strong><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Defines indicator files for each technology (e.g., package.json for JavaScript, pyproject.toml for Python)<\/li>\n\n\n\n<li>Scores each technology based on indicator files found (2 points per indicator)<\/li>\n\n\n\n<li>Counts source code files by extension and adds to the score.<\/li>\n\n\n\n<li>Returns the highest-scoring technology with confidence level.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Key implementation concept:<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\"># Define technology indicators<\/span>\nTECH_INDICATORS = {\n    <span class=\"hljs-string\">\"python\"<\/span>: {\n        <span class=\"hljs-string\">\"files\"<\/span>: &#091;<span class=\"hljs-string\">\"requirements.txt\"<\/span>, <span class=\"hljs-string\">\"setup.py\"<\/span>, <span class=\"hljs-string\">\"pyproject.toml\"<\/span>],\n        <span class=\"hljs-string\">\"extensions\"<\/span>: &#091;<span class=\"hljs-string\">\".py\"<\/span>],\n        <span class=\"hljs-string\">\"frameworks\"<\/span>: {<span class=\"hljs-string\">\"django\"<\/span>: &#091;<span class=\"hljs-string\">\"manage.py\"<\/span>], <span class=\"hljs-string\">\"flask\"<\/span>: &#091;<span class=\"hljs-string\">\"app.py\"<\/span>]}\n    },\n    <span class=\"hljs-string\">\"javascript\"<\/span>: {\n        <span class=\"hljs-string\">\"files\"<\/span>: &#091;<span class=\"hljs-string\">\"package.json\"<\/span>, <span class=\"hljs-string\">\"yarn.lock\"<\/span>],\n        <span class=\"hljs-string\">\"extensions\"<\/span>: &#091;<span class=\"hljs-string\">\".js\"<\/span>, <span class=\"hljs-string\">\".jsx\"<\/span>]\n    }\n}\n\n<span class=\"hljs-comment\"># Scoring logic - indicator files get 2 points, source files add to score<\/span>\n<span class=\"hljs-keyword\">for<\/span> tech, indicators in TECH_INDICATORS.items():\n    <span class=\"hljs-keyword\">for<\/span> file in indicators&#091;<span class=\"hljs-string\">\"files\"<\/span>]:\n        <span class=\"hljs-keyword\">if<\/span> <span class=\"hljs-keyword\">self<\/span>._file_exists(file):\n            score += <span class=\"hljs-number\">2<\/span>\n\n    <span class=\"hljs-comment\"># Count source code files<\/span>\n    ext_count = <span class=\"hljs-keyword\">self<\/span>._count_extensions(indicators&#091;<span class=\"hljs-string\">\"extensions\"<\/span>])\n    <span class=\"hljs-keyword\">if<\/span> ext_count &gt; <span class=\"hljs-number\">0<\/span>:\n        score += min(ext_count \/ <span class=\"hljs-number\">10<\/span>, <span class=\"hljs-number\">3<\/span>)  <span class=\"hljs-comment\"># Cap at 3 points<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\"><strong>Create the file:<\/strong><\/h3>\n\n\n\n<p>Create technology_detector.py in your project root with the complete implementation, including the TechnologyDetector class with methods for:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>detect(): <\/strong>Main detection method<\/li>\n\n\n\n<li><strong>_file_exists(): <\/strong>Checks for indicator files<\/li>\n\n\n\n<li><strong>_count_extensions():<\/strong> Counts source files<\/li>\n\n\n\n<li><strong>_detect_frameworks():<\/strong> Identifies frameworks by reading config files<\/li>\n<\/ul>\n\n\n\n<p><strong>Note<\/strong>: Full implementation available in the <a href=\"https:\/\/github.com\/mobisoftinfotech\/mobisoft-programming-blogs-examples\/tree\/main\/python\/mcp-code-reviewer\">GitHub repository<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Building the Validation System<\/strong><\/h2>\n\n\n\n<p>The validation system is the heart of our code review agent. We have three validator classes: a base class and two implementations.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Create a validators package<\/strong><\/h3>\n\n\n\n<p>First, create validators\/__init__.py:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">from<\/span> .base_validator <span class=\"hljs-keyword\">import<\/span> BaseValidator, ValidationResult\n<span class=\"hljs-keyword\">from<\/span> .pattern_validator <span class=\"hljs-keyword\">import<\/span> PatternValidator\n<span class=\"hljs-keyword\">from<\/span> .file_validator <span class=\"hljs-keyword\">import<\/span> FileValidator\n\n\n__all__ = &#091;<span class=\"hljs-string\">'BaseValidator'<\/span>, <span class=\"hljs-string\">'ValidationResult'<\/span>, <span class=\"hljs-string\">'PatternValidator'<\/span>, <span class=\"hljs-string\">'FileValidator'<\/span>]\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\"><strong>Base Validator<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What it does:<\/strong><\/h3>\n\n\n\n<p>Provides an abstract base class and a result container for all validators.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>How it works:<\/strong><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>The ValidationResult class stores check outcomes (pass\/fail, message, file location, line number)<\/li>\n\n\n\n<li>BaseValidator defines the abstract validate() method all validators must implement<\/li>\n\n\n\n<li>Provides helper method get_files_to_check() for scanning source files<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Key implementation concept:<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">class ValidationResult:\n    \"\"\"Represents the result of a single validation check.\"\"\"\n    def __init__(self, check_id: str, passed: bool, message: str = \"\",\n                 file_path: str = \"\", line_number: int = 0, severity: str = \"info\"):\n        self.check_id = check_id\n        self.passed = passed\n        self.message = message\n        self.file_path = file_path\n        self.line_number = line_number\n        self.severity = severity\n\nclass BaseValidator(ABC):\n    @abstractmethod\n    def validate(self, check: Dict&#091;str, Any]) -&gt; List&#091;ValidationResult]:\n        \"\"\"Must be implemented by subclasses.\"\"\"\n        pass\n<\/code><\/span><\/pre>\n\n\n<h3 class=\"wp-block-heading\"><strong>Create the file:<\/strong><\/h3>\n\n\n\n<p>Create validators\/base_validator.py with the complete ValidationResult and BaseValidator classes.<\/p>\n\n\n\n<p>Note: Full implementation available in the <a href=\"https:\/\/github.com\/mobisoftinfotech\/mobisoft-programming-blogs-examples\/tree\/main\/python\/mcp-code-reviewer\">GitHub repository<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Pattern Validator<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What it does:<\/strong><\/h3>\n\n\n\n<p>Scans source code files line-by-line for regex pattern matches (security issues, code smells, etc.).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>How it works:<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Receives check definition with regex patterns from YAML<\/li>\n\n\n\n<li>Gets appropriate source files based on file extensions<\/li>\n\n\n\n<li>Compiles regex patterns and scans each line<\/li>\n\n\n\n<li>Records failures with file path and line number when patterns match<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Key implementation concept:<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\"># Core pattern matching logic<\/span>\n<span class=\"hljs-keyword\">for<\/span> file_path in files:\n    content = file_path.read_text(encoding=<span class=\"hljs-string\">'utf-8'<\/span>, errors=<span class=\"hljs-string\">'ignore'<\/span>)\n    lines = content.split(<span class=\"hljs-string\">'\\n'<\/span>)\n\n    <span class=\"hljs-keyword\">for<\/span> pattern_str in patterns:\n        pattern = re.compile(pattern_str, re.IGNORECASE | re.MULTILINE)\n\n        <span class=\"hljs-keyword\">for<\/span> line_num, line in enumerate(lines, start=<span class=\"hljs-number\">1<\/span>):\n            <span class=\"hljs-keyword\">if<\/span> pattern.search(line):\n                results.append(ValidationResult(\n                    check_id=check&#091;<span class=\"hljs-string\">'id'<\/span>],\n                    passed=<span class=\"hljs-keyword\">False<\/span>,\n                    message=f<span class=\"hljs-string\">\"Pattern match: {check&#091;'description']}\"<\/span>,\n                    file_path=str(file_path),\n                    line_number=line_num,\n                    severity=check.get(<span class=\"hljs-string\">'severity'<\/span>, <span class=\"hljs-string\">'info'<\/span>)\n                ))\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\"><strong>Create the file:<\/strong><\/h3>\n\n\n\n<p>Create validators\/pattern_validator.py with the PatternValidator class, including a helper method _get_extensions() to map technology names to file extensions.<\/p>\n\n\n\n<p>Note: Full implementation available in the <a href=\"https:\/\/github.com\/mobisoftinfotech\/mobisoft-programming-blogs-examples\/tree\/main\/python\/mcp-code-reviewer\">GitHub repository<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>File Validator<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What it does:<\/strong><\/h3>\n\n\n\n<p>Checks if required project files exist (like requirements.txt, package.json, test files).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>How it works:<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Receives a check definition with a list of required files or glob patterns<\/li>\n\n\n\n<li>Checks if any of the specified files exist in the project<\/li>\n\n\n\n<li>Returns pass if found, fail with a missing file list if not<\/li>\n\n\n\n<li>Supports glob patterns for finding test files or other patterns<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Key implementation concept:<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\"># Core file existence check<\/span>\nfiles_to_check = check.get(<span class=\"hljs-string\">'files'<\/span>, &#091;])\nfound = <span class=\"hljs-keyword\">False<\/span>\n\n<span class=\"hljs-keyword\">for<\/span> filename in files_to_check:\n    file_path = <span class=\"hljs-keyword\">self<\/span>.project_path \/ filename\n    <span class=\"hljs-keyword\">if<\/span> file_path.exists():\n        found = <span class=\"hljs-keyword\">True<\/span>\n        <span class=\"hljs-keyword\">break<\/span>\n\n<span class=\"hljs-keyword\">if<\/span> found:\n    results.append(ValidationResult(check_id=check&#091;<span class=\"hljs-string\">'id'<\/span>], passed=<span class=\"hljs-keyword\">True<\/span>, ...))\n<span class=\"hljs-keyword\">else<\/span>:\n    results.append(ValidationResult(\n        check_id=check&#091;<span class=\"hljs-string\">'id'<\/span>],\n        passed=<span class=\"hljs-keyword\">False<\/span>,\n        message=f<span class=\"hljs-string\">\"Missing required files: {', '.join(files_to_check)}\"<\/span>,\n        ...\n    ))\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\"><strong>Create the file:<\/strong><\/h3>\n\n\n\n<p>Create validators\/file_validator.py with the FileValidator class, including helper method _check_pattern_files() for glob pattern matching.<\/p>\n\n\n\n<p>Note: Full implementation available in the <a href=\"https:\/\/github.com\/mobisoftinfotech\/mobisoft-programming-blogs-examples\/tree\/main\/python\/mcp-code-reviewer\">GitHub repository<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Building the Progress Tracker<\/strong><\/h2>\n\n\n\n<p>The progress tracker monitors review execution and collects results.First, create reporters\/__init__.py:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">from<\/span> .progress_tracker <span class=\"hljs-keyword\">import<\/span> ProgressTracker\n\n\n__all__ = &#091;<span class=\"hljs-string\">'ProgressTracker'<\/span>]\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\"><strong>What it does:<\/strong><\/h3>\n\n\n\n<p>Tracks real-time progress of code review execution, counting passed\/failed\/skipped checks and recording failure details.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>How it works:<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Initializes counters for total, passed, failed, and skipped checks<\/li>\n\n\n\n<li>Updates the current check being processed<\/li>\n\n\n\n<li>Records each check outcome (pass\/fail\/skip)<\/li>\n\n\n\n<li>Collects detailed failure information (file, line, message, severity)<\/li>\n\n\n\n<li>Calculates percentage completion and formats reports<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Key implementation concept:<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">class ProgressTracker:\n    def __init__(self):\n        self.total_checks = 0\n        self.passed = 0\n        self.failed = 0\n        self.skipped = 0\n        self.current_check = None\n        self.failures = &#091;]\n        self.start_time = None\n        self.end_time = None\n\n    def record_pass(self):\n        \"\"\"Record a passed check.\"\"\"\n        self.passed += 1\n        self.in_progress = 0\n\n    def record_fail(self, failure_info: Dict&#091;str, Any]):\n        \"\"\"Record a failed check.\"\"\"\n        self.failed += 1\n        self.failures.append(failure_info)\n<\/code><\/span><\/pre>\n\n\n<h3 class=\"wp-block-heading\"><strong>Create the file:<\/strong><\/h3>\n\n\n\n<p>Create reporters\/progress_tracker.py with the complete ProgressTracker class, including methods for:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>start(), update_check(), complete()<\/li>\n\n\n\n<li>record_pass(), record_fail(), record_skip()<\/li>\n\n\n\n<li>get_progress(), get_summary()<\/li>\n\n\n\n<li>format_progress_bar(), format_status(), format_failures()<\/li>\n<\/ul>\n\n\n\n<p><strong>Note<\/strong>: Full implementation available in the <a href=\"https:\/\/github.com\/mobisoftinfotech\/mobisoft-programming-blogs-examples\/tree\/main\/python\/mcp-code-reviewer\">GitHub repository<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Building the Checklist Engines<\/strong><\/h3>\n\n\n\n<p>The checklist engine coordinates everything, loading YAML checklists and orchestrating validator execution.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What it does:<\/strong><\/h3>\n\n\n\n<p>Manages the complete code review process by running YAML checklists, validator checks, and monitoring progress.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>How it works:<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Loads technology-specific YAML checklist from the checklists directory<\/li>\n\n\n\n<li>Counts total checks and initializes progress tracking<\/li>\n\n\n\n<li>Iterates through each category and checks the item<\/li>\n\n\n\n<li>Determines the appropriate validator (PatternValidator or FileValidator) based on the check definition<\/li>\n\n\n\n<li>Executes validator and records results (pass\/fail)<\/li>\n\n\n\n<li>Provides progress callbacks for real-time updates<\/li>\n\n\n\n<li>Returns a comprehensive summary with failures, duration, and statistics<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Key implementation concept:<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">def review_code(<span class=\"hljs-keyword\">self<\/span>, technology: str, progress_callback=None) -&gt; Dict&#091;str, Any]:\n    <span class=\"hljs-comment\"># Load checklist<\/span>\n    checklist = <span class=\"hljs-keyword\">self<\/span>.load_checklist(technology)\n\n    <span class=\"hljs-comment\"># Start tracking<\/span>\n    total_checks = sum(len(category&#091;<span class=\"hljs-string\">'items'<\/span>]) <span class=\"hljs-keyword\">for<\/span> category in checklist&#091;<span class=\"hljs-string\">'categories'<\/span>])\n    <span class=\"hljs-keyword\">self<\/span>.progress_tracker.start(total_checks)\n\n    <span class=\"hljs-comment\"># Execute checks<\/span>\n    <span class=\"hljs-keyword\">for<\/span> category in checklist&#091;<span class=\"hljs-string\">'categories'<\/span>]:\n        <span class=\"hljs-keyword\">for<\/span> check in category&#091;<span class=\"hljs-string\">'items'<\/span>]:\n            <span class=\"hljs-comment\"># Update progress<\/span>\n            <span class=\"hljs-keyword\">self<\/span>.progress_tracker.update_check(check&#091;<span class=\"hljs-string\">'id'<\/span>], check&#091;<span class=\"hljs-string\">'description'<\/span>])\n\n            <span class=\"hljs-comment\"># Execute validation (choose appropriate validator)<\/span>\n            results = <span class=\"hljs-keyword\">self<\/span>._execute_check(check, technology)\n\n            <span class=\"hljs-comment\"># Record results<\/span>\n            passed = all(r.passed <span class=\"hljs-keyword\">for<\/span> r in results)\n            <span class=\"hljs-keyword\">if<\/span> passed:\n                <span class=\"hljs-keyword\">self<\/span>.progress_tracker.record_pass()\n            <span class=\"hljs-keyword\">else<\/span>:\n                <span class=\"hljs-keyword\">for<\/span> result in results:\n                    <span class=\"hljs-keyword\">if<\/span> not result.passed:\n                        <span class=\"hljs-keyword\">self<\/span>.progress_tracker.record_fail({...})\n\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">self<\/span>.progress_tracker.get_summary()\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\"><strong>Create the file:<\/strong><\/h3>\n\n\n\n<p>Create checklist_engine.py with the complete ChecklistEngine class, including:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>load_checklist(): Loads YAML files<\/li>\n\n\n\n<li>review_code(): Main orchestration method<\/li>\n\n\n\n<li>_execute_check(): Chooses and runs the appropriate validator<\/li>\n\n\n\n<li>get_progress(), get_summary(), format_report(): Result retrieval<\/li>\n<\/ul>\n\n\n\n<p>Note: Full implementation available in the GitHub repository.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Creating YAML Checklists<\/strong><\/h2>\n\n\n\n<p>Checklists define what to check for each programming language. Let&#8217;s create a Python checklist as an example.<\/p>\n\n\n\n<p>Create checklists\/python.yaml:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">technology: python\n<span class=\"hljs-attr\">description<\/span>: Code review checklist <span class=\"hljs-keyword\">for<\/span> Python projects\n\n\n<span class=\"hljs-attr\">categories<\/span>:\n  - name: Security\n    <span class=\"hljs-attr\">items<\/span>:\n      - id: SEC<span class=\"hljs-number\">-001<\/span>\n        <span class=\"hljs-attr\">description<\/span>: No hardcoded credentials or API keys\n        <span class=\"hljs-attr\">validator<\/span>: check_hardcoded_secrets\n        <span class=\"hljs-attr\">severity<\/span>: critical\n        <span class=\"hljs-attr\">patterns<\/span>:\n          - <span class=\"hljs-string\">\"password\\\\s*=\\\\s*&#091;\\\"']&#091;^\\\"']+&#091;\\\"']\"<\/span>\n          - <span class=\"hljs-string\">\"api_key\\\\s*=\\\\s*&#091;\\\"']&#091;^\\\"']+&#091;\\\"']\"<\/span>\n          - <span class=\"hljs-string\">\"secret\\\\s*=\\\\s*&#091;\\\"']&#091;^\\\"']+&#091;\\\"']\"<\/span>\n          - <span class=\"hljs-string\">\"token\\\\s*=\\\\s*&#091;\\\"']&#091;^\\\"']+&#091;\\\"']\"<\/span>\n\n\n      - id: SEC<span class=\"hljs-number\">-002<\/span>\n        <span class=\"hljs-attr\">description<\/span>: SQL injection prevention (use parameterized queries)\n        <span class=\"hljs-attr\">validator<\/span>: check_sql_injection\n        <span class=\"hljs-attr\">severity<\/span>: critical\n        <span class=\"hljs-attr\">patterns<\/span>:\n          - <span class=\"hljs-string\">\"execute\\\\(&#091;^)]*%&#091;^)]*\\\\)\"<\/span>\n          - <span class=\"hljs-string\">\"execute\\\\(&#091;^)]*\\\\+&#091;^)]*\\\\)\"<\/span>\n\n\n      - id: SEC<span class=\"hljs-number\">-003<\/span>\n        <span class=\"hljs-attr\">description<\/span>: No <span class=\"hljs-built_in\">eval<\/span>() or exec() usage\n        <span class=\"hljs-attr\">validator<\/span>: check_dangerous_functions\n        <span class=\"hljs-attr\">severity<\/span>: critical\n        <span class=\"hljs-attr\">patterns<\/span>:\n          - <span class=\"hljs-string\">\"\\\\beval\\\\(\"<\/span>\n          - <span class=\"hljs-string\">\"\\\\bexec\\\\(\"<\/span>\n\n\n  - name: Code Quality\n    <span class=\"hljs-attr\">items<\/span>:\n      - id: QA<span class=\"hljs-number\">-001<\/span>\n        <span class=\"hljs-attr\">description<\/span>: Functions should be under <span class=\"hljs-number\">50<\/span> lines\n        <span class=\"hljs-attr\">validator<\/span>: check_function_length\n        <span class=\"hljs-attr\">severity<\/span>: warning\n        <span class=\"hljs-attr\">threshold<\/span>: <span class=\"hljs-number\">50<\/span>\n\n\n      - id: QA<span class=\"hljs-number\">-002<\/span>\n        <span class=\"hljs-attr\">description<\/span>: No commented-out code blocks\n        <span class=\"hljs-attr\">validator<\/span>: check_commented_code\n        <span class=\"hljs-attr\">severity<\/span>: info\n        <span class=\"hljs-attr\">patterns<\/span>:\n          - <span class=\"hljs-string\">\"^\\\\s*#.*\\\\b(def|class|if|for|while)\\\\b\"<\/span>\n\n\n      - id: QA<span class=\"hljs-number\">-003<\/span>\n        <span class=\"hljs-attr\">description<\/span>: Proper exception handling (no bare except)\n        <span class=\"hljs-attr\">validator<\/span>: check_exception_handling\n        <span class=\"hljs-attr\">severity<\/span>: warning\n        <span class=\"hljs-attr\">patterns<\/span>:\n          - <span class=\"hljs-string\">\"except\\\\s*:\"<\/span>\n\n\n  - name: Best Practices\n    <span class=\"hljs-attr\">items<\/span>:\n      - id: BP<span class=\"hljs-number\">-001<\/span>\n        <span class=\"hljs-attr\">description<\/span>: Use context managers <span class=\"hljs-keyword\">for<\/span> file operations\n        <span class=\"hljs-attr\">validator<\/span>: check_context_managers\n        <span class=\"hljs-attr\">severity<\/span>: warning\n        <span class=\"hljs-attr\">patterns<\/span>:\n          - <span class=\"hljs-string\">\"open\\\\(&#091;^)]+\\\\)(?!\\\\s*as\\\\s+)\"<\/span>\n\n\n      - id: BP<span class=\"hljs-number\">-002<\/span>\n        <span class=\"hljs-attr\">description<\/span>: Requirements file exists\n        <span class=\"hljs-attr\">validator<\/span>: check_requirements_file\n        <span class=\"hljs-attr\">severity<\/span>: info\n        <span class=\"hljs-attr\">files<\/span>: &#091;<span class=\"hljs-string\">'requirements.txt'<\/span>, <span class=\"hljs-string\">'pyproject.toml'<\/span>, <span class=\"hljs-string\">'Pipfile'<\/span>]\n\n\n  - name: Testing\n    <span class=\"hljs-attr\">items<\/span>:\n      - id: TEST<span class=\"hljs-number\">-001<\/span>\n        <span class=\"hljs-attr\">description<\/span>: Test files exist\n        <span class=\"hljs-attr\">validator<\/span>: check_test_files\n        <span class=\"hljs-attr\">severity<\/span>: info\n        <span class=\"hljs-attr\">patterns<\/span>:\n          - <span class=\"hljs-string\">'test_*.py'<\/span>\n          - <span class=\"hljs-string\">'*_test.py'<\/span>\n\n\n      - id: TEST<span class=\"hljs-number\">-002<\/span>\n        <span class=\"hljs-attr\">description<\/span>: No print statements (use logging)\n        <span class=\"hljs-attr\">validator<\/span>: check_print_statements\n        <span class=\"hljs-attr\">severity<\/span>: info\n        <span class=\"hljs-attr\">patterns<\/span>:\n          - <span class=\"hljs-string\">\"\\\\bprint\\\\(\"<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Important YAML Syntax Notes:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>In YAML files, backslashes in regex patterns must be double-escaped<\/li>\n\n\n\n<li>For example, \\b becomes \\\\b in the YAML file<\/li>\n\n\n\n<li>Always use double quotes for strings containing special characters<\/li>\n\n\n\n<li>If you see parsing errors, check your escaping and quote usage<\/li>\n<\/ul>\n\n\n\n<p>Similarly, create checklists\/javascript.yaml:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">technology: javascript\n<span class=\"hljs-attr\">description<\/span>: Code review checklist <span class=\"hljs-keyword\">for<\/span> JavaScript\/TypeScript projects\n\n\n<span class=\"hljs-attr\">categories<\/span>:\n  - name: Security\n    <span class=\"hljs-attr\">items<\/span>:\n      - id: SEC<span class=\"hljs-number\">-001<\/span>\n        <span class=\"hljs-attr\">description<\/span>: No hardcoded credentials or API keys\n        <span class=\"hljs-attr\">validator<\/span>: check_hardcoded_secrets\n        <span class=\"hljs-attr\">severity<\/span>: critical\n        <span class=\"hljs-attr\">patterns<\/span>:\n          - <span class=\"hljs-string\">\"password\\\\s*&#091;:=]\\\\s*&#091;\\\"']&#091;^\\\"']+&#091;\\\"']\"<\/span>\n          - <span class=\"hljs-string\">\"apiKey\\\\s*&#091;:=]\\\\s*&#091;\\\"']&#091;^\\\"']+&#091;\\\"']\"<\/span>\n\n\n      - id: SEC<span class=\"hljs-number\">-002<\/span>\n        <span class=\"hljs-attr\">description<\/span>: No <span class=\"hljs-built_in\">eval<\/span>() usage\n        <span class=\"hljs-attr\">validator<\/span>: check_dangerous_functions\n        <span class=\"hljs-attr\">severity<\/span>: critical\n        <span class=\"hljs-attr\">patterns<\/span>:\n          - <span class=\"hljs-string\">\"\\\\beval\\\\(\"<\/span>\n\n\n      - id: SEC<span class=\"hljs-number\">-003<\/span>\n        <span class=\"hljs-attr\">description<\/span>: Avoid innerHTML (XSS vulnerability)\n        <span class=\"hljs-attr\">validator<\/span>: check_xss_vulnerabilities\n        <span class=\"hljs-attr\">severity<\/span>: critical\n        <span class=\"hljs-attr\">patterns<\/span>:\n          - <span class=\"hljs-string\">\"\\\\.innerHTML\\\\s*=\"<\/span>\n\n\n  - name: Code Quality\n    <span class=\"hljs-attr\">items<\/span>:\n      - id: QA<span class=\"hljs-number\">-001<\/span>\n        <span class=\"hljs-attr\">description<\/span>: Use <span class=\"hljs-keyword\">const<\/span>\/<span class=\"hljs-keyword\">let<\/span> instead <span class=\"hljs-keyword\">of<\/span> <span class=\"hljs-keyword\">var<\/span>\n        <span class=\"hljs-attr\">validator<\/span>: check_var_usage\n        <span class=\"hljs-attr\">severity<\/span>: warning\n        <span class=\"hljs-attr\">patterns<\/span>:\n          - <span class=\"hljs-string\">\"\\\\bvar\\\\s+\"<\/span>\n\n\n      - id: QA<span class=\"hljs-number\">-002<\/span>\n        <span class=\"hljs-attr\">description<\/span>: No <span class=\"hljs-built_in\">console<\/span>.log <span class=\"hljs-keyword\">in<\/span> production code\n        <span class=\"hljs-attr\">validator<\/span>: check_console_statements\n        <span class=\"hljs-attr\">severity<\/span>: info\n        <span class=\"hljs-attr\">patterns<\/span>:\n          - <span class=\"hljs-string\">\"console\\\\.log\\\\(\"<\/span>\n          - <span class=\"hljs-string\">\"console\\\\.debug\\\\(\"<\/span>\n\n\n  - name: Best Practices\n    <span class=\"hljs-attr\">items<\/span>:\n      - id: BP<span class=\"hljs-number\">-001<\/span>\n        <span class=\"hljs-attr\">description<\/span>: Package.json exists\n        <span class=\"hljs-attr\">validator<\/span>: check_package_json\n        <span class=\"hljs-attr\">severity<\/span>: critical\n        <span class=\"hljs-attr\">files<\/span>: &#091;<span class=\"hljs-string\">\"package.json\"<\/span>]\n\n\n      - id: BP<span class=\"hljs-number\">-002<\/span>\n        <span class=\"hljs-attr\">description<\/span>: ESLint configuration exists\n        <span class=\"hljs-attr\">validator<\/span>: check_eslint_config\n        <span class=\"hljs-attr\">severity<\/span>: info\n        <span class=\"hljs-attr\">files<\/span>: &#091;<span class=\"hljs-string\">\".eslintrc\"<\/span>, <span class=\"hljs-string\">\".eslintrc.js\"<\/span>, <span class=\"hljs-string\">\".eslintrc.json\"<\/span>]\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What&#8217;s Next?<\/strong><\/h2>\n\n\n\n<p>Congratulations! You&#8217;ve completed Part 1 and built all the core components of your AI agent using MCP development:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Technology detector for automatic language identification&nbsp;<\/li>\n\n\n\n<li>Validation system with pattern and file validators&nbsp;<\/li>\n\n\n\n<li>Progress tracking for real-time feedback<\/li>\n\n\n\n<li>Checklist engine for orchestrating reviews&nbsp;<\/li>\n\n\n\n<li>YAML checklists for Python and JavaScript<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>In Part 2, we&#8217;ll cover:<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Building the MCP server to expose these components as tools<\/li>\n\n\n\n<li>Configuring Claude Desktop to use your MCP server<\/li>\n\n\n\n<li>Testing with both MCP Inspector and Claude Desktop<\/li>\n\n\n\n<li>Troubleshooting common issues<\/li>\n\n\n\n<li>Extending the agent with additional features<\/li>\n<\/ul>\n\n\n\n<p>Continue to Part 2: <a href=\"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-mcp-server-integration-deployment\">Integration, Testing &amp; Deployment to complete your &nbsp;AI agent with MCP server development!<\/a><\/p>\n\n\n\n<p>You can explore the complete source code and follow along with the project on GitHub. Check out the repository here: <a href=\"https:\/\/github.com\/mobisoftinfotech\/mobisoft-programming-blogs-examples\/tree\/main\/python\/mcp-code-reviewer\">GitHub Repository Link<\/a><\/p>\n\n\n\n<p>Questions or Feedback?<\/p>\n\n\n\n<p>If you have any queries regarding this guide or wish to share improvements:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Go to the GitHub repository, open a new issue<\/li>\n\n\n\n<li>Share your feedback on social media platforms<\/li>\n\n\n\n<li>Suggest refinements in the project<\/li>\n<\/ul>\n\n\n\n<p>Happy coding and enjoy building AI agents!<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/mobisoftinfotech.com\/contact-us?utm_source=blog_cta&amp;utm_campaign=ai-agent-development-custom-mcp-server-code-review\"><noscript><img decoding=\"async\" width=\"855\" height=\"363\" src=\"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/ai-agent-for-software-development-mcp-server-cta.png\" alt=\"AI Agent for Software Development powering next-generation business innovation\" class=\"wp-image-44401\" title=\"Your Next Big Idea Needs the Right Tech \u2013 Build with AI Agents\"><\/noscript><img decoding=\"async\" width=\"855\" height=\"363\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20855%20363%22%3E%3C%2Fsvg%3E\" alt=\"AI Agent for Software Development powering next-generation business innovation\" class=\"wp-image-44401 lazyload\" title=\"Your Next Big Idea Needs the Right Tech \u2013 Build with AI Agents\" data-src=\"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/ai-agent-for-software-development-mcp-server-cta.png\"><\/a><\/figure>\n\n\n\n<p><\/p>\n\n\n<div class=\"related-posts-section\"><h2>Related Posts<\/h2><ul class=\"related-posts-list\"><li><a href=\"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/voice-ai-for-enterprise-workflows\">Voice AI for Enterprise Workflows: A Strategic 2026 Guide<\/a><\/li><li><a href=\"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/smart-manufacturing-increase-output\">Hidden Capacity: Unlocking 20% More Manufacturing Output Without New Equipment<\/a><\/li><li><a href=\"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/spring-ai-llm-integration-spring-boot\">Mastering Spring AI: Easily Add LLM Smarts to Your Spring Boot Applications<\/a><\/li><li><a href=\"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/what-is-quantization-in-llm-guide\">What is Quantization in LLM? A Complete Guide to Optimizing AI Models<\/a><\/li><li><a href=\"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/claude-ai-app-development-mvp-to-scale\">From MVP to Scale: How Claude-Powered Apps Are Built for Real Users<\/a><\/li><li><a href=\"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/top-ai-agent-sdks-frameworks-automation-2026\">Top AI Agent SDKs &amp; Frameworks for Smarter Automation in 2026<\/a><\/li><\/ul><\/div>\n\n\n<div class=\"modern-author-card\">\n    <div class=\"author-card-content\">\n        <div class=\"author-info-section\">\n            <div class=\"author-avatar\">\n                <noscript><img decoding=\"async\" src=\"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/06\/shubham-agarwal-profile.png\" alt=\"Shubham Agarwal\"><\/noscript><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" alt=\"Shubham Agarwal\" data-src=\"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/06\/shubham-agarwal-profile.png\" class=\" lazyload\">\n            <\/div>\n            <div class=\"author-details\">\n                <h3 class=\"author-name\">Shubham Agarwal<\/h3>\n                <p class=\"author-title\">Principal Software Engineer<\/p>\n                <a href=\"javascript:void(0);\" class=\"read-more-link read-more-btn\" onclick=\"toggleAuthorBio(this); return false;\">Read more <noscript><img decoding=\"async\" src=\"\/assets\/images\/blog\/Vector.png\" alt=\"expand\" class=\"read-more-arrow down-arrow\"><\/noscript><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" alt=\"expand\" class=\"read-more-arrow down-arrow lazyload\" data-src=\"\/assets\/images\/blog\/Vector.png\"><\/a>\n                <div class=\"author-bio-expanded\">\n                    <p>Shubham Agarwal is a Principal Software Engineer at <a href=\"https:\/\/mobisoftinfotech.com\">Mobisoft Infotech<\/a> with nearly a decade of experience in building high-performance web applications and designing scalable software architectures. While he specializes in Python, Node.js, and React, his expertise spans a wide range of technologies across the full stack. Over the years, Shubham has led the end-to-end development of several successful products translating complex ideas into clean, maintainable, and future-ready solutions. He brings a strong product mindset, a deep understanding of systems design, and a passion for writing code that solves real-world problems.<\/p>\n                    <div class=\"author-social-links\"><div class=\"social-icon\"><a href=\"https:\/\/www.linkedin.com\/in\/ishubhagarwal\" target=\"_blank\" rel=\"nofollow noopener\"><i class=\"icon-sprite linkedin\"><\/i><\/a><\/div><\/div>\n                    <a href=\"javascript:void(0);\" class=\"read-more-link read-less-btn\" onclick=\"toggleAuthorBio(this); return false;\" style=\"display: none;\">Read less <noscript><img decoding=\"async\" src=\"\/assets\/images\/blog\/Vector.png\" alt=\"collapse\" class=\"read-more-arrow up-arrow\"><\/noscript><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" alt=\"collapse\" class=\"read-more-arrow up-arrow lazyload\" data-src=\"\/assets\/images\/blog\/Vector.png\"><\/a>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"share-section\">\n            <span class=\"share-label\">Share Article<\/span>\n            <div class=\"social-share-buttons\">\n                <a href=\"https:\/\/www.facebook.com\/sharer\/sharer.php?u=https%3A%2F%2Fmobisoftinfotech.com%2Fresources%2Fblog%2Fai-development%2Fai-agent-development-custom-mcp-server-code-review\" target=\"_blank\" class=\"share-btn facebook-share\"><i class=\"fa fa-facebook-f\"><\/i><\/a>\n                <a href=\"https:\/\/www.linkedin.com\/sharing\/share-offsite\/?url=https%3A%2F%2Fmobisoftinfotech.com%2Fresources%2Fblog%2Fai-development%2Fai-agent-development-custom-mcp-server-code-review\" target=\"_blank\" class=\"share-btn linkedin-share\"><i class=\"fa fa-linkedin\"><\/i><\/a>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n\n\n<script type=\"application\/ld+json\">\n[\n  {\n    \"@context\": \"https:\/\/schema.org\",\n    \"@type\": \"ImageObject\",\n    \"contentUrl\": \"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/ai-agent-development-custom-mcp-server-code-review.png\",\n    \"url\": \"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review\",\n    \"name\": \"AI Agent Development Example with Custom MCP Server: Build A Code Review Agent - Part I\",\n    \"caption\": \"Learn how to build a smart code review agent using AI Agent Development and MCP Server integration.\",\n    \"description\": \"This cover image represents the concept of AI Agent Development using a Custom MCP Server to automate code reviews and improve development efficiency.\",\n    \"acquireLicensePage\": \"https:\/\/mobisoftinfotech.com\/acquire-license\",\n    \"license\": \"https:\/\/mobisoftinfotech.com\/terms\",\n    \"creditText\": \"Mobisoft Infotech\",\n    \"copyrightNotice\": \"Mobisoft Infotech\",\n    \"creator\": { \"@type\": \"Organization\", \"name\": \"Mobisoft Infotech\" },\n    \"thumbnail\": \"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/ai-agent-development-custom-mcp-server-code-review.png\"\n  },\n  {\n    \"@context\": \"https:\/\/schema.org\",\n    \"@type\": \"ImageObject\",\n    \"contentUrl\": \"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/seamlessly-connect-ai-agents-mcp-development.png\",\n    \"url\": \"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review\",\n    \"name\": \"Seamlessly Connect Your AI to Everything with MCP Development\",\n    \"caption\": \"Integrate your AI agents effortlessly with MCP server development for smarter automation.\",\n    \"description\": \"This image highlights seamless integration between artificial intelligence agents and business systems using Custom MCP Development for advanced automation.\",\n    \"acquireLicensePage\": \"https:\/\/mobisoftinfotech.com\/acquire-license\",\n    \"license\": \"https:\/\/mobisoftinfotech.com\/terms\",\n    \"creditText\": \"Mobisoft Infotech\",\n    \"copyrightNotice\": \"Mobisoft Infotech\",\n    \"creator\": { \"@type\": \"Organization\", \"name\": \"Mobisoft Infotech\" },\n    \"thumbnail\": \"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/seamlessly-connect-ai-agents-mcp-development.png\"\n  },\n  {\n    \"@context\": \"https:\/\/schema.org\",\n    \"@type\": \"ImageObject\",\n    \"contentUrl\": \"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/ai-agent-for-software-development-mcp-server-cta.png\",\n    \"url\": \"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review\",\n    \"name\": \"Your Next Big Idea Needs the Right Tech \u2013 Build with AI Agents\",\n    \"caption\": \"Turn your ideas into reality with AI Agent Development and MCP server expertise.\",\n    \"description\": \"This call-to-action image inspires innovation through AI Agent Development and MCP Server solutions designed for scalable software development.\",\n    \"acquireLicensePage\": \"https:\/\/mobisoftinfotech.com\/acquire-license\",\n    \"license\": \"https:\/\/mobisoftinfotech.com\/terms\",\n    \"creditText\": \"Mobisoft Infotech\",\n    \"copyrightNotice\": \"Mobisoft Infotech\",\n    \"creator\": { \"@type\": \"Organization\", \"name\": \"Mobisoft Infotech\" },\n    \"thumbnail\": \"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/ai-agent-for-software-development-mcp-server-cta.png\"\n  },\n  {\n    \"@context\": \"https:\/\/schema.org\",\n    \"@type\": \"ImageObject\",\n    \"contentUrl\": \"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/ai-agent-architecture-diagram-mcp-server.png\",\n    \"url\": \"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review\",\n    \"name\": \"AI Agent Architecture with Custom MCP Server Integration\",\n    \"caption\": \"Understand how AI Agent Architecture connects seamlessly with the MCP Server to automate code reviews.\",\n    \"description\": \"This architecture diagram visually explains how AI Agent Development and MCP Server integration streamline software automation and review processes.\",\n    \"acquireLicensePage\": \"https:\/\/mobisoftinfotech.com\/acquire-license\",\n    \"license\": \"https:\/\/mobisoftinfotech.com\/terms\",\n    \"creditText\": \"Mobisoft Infotech\",\n    \"copyrightNotice\": \"Mobisoft Infotech\",\n    \"creator\": { \"@type\": \"Organization\", \"name\": \"Mobisoft Infotech\" },\n    \"thumbnail\": \"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/ai-agent-architecture-diagram-mcp-server.png\"\n  },\n  {\n    \"@context\": \"https:\/\/schema.org\",\n    \"@type\": \"ImageObject\",\n    \"contentUrl\": \"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/building-ai-code-review-agent-mcp-development.png\",\n    \"url\": \"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review\",\n    \"name\": \"Building an AI Code Review Agent Using Custom MCP Server\",\n    \"caption\": \"Step-by-step process to build an intelligent AI code review agent using MCP development.\",\n    \"description\": \"This image illustrates the process of building AI Agents for Software Development using Custom MCP Server to automate code analysis and review.\",\n    \"acquireLicensePage\": \"https:\/\/mobisoftinfotech.com\/acquire-license\",\n    \"license\": \"https:\/\/mobisoftinfotech.com\/terms\",\n    \"creditText\": \"Mobisoft Infotech\",\n    \"copyrightNotice\": \"Mobisoft Infotech\",\n    \"creator\": { \"@type\": \"Organization\", \"name\": \"Mobisoft Infotech\" },\n    \"thumbnail\": \"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/building-ai-code-review-agent-mcp-development.png\"\n  },\n  {\n    \"@context\": \"https:\/\/schema.org\",\n    \"@type\": \"ImageObject\",\n    \"contentUrl\": \"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/mcp-server-interaction-with-ai-agents.png\",\n    \"url\": \"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review\",\n    \"name\": \"MCP Server Interaction with AI Agents for Smarter Development\",\n    \"caption\": \"Explore how MCP Server connects and interacts with AI agents to enhance code analysis.\",\n    \"description\": \"This image demonstrates how MCP Server Development enables real-time interaction between artificial intelligence agents and development tools for optimized automation.\",\n    \"acquireLicensePage\": \"https:\/\/mobisoftinfotech.com\/acquire-license\",\n    \"license\": \"https:\/\/mobisoftinfotech.com\/terms\",\n    \"creditText\": \"Mobisoft Infotech\",\n    \"copyrightNotice\": \"Mobisoft Infotech\",\n    \"creator\": { \"@type\": \"Organization\", \"name\": \"Mobisoft Infotech\" },\n    \"thumbnail\": \"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/mcp-server-interaction-with-ai-agents.png\"\n  }\n   \n ]\n<\/script>\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"Article\",\n  \"mainEntityOfPage\": {\n    \"@type\": \"WebPage\",\n    \"@id\": \"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review\"\n  },\n  \"headline\": \"AI Agent Development Example with Custom MCP Server: Build A Code Review Agent - Part I\",\n\"description\": \"Learn how to build an AI-powered code review agent with a custom MCP server in this step-by-step guide. Part I covers the core development process.\",\n  \"image\": \"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/ai-agent-development-custom-mcp-server-code-review.png\",\n  \"author\": {\n    \"@type\": \"Person\",\n    \"name\": \"Shubham Agarwal\",\n    \"description\": \"Shubham Agarwal is a Principal Software Engineer at Mobisoft Infotech with nearly a decade of experience in building high-performance web applications and designing scalable software architectures. While he specializes in Python, Node.js, and React, his expertise spans a wide range of technologies across the full stack. Over the years, Shubham has led the end-to-end development of several successful products translating complex ideas into clean, maintainable, and future-ready solutions. He brings a strong product mindset, a deep understanding of systems design, and a passion for writing code that solves real-world problems.\"\n  },\n  \"publisher\": {\n    \"@type\": \"Organization\",\n    \"name\": \"Mobisoft Infotech\",\n    \"logo\": {\n      \"@type\": \"ImageObject\",\n      \"url\": \"https:\/\/mobisoftinfotech.com\/assets\/images\/mshomepage\/MI_Logo-white.svg\",\n      \"width\": 600,\n      \"height\": 600\n    }\n  },\n  \"datePublished\": \"2025-10-16\",\n  \"dateModified\": \"2025-10-16\"\n}\n<\/script>\n\n <script type=\"application\/ld+json\">\n{\n    \"@context\": \"https:\/\/schema.org\",\n    \"@type\": \"LocalBusiness\",\n    \"name\": \"Mobisoft Infotech\",\n    \"url\": \"https:\/\/mobisoftinfotech.com\",\n    \"logo\": \"https:\/\/mobisoftinfotech.com\/assets\/images\/mshomepage\/MI_Logo-white.svg\",\n    \"description\": \"Mobisoft Infotech specializes in custom software development and digital solutions.\",\n    \"address\": {\n        \"@type\": \"PostalAddress\",\n        \"streetAddress\": \"5718 Westheimer Rd Suite 1000\",\n        \"addressLocality\": \"Houston\",\n        \"addressRegion\": \"TX\",\n        \"postalCode\": \"77057\",\n        \"addressCountry\": \"USA\"\n    },\n    \"contactPoint\": [{\n        \"@type\": \"ContactPoint\",\n        \"telephone\": \"+1-855-572-2777\",\n        \"contactType\": \"Customer Service\",\n        \"areaServed\": [\"USA\", \"Worldwide\"],\n        \"availableLanguage\": [\"English\"]\n    }],\n    \"sameAs\": [\n        \"https:\/\/www.facebook.com\/pages\/Mobisoft-Infotech\/131035500270720\",\n        \"https:\/\/x.com\/MobisoftInfo\",\n        \"https:\/\/www.linkedin.com\/company\/mobisoft-infotech\",\n        \"https:\/\/in.pinterest.com\/mobisoftinfotech\/\",\n        \"https:\/\/www.instagram.com\/mobisoftinfotech\/\",\n        \"https:\/\/github.com\/MobisoftInfotech\",\n        \"https:\/\/www.behance.net\/MobisoftInfotech\",\n        \"https:\/\/www.youtube.com\/@MobisoftinfotechHouston\"\n    ]\n}\n<\/script>\n\n\n","protected":false},"excerpt":{"rendered":"<p>Using MCP servers can make your AI agents intelligent and more rooted in the context of the task, which is why many organizations invest in MCP server development. This ensures that the LLM model gets right context about your task so that it can produce results specific to your goals. In this comprehensive guide, we&#8217;ll [&hellip;]<\/p>\n","protected":false},"author":115,"featured_media":44395,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_s2mail":"","footnotes":""},"categories":[5051],"tags":[4859,8205,8206,4856,8204,8207],"class_list":["post-44383","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai-development","tag-ai-agent-development","tag-ai-agent-for-software-development","tag-artificial-intelligence-agents","tag-building-ai-agents","tag-mcp-development","tag-mcp-server-development"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>AI Agent Development Example with Custom MCP Server: Part I<\/title>\n<meta name=\"description\" content=\"Learn how to build an AI-powered code review agent with a custom MCP server in this step-by-step guide. Part I covers the core development process.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AI Agent Development Example with Custom MCP Server: Part I\" \/>\n<meta property=\"og:description\" content=\"Learn how to build an AI-powered code review agent with a custom MCP server in this step-by-step guide. Part I covers the core development process.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review\" \/>\n<meta property=\"og:site_name\" content=\"Mobisoft Infotech\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-16T04:47:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-12T08:46:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/og-ai-agent-development-custom-mcp-server-code-review.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"525\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Shubham Agarwal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Shubham Agarwal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review#article\",\"isPartOf\":{\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review\"},\"author\":{\"name\":\"Shubham Agarwal\",\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/#\/schema\/person\/bca2da51a24299ab60cb8b27cae32db7\"},\"headline\":\"AI Agent Development Example with Custom MCP Server: Build A Code Review Agent &#8211; Part I\",\"datePublished\":\"2025-10-16T04:47:42+00:00\",\"dateModified\":\"2026-03-12T08:46:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review\"},\"wordCount\":2035,\"image\":{\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review#primaryimage\"},\"thumbnailUrl\":\"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/ai-agent-development-custom-mcp-server-code-review.png\",\"keywords\":[\"ai agent development\",\"AI Agent for Software Development\",\"artificial intelligence agents\",\"building ai agents\",\"MCP Development\",\"mcp server development\"],\"articleSection\":[\"AI Development\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review\",\"url\":\"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review\",\"name\":\"AI Agent Development Example with Custom MCP Server: Part I\",\"isPartOf\":{\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review#primaryimage\"},\"image\":{\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review#primaryimage\"},\"thumbnailUrl\":\"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/ai-agent-development-custom-mcp-server-code-review.png\",\"datePublished\":\"2025-10-16T04:47:42+00:00\",\"dateModified\":\"2026-03-12T08:46:58+00:00\",\"author\":{\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/#\/schema\/person\/bca2da51a24299ab60cb8b27cae32db7\"},\"description\":\"Learn how to build an AI-powered code review agent with a custom MCP server in this step-by-step guide. Part I covers the core development process.\",\"breadcrumb\":{\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review#primaryimage\",\"url\":\"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/ai-agent-development-custom-mcp-server-code-review.png\",\"contentUrl\":\"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/ai-agent-development-custom-mcp-server-code-review.png\",\"width\":855,\"height\":392,\"caption\":\"AI Agent Development Example with Custom MCP Server for Code Review Automation\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/mobisoftinfotech.com\/resources\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AI Agent Development Example with Custom MCP Server: Build A Code Review Agent &#8211; Part I\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/#website\",\"url\":\"https:\/\/mobisoftinfotech.com\/resources\/\",\"name\":\"Mobisoft Infotech\",\"description\":\"Discover Mobility\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/mobisoftinfotech.com\/resources\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/#\/schema\/person\/bca2da51a24299ab60cb8b27cae32db7\",\"name\":\"Shubham Agarwal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/0f49f7e61c4dcd39d24de193c609fc9713af2c8638b8d56f2c3579fc975da802?s=96&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0f49f7e61c4dcd39d24de193c609fc9713af2c8638b8d56f2c3579fc975da802?s=96&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0f49f7e61c4dcd39d24de193c609fc9713af2c8638b8d56f2c3579fc975da802?s=96&r=g\",\"caption\":\"Shubham Agarwal\"},\"sameAs\":[\"https:\/\/mobisoftinfotech.com\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"AI Agent Development Example with Custom MCP Server: Part I","description":"Learn how to build an AI-powered code review agent with a custom MCP server in this step-by-step guide. Part I covers the core development process.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review","og_locale":"en_US","og_type":"article","og_title":"AI Agent Development Example with Custom MCP Server: Part I","og_description":"Learn how to build an AI-powered code review agent with a custom MCP server in this step-by-step guide. Part I covers the core development process.","og_url":"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review","og_site_name":"Mobisoft Infotech","article_published_time":"2025-10-16T04:47:42+00:00","article_modified_time":"2026-03-12T08:46:58+00:00","og_image":[{"width":1000,"height":525,"url":"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/og-ai-agent-development-custom-mcp-server-code-review.png","type":"image\/png"}],"author":"Shubham Agarwal","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Shubham Agarwal","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review#article","isPartOf":{"@id":"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review"},"author":{"name":"Shubham Agarwal","@id":"https:\/\/mobisoftinfotech.com\/resources\/#\/schema\/person\/bca2da51a24299ab60cb8b27cae32db7"},"headline":"AI Agent Development Example with Custom MCP Server: Build A Code Review Agent &#8211; Part I","datePublished":"2025-10-16T04:47:42+00:00","dateModified":"2026-03-12T08:46:58+00:00","mainEntityOfPage":{"@id":"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review"},"wordCount":2035,"image":{"@id":"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review#primaryimage"},"thumbnailUrl":"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/ai-agent-development-custom-mcp-server-code-review.png","keywords":["ai agent development","AI Agent for Software Development","artificial intelligence agents","building ai agents","MCP Development","mcp server development"],"articleSection":["AI Development"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review","url":"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review","name":"AI Agent Development Example with Custom MCP Server: Part I","isPartOf":{"@id":"https:\/\/mobisoftinfotech.com\/resources\/#website"},"primaryImageOfPage":{"@id":"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review#primaryimage"},"image":{"@id":"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review#primaryimage"},"thumbnailUrl":"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/ai-agent-development-custom-mcp-server-code-review.png","datePublished":"2025-10-16T04:47:42+00:00","dateModified":"2026-03-12T08:46:58+00:00","author":{"@id":"https:\/\/mobisoftinfotech.com\/resources\/#\/schema\/person\/bca2da51a24299ab60cb8b27cae32db7"},"description":"Learn how to build an AI-powered code review agent with a custom MCP server in this step-by-step guide. Part I covers the core development process.","breadcrumb":{"@id":"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review#primaryimage","url":"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/ai-agent-development-custom-mcp-server-code-review.png","contentUrl":"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2025\/10\/ai-agent-development-custom-mcp-server-code-review.png","width":855,"height":392,"caption":"AI Agent Development Example with Custom MCP Server for Code Review Automation"},{"@type":"BreadcrumbList","@id":"https:\/\/mobisoftinfotech.com\/resources\/blog\/ai-development\/ai-agent-development-custom-mcp-server-code-review#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/mobisoftinfotech.com\/resources\/"},{"@type":"ListItem","position":2,"name":"AI Agent Development Example with Custom MCP Server: Build A Code Review Agent &#8211; Part I"}]},{"@type":"WebSite","@id":"https:\/\/mobisoftinfotech.com\/resources\/#website","url":"https:\/\/mobisoftinfotech.com\/resources\/","name":"Mobisoft Infotech","description":"Discover Mobility","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/mobisoftinfotech.com\/resources\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/mobisoftinfotech.com\/resources\/#\/schema\/person\/bca2da51a24299ab60cb8b27cae32db7","name":"Shubham Agarwal","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/0f49f7e61c4dcd39d24de193c609fc9713af2c8638b8d56f2c3579fc975da802?s=96&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/0f49f7e61c4dcd39d24de193c609fc9713af2c8638b8d56f2c3579fc975da802?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0f49f7e61c4dcd39d24de193c609fc9713af2c8638b8d56f2c3579fc975da802?s=96&r=g","caption":"Shubham Agarwal"},"sameAs":["https:\/\/mobisoftinfotech.com\/"]}]}},"_links":{"self":[{"href":"https:\/\/mobisoftinfotech.com\/resources\/wp-json\/wp\/v2\/posts\/44383","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mobisoftinfotech.com\/resources\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mobisoftinfotech.com\/resources\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mobisoftinfotech.com\/resources\/wp-json\/wp\/v2\/users\/115"}],"replies":[{"embeddable":true,"href":"https:\/\/mobisoftinfotech.com\/resources\/wp-json\/wp\/v2\/comments?post=44383"}],"version-history":[{"count":20,"href":"https:\/\/mobisoftinfotech.com\/resources\/wp-json\/wp\/v2\/posts\/44383\/revisions"}],"predecessor-version":[{"id":47628,"href":"https:\/\/mobisoftinfotech.com\/resources\/wp-json\/wp\/v2\/posts\/44383\/revisions\/47628"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mobisoftinfotech.com\/resources\/wp-json\/wp\/v2\/media\/44395"}],"wp:attachment":[{"href":"https:\/\/mobisoftinfotech.com\/resources\/wp-json\/wp\/v2\/media?parent=44383"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mobisoftinfotech.com\/resources\/wp-json\/wp\/v2\/categories?post=44383"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mobisoftinfotech.com\/resources\/wp-json\/wp\/v2\/tags?post=44383"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}