Skip to main content
Glama
zizzfizzix

Bing Webmaster Tools MCP Server

by zizzfizzix

get_related_keywords

Find related keywords and their search impression data from Bing Webmaster Tools to expand content topics and improve SEO targeting.

Instructions

Get keyword impressions for related keywords in the selected period.

Args: query: The base keyword query country: The country code language: The language code start_date: The start date of the period end_date: The end date of the period

Returns: List[Keyword]: List of related keywords and their impression data

Raises: BingWebmasterError: If related keywords cannot be retrieved

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
selfYes
queryYes
countryYes
languageYes
start_dateYes
end_dateYes

Implementation Reference

  • Registers the get_related_keywords MCP tool by calling wrap_service_method, which decorates a handler function with @mcp.tool() and registers it.
    get_related_keywords = wrap_service_method(  # noqa: F841
        mcp, service, "keywords", "get_related_keywords"
    )
  • The handler function logic executed for the get_related_keywords tool (and all similar tools), which enters the service context, retrieves the keywords service, calls its get_related_keywords method, and returns the result.
    @mcp.tool()
    @wraps(original_method)
    async def wrapper(*args: Any, **kwargs: Any) -> Any:
        # Filter out any 'self' arguments that might be passed by the MCP client
        kwargs = {k: v for k, v in kwargs.items() if k != "self"}
    
        async with service as s:
            service_obj = getattr(s, service_attr)
            # Get the method from the instance
            method = getattr(service_obj, method_name)
            # Call the method directly - it's already bound to the instance
            return await method(*args, **kwargs)
    
    # Copy signature and docstring
    wrapper.__signature__ = new_sig  # type: ignore
    wrapper.__doc__ = original_method.__doc__
  • Helper function that generates the handler for get_related_keywords and all other Bing Webmaster service methods, handling signature preservation, MCP tool decoration, and service method delegation.
    def wrap_service_method(
        mcp: FastMCP, service: BingWebmasterService, service_attr: str, method_name: str
    ) -> Callable[..., Any]:
        """Helper function to wrap a service method with mcp.tool() while preserving its signature and docstring.
    
        Args:
            mcp: The MCP server instance
            service: The BingWebmasterService instance
            service_attr: The service attribute name (e.g., 'sites', 'submission')
            method_name: The method name to wrap
    
        Returns:
            The wrapped method as an MCP tool
        """
        # Get the service class from our mapping
        service_class = SERVICE_CLASSES[service_attr]
        # Get the original method
        original_method = getattr(service_class, method_name)
        # Get the signature
        sig = inspect.signature(original_method)
        # Remove 'self' parameter from signature
        parameters = list(sig.parameters.values())[1:]  # Skip 'self'
    
        # Create new signature without 'self'
        new_sig = sig.replace(parameters=parameters)
    
        # Create wrapper function with same signature
        @mcp.tool()
        @wraps(original_method)
        async def wrapper(*args: Any, **kwargs: Any) -> Any:
            # Filter out any 'self' arguments that might be passed by the MCP client
            kwargs = {k: v for k, v in kwargs.items() if k != "self"}
    
            async with service as s:
                service_obj = getattr(s, service_attr)
                # Get the method from the instance
                method = getattr(service_obj, method_name)
                # Call the method directly - it's already bound to the instance
                return await method(*args, **kwargs)
    
        # Copy signature and docstring
        wrapper.__signature__ = new_sig  # type: ignore
        wrapper.__doc__ = original_method.__doc__
    
        return wrapper
  • Instantiates and attaches the KeywordAnalysisService (which contains the underlying get_related_keywords implementation) to the main BingWebmasterService.
    self.keywords = keyword_analysis.KeywordAnalysisService(self.client)
  • Invokes the tool registration function that creates and registers the get_related_keywords handler among all Bing Webmaster tools.
    add_bing_webmaster_tools(mcp, bing_service)

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/zizzfizzix/mcp-server-bwt'

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