Skip to main content
Glama
client_meta.py3.11 kB
"""MediaWiki API meta operations client.""" import logging from typing import Any from .client_auth import MediaWikiAuthClient logger = logging.getLogger(__name__) class MediaWikiMetaClient: """Client for handling MediaWiki meta operations.""" def __init__(self, auth_client: MediaWikiAuthClient): self.auth_client = auth_client async def get_siteinfo( self, siprop: list[str] | None = None, sifilteriw: str | None = None, sishowalldb: bool = False, sinumberingroup: bool = False, siinlanguagecode: str | None = None, **kwargs: Any ) -> dict[str, Any]: """ Get overall site information from MediaWiki. Args: siprop: Which information to get (default: ["general"]) sifilteriw: Return only local or only nonlocal entries of interwiki map ("local" or "!local") sishowalldb: List all database servers, not just the one lagging the most sinumberingroup: Lists the number of users in user groups siinlanguagecode: Language code for localised language names and skin names **kwargs: Additional parameters Returns: API response dictionary containing site information """ # Build siteinfo parameters params = { "action": "query", "meta": "siteinfo", "format": "json" } # Set which information to get (default to general) if siprop is None: siprop = ["general"] # Validate siprop values valid_props = [ "general", "namespaces", "namespacealiases", "specialpagealiases", "magicwords", "interwikimap", "dbrepllag", "statistics", "usergroups", "autocreatetempuser", "clientlibraries", "libraries", "extensions", "fileextensions", "rightsinfo", "restrictions", "languages", "languagevariants", "skins", "extensiontags", "functionhooks", "showhooks", "variables", "protocols", "defaultoptions", "uploaddialog", "autopromote", "autopromoteonce", "copyuploaddomains" ] filtered_props = [p for p in siprop if p in valid_props] if filtered_props: params["siprop"] = "|".join(filtered_props) # Set interwiki filter if sifilteriw and sifilteriw in ["local", "!local"]: params["sifilteriw"] = sifilteriw # Set boolean parameters if sishowalldb: params["sishowalldb"] = "1" if sinumberingroup: params["sinumberingroup"] = "1" # Set language code if siinlanguagecode: params["siinlanguagecode"] = siinlanguagecode # Add any additional parameters params.update(kwargs) try: response = await self.auth_client._make_request("GET", params=params) logger.info("Siteinfo query completed successfully") return response except Exception as e: logger.error(f"Siteinfo request failed: {e}") raise

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