Săriți la conținutul principal
Echipament de creștere

Server MCP ValueSerp - Căutare Google accesibilă

Stefan-Lucian Deleanu

Să trecem direct la subiect. Dacă folosești Claude pentru ceva serios, ai dat de limita cunoștințelor. Datele de antrenament ale modelului se opresc la o anumită dată, iar tu ești lăsat să explici clienților de ce asistentul tău AI crede că este încă 2023 sau cândva.

Serverul MCP ValueSerp rezolvă această problemă oferindu-i lui Claude acces direct la rezultatele căutării Google. Fără scraping web, fără coșmaruri de analiză HTML—doar apeluri API clare care returnează date structurate.

GitHub - Incorporo/valueserp-googlesearch-mcp: Server MCP pentru accesarea valueserp (API Google Search accesibil)
Server MCP pentru accesarea valueserp (API Google Search accesibil) - Incorporo/valueserp-googlesearch-mcp

Ceea ce obțineți de fapt

Aceasta este un server Model Context Protocol (MCP) care acționează ca un pod între Claude și API-ul de căutare ValueSerp. Acesta expune patru puncte finale de căutare:

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

Fiecare endpoint returnează date JSON pe care Claude le poate analiza și folosi în răspunsuri. Fără încorporări iframe, fără execuție JavaScript—doar date.

Implementarea Tehnică

Serverul este construit pe TypeScript și folosește MCP SDK. Iată arhitectura de bază:

// 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
  }
}

Partea interesantă este validarea parametrilor. API-ul de căutare Google are zeci de parametri, iar trimiterea combinațiilor invalide returnează erori criptice. Serverul validează totul înainte de a face cereri:


// 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
});

Performanță și Limitări

Hai să discutăm despre cifrele care contează cu adevărat:

  • Timp de răspuns: 200-000 ms, în funcție de complexitatea interogării
  • Limite de rată: Depinde de planul tău ValueSerp (de obicei 1000-10000 de cereri/lună)
  • Calitatea rezultatului: La fel ca API-ul public de la Google—fără nimic special
  • Targetare geografică: Suportă toate domeniile Google și parametrii de locație

Ce nu face:

  • Execută JavaScript pe paginile de rezultate
  • Ocolirea paywall-urilor sau a zidurilor de autentificare
  • Cachează rezultatele (fiecare interogare accesează API-ul)
  • Gestionează autentificarea pentru conținut privat

Cazuri de utilizare din lumea reală care funcționează efectiv

Uitați de vorbele goale despre afaceri. Iată pentru ce folosesc de fapt dezvoltatorii acest lucru:

1. Asistent Documentație Tehnică


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. Răspuns la incidente de securitate


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. Automatizarea Analizei Competitive


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..."

Configurare Fără Asistență

Presupunând că poți gestiona comenzi de bază npm:


# 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"]
    }
  }
}

Utilizarea avansată a parametrilor

Puterea reală provine din combinațiile de parametri. Iată ce nu îți vor spune majoritatea tutorialelor:


// 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'
});

Analiza costurilor

Hai să fim transparenți în legătură cu economia:

  • Cost pe căutare: $0.0025 sau mai puțin (pe planuri)
  • Punctul de echilibru: ~20 căutări/zi vs timpul de cercetare manuală

Cele mai multe alternative pentru SERP sunt mai scumpe, ceea ce face ca aceasta să fie o alegere bună pentru cei cu un buget limitat care sunt dispuși să tolereze o latență mai mare.

Gestionarea erorilor și cazurile limită

Serverul gestionează modurile comune de eșec cu eleganță:


// 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');
}

Concluzia

Această unealtă face un singur lucru: îi oferă lui Claude acces la rezultatele actuale ale căutării. Nu este revoluționară, nu este „căutare alimentată de AI” - este doar un pod bine implementat între două servicii.

Dacă ai nevoie ca Claude să știe despre lucruri care s-au întâmplat după limita de instruire, aceasta funcționează. Dacă ai nevoie să caute în documentele tale interne sau să acceseze conținut autenticat, caută altundeva.

Codul este pe GitHub sub GPL-3.0. Fork-uiește-l, îmbunătățește-l sau plângi-te de el—alegerea este a ta.

Resurse