Skip to main content
Glama
parnexcodes

Synthetic Web Search MCP Server

by parnexcodes

Synthetic Web Search MCP Server

A Model Context Protocol (MCP) server that exposes the Synthetic web search API as a tool for use with Claude and other MCP-compatible applications.

npm version

Overview

This server provides a search_web tool that allows MCP clients to perform web searches using the Synthetic API. Search results are returned as formatted JSON containing URL, title, text, and published date fields.

Related MCP server: search-online-mcp

Quick Start with Claude Code

Add the MCP server to Claude Code with a single command:

claude mcp add synthetic-web-search -e SYNTHETIC_API_KEY=your_api_key_here -- npx -y synthetic-web-search-mcp@latest

Replace your_api_key_here with your actual Synthetic API key.

Usage with Claude Desktop

To use this MCP server with Claude Desktop, add the following to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "synthetic-web-search": {
      "command": "npx",
      "args": ["-y", "synthetic-web-search-mcp@latest"],
      "env": {
        "SYNTHETIC_API_KEY": "your_actual_api_key_here"
      }
    }
  }
}

After adding the configuration, restart Claude Desktop. You can then use the web search tool in your conversations.

Usage with opencode

To use this MCP server with opencode, add the following to your opencode configuration:

{
  "mcp": {
    "synthetic-web-search": {
      "type": "local",
      "command": ["npx", "-y", "synthetic-web-search-mcp@latest"],
      "environment": {
        "SYNTHETIC_API_KEY": "your_actual_api_key_here"
      },
      "enabled": true
    }
  }
}

Replace your_actual_api_key_here with your actual Synthetic API key. Restart opencode after adding the configuration.

Local Development & Testing

1. Prerequisites

2. Install & build

npm install
npm run build

3. Test with MCP Inspector

The fastest way to verify the server interactively without any client configuration:

SYNTHETIC_API_KEY=your_key_here \
  npx @modelcontextprotocol/inspector node dist/index.js

This opens a browser UI where you can invoke search_web directly. Try:

  • query only → text is capped at the default 1000 characters.

  • query + max_text_length: 200 → tighter truncation to quickly scan results.

  • query + max_text_length: 5000 → more content when you need full detail.

4. Test with Claude Code (local build)

claude mcp add synthetic-web-search \
  -e SYNTHETIC_API_KEY=your_key_here \
  -- node /absolute/path/to/synthetic-web-search-mcp/dist/index.js

5. Test with Claude Desktop (local build)

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "synthetic-web-search": {
      "command": "node",
      "args": ["/absolute/path/to/synthetic-web-search-mcp/dist/index.js"],
      "env": {
        "SYNTHETIC_API_KEY": "your_key_here"
      }
    }
  }
}

Restart Claude Desktop after saving the file.

Available Tools

search_web

Search the web using the Synthetic API.

Arguments:

  • query (string, required): The search query string

  • max_text_length (number, optional, default: 1000): Maximum number of characters to include in the text field of each result. Useful for preventing large snippets from flooding the context window. Results exceeding this length are truncated with .... Pass a larger value when you need the full content of a result.

Example:

Search for " TypeScript documentation"

Returns: A JSON array of search results, each containing:

  • url: The link to the search result

  • title: The title of the page

  • text: A snippet or content from the page

  • published: Publication date (if available)

API Details

  • Endpoint: https://api.synthetic.new/v2/search

  • Method: POST

  • Authentication: Bearer token via Authorization header

  • Request Body: JSON with query field

Project Structure

synthetic-web-search-mcp/
├── package.json
├── tsconfig.json
├── .env.example
├── README.md
├── src/
│   └── index.ts
└── dist/          (generated after build)
    ├── index.js
    └── index.d.ts

License

MIT

Available Tools

1 tool
search_webC

Search the web using Synthetic API

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query string

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'using Synthetic API' but does not explain what this entails—such as rate limits, authentication needs, result formats, or any side effects. For a web search tool with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no wasted words. It is appropriately sized and front-loaded, clearly stating the tool's purpose without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete. It does not address behavioral aspects like how results are returned, error handling, or API-specific constraints. For a tool that interacts with an external service, more context is needed to be fully helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the single parameter 'query' documented as 'Search query string'. The description does not add any additional meaning beyond this, such as query formatting or examples. With high schema coverage, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Search the web') and the resource ('using Synthetic API'), providing a specific verb+resource combination. However, since there are no sibling tools mentioned, it cannot demonstrate differentiation from alternatives, which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives or any contextual prerequisites. It simply states what the tool does without indicating appropriate scenarios or exclusions, leaving usage entirely implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev0.1.4
    • First observedsearch_web

TDQS

B3.1/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of ambiguity or overlap between tools. The tool 'search_web' has a clear, distinct purpose that cannot be confused with any other tool in this set.

Naming Consistency5/5

The single tool name follows a consistent verb_noun pattern ('search_web'), and with only one tool, there is no inconsistency to evaluate. The naming is straightforward and predictable.

Tool Count2/5

A single tool for a web search server feels thin and limited in scope. While it covers the core search functionality, it lacks additional operations like filtering results, getting details, or handling multiple queries, making the server appear underdeveloped for its purpose.

Completeness2/5

The tool surface is severely incomplete for a web search domain. It only provides a basic search operation, missing essential features such as pagination, result refinement, or accessing specific search result details, which will likely cause agent failures in complex tasks.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Provides privacy-focused web search capabilities with zero-data-retention for MCP-enabled applications. It allows users to execute search queries and retrieve ranked results using the Synthetic Search API.
    1
    7 npm
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Exposes a standardized web search tool via Brave Search for MCP clients like Codex, Claude, and Cursor, returning stable JSON.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables MCP hosts to perform cited web searches and receive source-bearing results with titles, URLs, snippets, and sources for evidence-grounded answers.
    1
    15 npm
    MIT