Skip to main content
Growth Gear

ValueSerp MCP Server - Affordable Google Search

โ€” Stefan-Lucian Deleanu

Let's cut to the chase. If you're using Claude for anything serious, you've hit the knowledge cutoff wall. The model's training data stops at a certain date, and you're left explaining to clients why your AI assistant thinks it's still 2023 or whenever.

The ValueSerp MCP Server fixes this by giving Claude direct access to Google's search results. No web scraping, no HTML parsing nightmaresโ€”just clean API calls that return structured data.

GitHub - Incorporo/valueserp-googlesearch-mcp: MCP Server for accessing valueserp (affordable Google Search API)
MCP Server for accessing valueserp (affordable Google Search API) - Incorporo/valueserp-googlesearch-mcp

What You're Actually Getting

This is a Model Context Protocol (MCP) server that acts as a bridge between Claude and ValueSerp's search API. It exposes four search endpoints:

  • google_search - Standard web search
  • google_news_search - News-specific results
  • google_images_search - Image search with filtering
  • google_videos_search - Video content search

Each endpoint returns JSON data that Claude can parse and use in responses. No iframe embeds, no JavaScript executionโ€”just data.

The Technical Implementation

The server is built on TypeScript and uses the MCP SDK. Here's the core architecture:

// Client handles API communication
export class ValueSerpClient {
  private async makeRequest(endpoint: string, params: Record<string, any>): Promise<ValueSerpResponse> {
    const url = this.buildUrl(endpoint, params);
    const response = await fetch(url, {
      method: 'GET',
      headers: {
        'Accept': 'application/json',
        'User-Agent': 'ValueSerp-MCP-Server/1.0.0'
      }
    });
    // Error handling and response parsing
  }
}

The interesting part is the parameter validation. Google's search API has dozens of parameters, and sending invalid combinations returns cryptic errors. The server validates everything before making requests:


// Parameter validation with Zod schemas
const searchParamsSchema = z.object({
  q: z.string().describe("Search query (required)"),
  num: z.number().min(1).max(100).default(10).optional(),
  time_period: z.enum(["last_hour", "last_day", "last_week", "last_month", "last_year", "custom"]).optional(),
  // ... 20+ more parameters
});

Performance and Limitations

Let's talk numbers that actually matter:

  • Response time: 200-000ms depending on query complexity
  • Rate limits: Depends on your ValueSerp plan (typically 1000-10000 requests/month)
  • Result quality: Same as Google's public APIโ€”no special sauce
  • Geographic targeting: Supports all Google domains and location parameters

What it doesn't do:

  • Execute JavaScript on result pages
  • Bypass paywalls or login walls
  • Cache results (each query hits the API)
  • Handle authentication for private content

Real-World Use Cases That Actually Work

Forget the enterprise fluff. Here's what developers are actually using this for:

1. Technical Documentation Assistant


User: "What breaking changes were introduced in React 19?"
Claude: [Searches for recent React 19 documentation and changelog]
       "Based on the official React blog post from [actual date], React 19 introduces..."

2. Security Incident Response


User: "Check if CVE-2024-XXXXX affects our stack"
Claude: [Searches vulnerability databases and security advisories]
       "This CVE was published 3 hours ago. It affects Node.js versions..."

3. Competitive Analysis Automation


User: "What features did Competitor X announce this week?"
Claude: [Searches news and company blogs]
       "According to their blog post from Monday, they're launching..."

Setup Without the Hand-Holding

Assuming you can handle basic npm commands:


# Clone and build
git clone https://github.com/valueserp/mcp-server
cd mcp-server
npm install && npm run build

# Set your API key
export VALUESERP_API_KEY=your_key_here

# Add to Claude config
# Edit: ~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "valueserp": {
      "command": "node",
      "args": ["/path/to/valueserp-mcp/dist/server.js"]
    }
  }
}

Advanced Parameter Usage

The real power comes from parameter combinations. Here's what most tutorials won't tell you:


// Time-boxed news search with duplicate filtering
await claude.use_tool('google_news_search', {
  q: 'kubernetes vulnerability',
  time_period: 'last_day',
  sort_by: 'date',
  show_duplicates: false,  // Requires sort_by: 'date'
  num: 50
});

// Location-specific results with auto-configuration
await claude.use_tool('google_search', {
  q: 'restaurant reviews',
  location: 'Tokyo, Japan',
  location_auto: true,  // Auto-sets gl, hl, and google_domain
  order_online: true    // Includes delivery/pickup data
});

// Academic image search
await claude.use_tool('google_images_search', {
  q: 'cell mitosis diagram',
  images_usage: 'non_commercial_reuse_with_modification',
  images_type: 'line_drawing',
  images_size: 'large'
});

Cost Analysis

Let's be transparent about the economics:

  • Cost per search: $0.0025 or less (on plans)
  • Break-even point: ~20 searches/day vs manual research time

Most alternatives for SERP are more expensive, making this a good choice for those on a budget that are willing to tolerate more latency.

Error Handling and Edge Cases

The server handles common failure modes gracefully:


// Built-in retry logic for transient failures
if (!response.ok) {
  const errorText = await response.text();
  throw new Error(`ValueSerp API error: ${response.status} ${response.statusText} - ${errorText}`);
}

// Parameter validation prevents most 400 errors
if (params.show_duplicates && params.sort_by !== 'date') {
  throw new ValidationError('show_duplicates requires sort_by=date');
}

The Bottom Line

This tool does one thing: it gives Claude access to current search results. It's not revolutionary, it's not "AI-powered search"โ€”it's just a well-implemented bridge between two services.

If you need Claude to know about things that happened after its training cutoff, this works. If you need it to search your internal documents or access authenticated content, look elsewhere.

The code is on GitHub under GPL-3.0. Fork it, improve it, or complain about itโ€”your choice.

Resources