add_blocked_url
Block specific URLs or directories from being crawled or indexed in Bing Webmaster Tools. Use the tool to define the site, URL, and entity type for precise control over search engine visibility.
Instructions
Add a blocked URL to a site.
Args: site_url: The URL of the site blocked_url: The URL to be blocked entity_type: The type of entity to block (Page or Directory) date: The date the URL was blocked (default: minimum datetime)
Raises: BingWebmasterError: If URL cannot be blocked
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| blocked_url | Yes | ||
| date | No | ||
| entity_type | No | ||
| self | Yes | ||
| site_url | Yes |
Implementation Reference
- The core handler logic for all tools, including add_blocked_url: wraps the service method call within an async context manager, preserving parameters.@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__
- mcp_server_bwt/tools/bing_webmaster.py:197-197 (registration)Specific registration of the add_blocked_url tool via the generic wrapper.add_blocked_url = wrap_service_method(mcp, service, "blocking", "add_blocked_url") # noqa: F841
- Generic helper that creates and registers MCP tools from underlying service methods, used for add_blocked_url.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
- mcp_server_bwt/main.py:17-17 (registration)Invokes the registration of all Bing Webmaster tools, including add_blocked_url.add_bing_webmaster_tools(mcp, bing_service)
- Initializes the blocking service instance on which add_blocked_url operates.self.blocking = content_blocking.ContentBlockingService(self.client)