test-serper-mcp

test-serper-mcp

Provides access to Serper.dev's Google Search API for searching, news, images, and places with support for both API key authentication and blockchain-based pay-per-use payment.

Category
Visit Server

README

test-serper-mcp MCP Server

This is an MCP (Model Context Protocol) server that provides with authentication via Bearer tokens access to the test-serper-mcp API. It enables AI agents and LLMs to interact with test-serper-mcp through standardized tools.

Features

  • 🔧 MCP Protocol: Built on the Model Context Protocol for seamless AI integration
  • 🌐 Full API Access: Provides tools for interacting with test-serper-mcp endpoints
  • 🔐 Secure Authentication: Supports API key authentication via Bearer tokens
  • 💳 HTTP 402 Payment Protocol: Dual-mode operation (authenticated or paid access)
  • 🔗 D402 Integration: Uses traia_iatp.d402 for blockchain payment verification
  • 🐳 Docker Support: Easy deployment with Docker and Docker Compose
  • Async Operations: Built with FastMCP for efficient async handling

API Documentation

Available Tools

This server provides the following tools:

  • example_tool: Placeholder tool (to be implemented)
  • get_api_info: Get information about the API service and authentication status

Note: Replace example_tool with actual test-serper-mcp API tools based on the documentation.

Installation

Using Docker (Recommended)

  1. Clone this repository:

    git clone https://github.com/Traia-IO/test-serper-mcp-mcp-server.git
    cd test-serper-mcp-mcp-server
    
  2. Set your API key:

    export TEST_SERPER_MCP_API_KEY="your-api-key-here"
    
  3. Run with Docker:

    ./run_local_docker.sh
    

Using Docker Compose

  1. Create a .env file with your configuration:

Server's internal API key (for payment mode)

TEST_SERPER_MCP_API_KEY=your-api-key-here

Server payment address (for HTTP 402 protocol)

SERVER_ADDRESS=0x1234567890123456789012345678901234567890

Operator keys (for signing settlement attestations)

MCP_OPERATOR_PRIVATE_KEY=0x1234567890abcdef... MCP_OPERATOR_ADDRESS=0x9876543210fedcba...

Optional: Testing mode (skip settlement for local dev)

D402_TESTING_MODE=false PORT=8000


2. Start the server:
```bash
docker-compose up

Manual Installation

  1. Install dependencies using uv:

    uv pip install -e .
    
  2. Run the server:

TEST_SERPER_MCP_API_KEY="your-api-key-here" uv run python -m server


## Usage

### Health Check

Test if the server is running:
```bash
python mcp_health_check.py

Using with CrewAI

from traia_iatp.mcp.traia_mcp_adapter import create_mcp_adapter_with_auth

# Connect with authentication
with create_mcp_adapter_with_auth(
    url="http://localhost:8000/mcp/",
    api_key="your-api-key"
) as tools:
    # Use the tools
    for tool in tools:
        print(f"Available tool: {tool.name}")
        
    # Example usage
    result = await tool.example_tool(query="test")
    print(result)

Authentication & Payment (HTTP 402 Protocol)

This server supports two modes of operation:

Mode 1: Authenticated Access (Free)

Clients with their own test-serper-mcp API key can use the server for free:

# Request with client's API key
curl -X POST http://localhost:8000/mcp \
  -H "Authorization: Bearer CLIENT_TEST_SERPER_MCP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"method":"tools/call","params":{"name":"example_tool","arguments":{"query":"test"}}}'

Flow:

  1. Client provides their test-serper-mcp API key
  2. Server uses client's API key to call test-serper-mcp API
  3. No payment required
  4. Client pays test-serper-mcp directly

Mode 2: Payment Required (Paid Access)

Clients without an API key can pay-per-use via HTTP 402 protocol:

# Request with payment proof (x402/d402 protocol)
curl -X POST http://localhost:8000/mcp \
  -H "X-PAYMENT: <base64_encoded_x402_payment>" \
  -H "Content-Type: application/json" \
  -d '{"method":"tools/call","params":{"name":"example_tool","arguments":{"query":"test"}}}'

Flow:

  1. Client makes initial request without payment
  2. Server returns HTTP 402 with PaymentRequirements (token, network, amount)
  3. Client creates EIP-3009 transferWithAuthorization payment signature
  4. Client base64-encodes payment and sends in X-PAYMENT header
  5. Server verifies payment via traia_iatp.d402.mcp_middleware
  6. Server uses its INTERNAL test-serper-mcp API key to call the API
  7. Client receives result

D402 Protocol Details

This server uses the traia_iatp.d402 module for payment verification:

  • Payment Method: EIP-3009 transferWithAuthorization (gasless)
  • Supported Tokens: USDC, TRAIA, or any ERC20 token
  • Default Price: $0.001 per request (configurable via DEFAULT_PRICE_USD)
  • Networks: Base Sepolia, Sepolia, Polygon, etc.
  • Facilitator: d402.org (public) or custom facilitator

Environment Variables for Payment Mode

# Required
TEST_SERPER_MCP_API_KEY=your_internal_test-serper-mcp_api_key  # Server's API key (for payment mode)
SERVER_ADDRESS=0x1234567890123456789012345678901234567890  # Server's payment address

# Required for Settlement (Production)
MCP_OPERATOR_PRIVATE_KEY=0x1234...  # Private key for signing settlement attestations
MCP_OPERATOR_ADDRESS=0x5678...      # Operator's public address (for verification)

# Optional
D402_FACILITATOR_URL=https://facilitator.d402.net  # Facilitator service URL
D402_FACILITATOR_API_KEY=your_key  # For private facilitator
D402_TESTING_MODE=false  # Set to 'true' for local testing without settlement

Operator Keys:

  • MCP_OPERATOR_PRIVATE_KEY: Used to sign settlement attestations (proof of service completion)
  • MCP_OPERATOR_ADDRESS: Public address corresponding to the private key
  • Required for on-chain settlement via IATP Settlement Layer
  • Can be the same as SERVER_ADDRESS or a separate operator key

Note on Per-Endpoint Configuration: Each endpoint's payment requirements (token address, network, price) are embedded in the tool code. They come from the endpoint configuration when the server is generated.

How It Works

  1. Client Decision:

    • Has test-serper-mcp API key? → Mode 1 (Authenticated)
    • No API key but willing to pay? → Mode 2 (Payment)
  2. Server Response:

    • Mode 1: Uses client's API key (free for client)
    • Mode 2: Uses server's API key (client pays server)
  3. Business Model:

    • Mode 1: No revenue (passthrough)
    • Mode 2: Revenue from pay-per-use (monetize server's API subscription)

Development

Testing the Server

  1. Start the server locally
  2. Run the health check: python mcp_health_check.py
  3. Test individual tools using the CrewAI adapter

Adding New Tools

To add new tools, edit server.py and:

  1. Create API client functions for test-serper-mcp endpoints
  2. Add @mcp.tool() decorated functions
  3. Update this README with the new tools
  4. Update deployment_params.json with the tool names in the capabilities array

Deployment

Deployment Configuration

The deployment_params.json file contains the deployment configuration for this MCP server:

{
  "github_url": "https://github.com/Traia-IO/test-serper-mcp-mcp-server",
  "mcp_server": {
    "name": "test-serper-mcp-mcp",
    "description": "Test deployment of serper google search api - search, news, images, places via serper.dev",
    "server_type": "streamable-http",
"requires_api_key": true,
    "api_key_header": "Authorization",
"capabilities": [
      // List all implemented tool names here
      "example_tool",
      "get_api_info"
    ]
  },
  "deployment_method": "cloud_run",
  "gcp_project_id": "traia-mcp-servers",
  "gcp_region": "us-central1",
  "tags": ["test-serper-mcp", "api"],
  "ref": "main"
}

Important: Always update the capabilities array when you add or remove tools!

Google Cloud Run

This server is designed to be deployed on Google Cloud Run. The deployment will:

  1. Build a container from the Dockerfile
  2. Deploy to Cloud Run with the specified configuration
  3. Expose the /mcp endpoint for client connections

Environment Variables

  • PORT: Server port (default: 8000)
  • STAGE: Environment stage (default: MAINNET, options: MAINNET, TESTNET)
  • LOG_LEVEL: Logging level (default: INFO)
  • TEST_SERPER_MCP_API_KEY: Your test-serper-mcp API key (required)

Troubleshooting

  1. Server not starting: Check Docker logs with docker logs <container-id>
  2. Authentication errors: Ensure your API key is correctly set in the environment
  3. API errors: Verify your API key has the necessary permissions3. Tool errors: Check the server logs for detailed error messages

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Implement new tools or improvements
  4. Update the README and deployment_params.json
  5. Submit a pull request

License

MIT License

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured