Skip to main content
Glama
wiki_opensearch.py2.7 kB
"""MediaWiki opensearch handlers for MCP server.""" import logging from collections.abc import Sequence from typing import Any import mcp.types as types from ..client import MediaWikiClient logger = logging.getLogger(__name__) async def handle_opensearch( client: MediaWikiClient, arguments: dict[str, Any] ) -> Sequence[types.TextContent]: """Handle wiki_opensearch tool calls with OpenSearch protocol functionality.""" search = arguments.get("search") if not search: return [types.TextContent( type="text", text="Error: Search parameter is required" )] # Extract opensearch parameters with defaults namespace = arguments.get("namespace") limit = arguments.get("limit", 10) profile = arguments.get("profile", "engine_autoselect") redirects = arguments.get("redirects") format_type = arguments.get("format", "json") warningsaserror = arguments.get("warningsaserror", False) try: result = await client.opensearch( search=search, namespace=namespace, limit=limit, profile=profile, redirects=redirects, format=format_type, warningsaserror=warningsaserror ) # OpenSearch returns a 4-element array: [search_term, titles, descriptions, urls] if not isinstance(result, list) or len(result) != 4: return [types.TextContent( type="text", text=f"Unexpected OpenSearch response format: {result}" )] search_term, titles, descriptions, urls = result # Format opensearch results response_text = f"OpenSearch Results for: '{search_term}'\n" response_text += "=" * (len(response_text) - 1) + "\n\n" if not titles or len(titles) == 0: response_text += "No results found." else: response_text += f"Found {len(titles)} result(s):\n\n" for i, title in enumerate(titles): response_text += f"{i + 1}. **{title}**\n" # Add description if available if i < len(descriptions) and descriptions[i]: response_text += f" Description: {descriptions[i]}\n" # Add URL if available if i < len(urls) and urls[i]: response_text += f" URL: {urls[i]}\n" response_text += "\n" return [types.TextContent( type="text", text=response_text )] except Exception as e: return [types.TextContent( type="text", text=f"Error performing OpenSearch: {str(e)}" )]

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/entanglr/mediawiki-api-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server