{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"awesome-google-pse-cse","slug":"google-pse-cse","name":"Google PSE/CSE","type":"mcp","url":"https://github.com/rendyfebry/google-pse-mcp","page_url":"https://unfragile.ai/google-pse-cse","categories":["mcp-servers"],"tags":[],"pricing":{"model":"open_source","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"awesome-google-pse-cse__cap_0","uri":"capability://search.retrieval.mcp.native.web.search.via.google.custom.search.api","name":"mcp-native web search via google custom search api","description":"Exposes a single 'search' tool through the Model Context Protocol that forwards queries to Google's Custom Search API with structured parameter validation. The server implements the MCP tool definition schema with comprehensive input validation (query string, pagination, language restrictions, safety filtering) and returns JSON-formatted search results. Uses stdio transport for client-server communication, allowing MCP clients (Claude Desktop, Cline, VS Code Copilot) to invoke searches without direct API integration.","intents":["I want my AI agent to search the web in real-time without hardcoding API calls","I need to give Claude Desktop or Cline access to Google search results within conversations","I want to restrict searches to specific languages or enable safe search filtering programmatically"],"best_for":["AI agent builders integrating search into Claude Desktop or Cline workflows","Teams building MCP-compatible tools that need web search capabilities","Developers prototyping AI assistants with real-time information retrieval"],"limitations":["Single search tool only — no advanced query operators or multi-search batching","Depends on Google Custom Search API quota limits (100 queries/day free tier)","No built-in result caching or deduplication across multiple searches","Site-restricted search requires separate API endpoint configuration","Results limited to 10 items per page maximum (Google CSE constraint)"],"requires":["Google Custom Search API key (free tier available)","Custom Search Engine ID (cx parameter from Google CSE setup)","Node.js 16+ runtime for MCP server execution","MCP-compatible client (Claude Desktop, Cline, VS Code Copilot, or llm CLI)"],"input_types":["text (search query string)","integer (page number for pagination)","integer (results per page, 1-10)","string (language restriction code, e.g., 'lang_en')","boolean (safe search toggle)"],"output_types":["JSON (structured search results with title, link, snippet)","JSON (pagination metadata)"],"categories":["search-retrieval","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-google-pse-cse__cap_1","uri":"capability://data.processing.analysis.parameterized.search.query.construction.with.validation","name":"parameterized search query construction with validation","description":"Implements a comprehensive input schema (defined in src/index.ts lines 34-65) that validates and structures search parameters before forwarding to Google's API. The schema enforces type constraints (string for query, integer for page/size), range validation (size 1-10), enum constraints (sort: 'date' only), and optional language restriction codes. Parameter validation occurs in the CallToolRequestSchema handler, preventing malformed requests from reaching the Google API and reducing quota waste.","intents":["I want to ensure search queries are properly formatted before hitting the Google API quota","I need to restrict searches to specific languages or enable safe search from the agent level","I want pagination support without manually calculating offsets"],"best_for":["Developers building multi-language AI agents that need language-specific search","Teams with limited Google CSE quota who want to prevent malformed requests","Builders implementing search in agents that need safe search filtering for user-facing applications"],"limitations":["Sort parameter only supports 'date' — no relevance, popularity, or custom sorting","Language restriction uses Google's language codes (e.g., 'lang_en') — no automatic language detection","No query expansion or synonym handling — raw query strings passed to Google API","Page size capped at 10 results (Google CSE API constraint, not MCP server limitation)"],"requires":["Valid Google Custom Search Engine ID (cx) configured in server","Understanding of Google language restriction codes for lr parameter","MCP client that supports tool input schema validation"],"input_types":["string (q: search query, required)","integer (page: pagination offset, optional, default 1)","integer (size: results per page, optional, 1-10, default 10)","string (sort: sort expression, optional, only 'date' supported)","boolean (safe: enable safe search, optional)","string (lr: language restriction code, optional, e.g., 'lang_en')","boolean (siteRestricted: use site-restricted API endpoint, optional)"],"output_types":["JSON (validated parameter object passed to Google API)","error response if validation fails"],"categories":["data-processing-analysis","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-google-pse-cse__cap_2","uri":"capability://tool.use.integration.google.custom.search.api.request.translation.and.forwarding","name":"google custom search api request translation and forwarding","description":"Translates MCP tool invocations into properly formatted HTTP requests to Google's Custom Search API endpoints. The CallToolRequestSchema handler (src/index.ts lines 67-157) constructs query parameters, handles authentication via API key, and supports two endpoint modes: standard Google Custom Search API (https://www.googleapis.com/customsearch) and site-restricted variants. Responses are parsed from Google's JSON format and reformatted into MCP-compliant structured results with title, link, and snippet fields.","intents":["I want my MCP server to authenticate with Google API using stored credentials","I need to switch between standard and site-restricted search endpoints without code changes","I want search results formatted consistently regardless of Google API response variations"],"best_for":["MCP server operators managing Google API credentials centrally","Teams using both standard and site-restricted Custom Search Engines","Builders who want to abstract Google API details from MCP clients"],"limitations":["No built-in retry logic for API failures — transient errors propagate to client","API key passed as command-line argument — not suitable for multi-tenant deployments without credential rotation","No request batching — each search query generates one API call","No caching of results — identical queries trigger separate API calls","Error responses from Google API returned as-is without normalization"],"requires":["Google API key with Custom Search API enabled (from Google Cloud Console)","Custom Search Engine ID (cx) from Google CSE setup","Network access to https://www.googleapis.com/customsearch endpoint","Node.js fetch API or equivalent HTTP client (built into Node 18+)"],"input_types":["MCP CallToolRequest with tool name 'search' and validated parameters"],"output_types":["JSON (Google Custom Search API response parsed into MCP format)","error object if API request fails"],"categories":["tool-use-integration","search-retrieval"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-google-pse-cse__cap_3","uri":"capability://tool.use.integration.mcp.protocol.server.lifecycle.and.tool.registration","name":"mcp protocol server lifecycle and tool registration","description":"Implements the MCP Server class from the MCP SDK with metadata configuration and tool capability declaration. The server initializes with name, version, and capabilities metadata (src/index.ts lines 20-31), registers a single 'search' tool with its input schema, and implements two request handlers: ListToolsRequestSchema (returns tool definitions) and CallToolRequestSchema (executes search requests). Uses stdio transport for bidirectional communication with MCP clients, allowing clients to discover available tools and invoke them with type-safe parameters.","intents":["I want my MCP server to advertise its search capability to MCP clients on startup","I need clients to discover the search tool schema before invoking it","I want to handle tool invocations through the standard MCP protocol without custom transport logic"],"best_for":["Developers building MCP servers that integrate external APIs","Teams standardizing on MCP for AI agent tool discovery and invocation","Builders who want to avoid custom RPC or REST API layers for tool integration"],"limitations":["Single tool per server — no multi-tool composition or tool grouping","Stdio transport only — no HTTP or WebSocket alternatives for remote deployment","Tool discovery is synchronous — no lazy loading or dynamic tool registration","No built-in tool versioning or capability negotiation","Server lifecycle tied to client connection — no persistent background tasks"],"requires":["@modelcontextprotocol/sdk package (npm dependency)","Node.js 16+ with ES modules support","MCP-compatible client that implements Server protocol (Claude Desktop, Cline, etc.)"],"input_types":["MCP ListToolsRequest (no parameters)","MCP CallToolRequest with tool name and parameters"],"output_types":["MCP ListToolsResponse (array of tool definitions with schemas)","MCP CallToolResponse (tool execution result or error)"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-google-pse-cse__cap_4","uri":"capability://automation.workflow.on.demand.server.instantiation.via.npx.with.environment.based.configuration","name":"on-demand server instantiation via npx with environment-based configuration","description":"Enables MCP clients to launch the google-pse-mcp server on-demand using 'npx -y google-pse-mcp' with command-line arguments for API credentials and endpoint configuration. The server reads arguments in order: API endpoint URL, API key, and Custom Search Engine ID (cx). This pattern eliminates persistent service deployment and allows clients to inject credentials at runtime without modifying configuration files. The server process lifecycle is tied to the client connection — it terminates when the client disconnects.","intents":["I want to use Google search in Claude Desktop without installing or managing a separate service","I need to pass API credentials securely to the MCP server at launch time","I want the search server to clean up automatically when my AI agent session ends"],"best_for":["Individual developers using Claude Desktop or Cline who want quick search integration","Teams deploying MCP servers in ephemeral environments (CI/CD, serverless functions)","Non-technical users who want to enable search without managing server infrastructure"],"limitations":["Credentials passed as command-line arguments — visible in process listings and shell history","No credential rotation or refresh — single API key per server instance","npx requires npm/Node.js installation on client machine","No built-in authentication for multi-user deployments — all users share the same API key","Server startup latency (~2-3 seconds for npm package download and Node.js startup) on first invocation"],"requires":["Node.js 16+ and npm installed on client machine","Network access to npm registry (npmjs.com) for package download","Google API key and Custom Search Engine ID available at launch time","MCP client configured with server command (e.g., Claude Desktop config.json)"],"input_types":["command-line arguments: [api_endpoint_url, api_key, cx_id]"],"output_types":["MCP server process listening on stdio"],"categories":["automation-workflow","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-google-pse-cse__cap_5","uri":"capability://search.retrieval.pagination.support.with.page.number.and.result.size.parameters","name":"pagination support with page number and result size parameters","description":"Implements pagination through two parameters: 'page' (page number, default 1) and 'size' (results per page, 1-10, default 10). The server translates these into Google Custom Search API's 'start' parameter (calculated as (page - 1) * size + 1) and 'num' parameter. This abstraction provides a familiar pagination interface (page/size) while mapping to Google's 1-indexed 'start' offset model. Clients can iterate through result sets by incrementing the page parameter without calculating offsets manually.","intents":["I want to paginate through search results without calculating API offsets manually","I need to control how many results are returned per search query","I want to fetch the next page of results by simply incrementing a page number"],"best_for":["AI agents that need to explore search results across multiple pages","Builders implementing search result browsing in conversational interfaces","Teams building search-based RAG pipelines that need to fetch multiple result batches"],"limitations":["Maximum 10 results per page (Google CSE API constraint)","Maximum 100 total results accessible (10 pages × 10 results) due to Google CSE API limits","No cursor-based pagination — offset-based pagination can miss results if index changes between requests","Page parameter is 1-indexed (page 1 = first page) — requires client-side adjustment if using 0-indexed pagination","No total result count returned — clients cannot determine how many pages exist"],"requires":["Google Custom Search Engine with sufficient quota for multiple queries","Client implementation to track page number and increment for subsequent requests"],"input_types":["integer (page: page number, optional, default 1, minimum 1)","integer (size: results per page, optional, 1-10, default 10)"],"output_types":["JSON (search results for requested page)","pagination metadata (current page, results per page)"],"categories":["search-retrieval","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-google-pse-cse__cap_6","uri":"capability://search.retrieval.language.restriction.filtering.via.language.codes","name":"language restriction filtering via language codes","description":"Supports the 'lr' (language restriction) parameter that filters search results to specific languages using Google's language code format (e.g., 'lang_en' for English, 'lang_es' for Spanish). The parameter is passed directly to Google Custom Search API's 'lr' query parameter. This enables agents to restrict searches to specific languages without post-processing results, reducing irrelevant results and API quota consumption for multilingual applications.","intents":["I want my AI agent to search only in English-language results","I need to restrict search results to a specific language for a multilingual application","I want to reduce irrelevant results by filtering by language at the API level"],"best_for":["Multilingual AI agents that need language-specific search results","Teams building localized applications with language-specific search","Builders implementing search for non-English-speaking users"],"limitations":["Requires knowledge of Google's language code format ('lang_XX') — no automatic language detection","Single language restriction per query — no multi-language OR queries","Language filtering is approximate — some results in other languages may still appear","No validation of language codes — invalid codes are silently ignored by Google API","Language codes are not standardized across search engines — different format than ISO 639-1"],"requires":["Knowledge of Google language restriction codes (documented in Google CSE documentation)","Google Custom Search Engine with language filtering enabled"],"input_types":["string (lr: language restriction code, optional, format 'lang_XX', e.g., 'lang_en')"],"output_types":["JSON (search results filtered to specified language)"],"categories":["search-retrieval","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-google-pse-cse__cap_7","uri":"capability://search.retrieval.safe.search.filtering.toggle","name":"safe search filtering toggle","description":"Implements a boolean 'safe' parameter that enables Google's safe search filtering, which removes adult content and other potentially inappropriate results. When set to true, the parameter is passed to Google Custom Search API's 'safe' query parameter. This provides a simple on/off toggle for content filtering without requiring agents to implement custom content moderation logic.","intents":["I want to filter out adult content from search results in a public-facing application","I need to ensure search results are appropriate for all audiences","I want to reduce moderation burden by filtering at the API level"],"best_for":["Teams building public-facing AI applications with diverse user bases","Builders implementing search for educational or family-friendly contexts","Applications where content moderation is a compliance requirement"],"limitations":["Safe search filtering is approximate — some inappropriate content may still appear","No granular control over filtering categories — binary on/off only","Filtering effectiveness varies by language and content type","No audit trail of filtered results — clients cannot see what was removed","Safe search may filter legitimate results (false positives)"],"requires":["Google Custom Search Engine with safe search support enabled"],"input_types":["boolean (safe: enable safe search filtering, optional, default false)"],"output_types":["JSON (search results with safe search filtering applied if safe=true)"],"categories":["search-retrieval","safety-moderation"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-google-pse-cse__cap_8","uri":"capability://search.retrieval.site.restricted.search.endpoint.switching","name":"site-restricted search endpoint switching","description":"Supports a boolean 'siteRestricted' parameter that switches between standard Google Custom Search API endpoint (https://www.googleapis.com/customsearch) and site-restricted variants. When true, the server uses an alternative endpoint configuration suitable for searching within specific sites or domains. This enables a single MCP server to serve multiple search engine configurations (standard vs. site-restricted) without redeployment, with endpoint selection determined at query time.","intents":["I want to search within a specific website or domain using a site-restricted Custom Search Engine","I need to switch between standard and site-restricted search modes without restarting the server","I want a single MCP server to support multiple Custom Search Engine configurations"],"best_for":["Teams managing multiple Custom Search Engines (standard and site-restricted) with a single MCP server","Builders implementing site-specific search within larger applications","Organizations with both public web search and internal site search requirements"],"limitations":["Endpoint switching is parameter-based — no automatic detection of appropriate endpoint","Site-restricted search requires separate Custom Search Engine configuration in Google CSE","No validation that the cx parameter is compatible with selected endpoint","Endpoint URL is hardcoded in server — cannot be changed without redeployment","No documentation of which endpoint modes are supported — clients must know valid configurations"],"requires":["Google Custom Search Engine configured for site-restricted search (if siteRestricted=true)","Separate cx parameter for site-restricted search engine (if different from standard cx)"],"input_types":["boolean (siteRestricted: use site-restricted API endpoint, optional, default false)"],"output_types":["JSON (search results from selected endpoint)"],"categories":["search-retrieval","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":30,"verified":false,"data_access_risk":"high","permissions":["Google Custom Search API key (free tier available)","Custom Search Engine ID (cx parameter from Google CSE setup)","Node.js 16+ runtime for MCP server execution","MCP-compatible client (Claude Desktop, Cline, VS Code Copilot, or llm CLI)","Valid Google Custom Search Engine ID (cx) configured in server","Understanding of Google language restriction codes for lr parameter","MCP client that supports tool input schema validation","Google API key with Custom Search API enabled (from Google Cloud Console)","Custom Search Engine ID (cx) from Google CSE setup","Network access to https://www.googleapis.com/customsearch endpoint"],"failure_modes":["Single search tool only — no advanced query operators or multi-search batching","Depends on Google Custom Search API quota limits (100 queries/day free tier)","No built-in result caching or deduplication across multiple searches","Site-restricted search requires separate API endpoint configuration","Results limited to 10 items per page maximum (Google CSE constraint)","Sort parameter only supports 'date' — no relevance, popularity, or custom sorting","Language restriction uses Google's language codes (e.g., 'lang_en') — no automatic language detection","No query expansion or synonym handling — raw query strings passed to Google API","Page size capped at 10 results (Google CSE API constraint, not MCP server limitation)","No built-in retry logic for API failures — transient errors propagate to client","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.05,"quality":0.43,"ecosystem":0.39999999999999997,"match_graph":0.25,"freshness":0.52,"weights":{"adoption":0.25,"quality":0.25,"ecosystem":0.15,"match_graph":0.23,"freshness":0.12}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"active","updated_at":"2026-06-17T09:51:03.041Z","last_scraped_at":"2026-05-03T14:00:15.503Z","last_commit":null},"community":{"stars":null,"forks":null,"weekly_downloads":null,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=google-pse-cse","compare_url":"https://unfragile.ai/compare?artifact=google-pse-cse"}},"signature":"KGtm60r22AmVrNP/Ivs9KHgXu2PYu6DHY1PxvphOfrykD8qTqJNTT7/dS+WnURbux2Zi5WZ72bg1lPcl3smWDg==","signedAt":"2026-06-20T22:07:23.510Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/google-pse-cse","artifact":"https://unfragile.ai/google-pse-cse","verify":"https://unfragile.ai/api/v1/verify?slug=google-pse-cse","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}