main.py•10.1 kB
# generated by fastapi-codegen:
# filename: openapi.yaml
# timestamp: 2025-06-29T03:07:53+00:00
import argparse
import json
import os
from typing import *
from typing import Optional
from autogen.mcp.mcp_proxy import MCPProxy
from autogen.mcp.mcp_proxy.security import BaseSecurity, UnsuportedSecurityStub
from fastapi import Path, Query
from models import (
Alt,
SearchAnalyticsQueryRequest,
SearchAnalyticsQueryResponse,
SitemapsListResponse,
SitesListResponse,
WmxSite,
WmxSitemap,
)
app = MCPProxy(
contact={'name': 'Google', 'url': 'https://google.com', 'x-twitter': 'youtube'},
description='View Google Search Console data for your verified sites.',
license={
'name': 'Creative Commons Attribution 3.0',
'url': 'http://creativecommons.org/licenses/by/3.0/',
},
termsOfService='https://developers.google.com/terms/',
title='Search Console API',
version='v3',
servers=[{'url': 'https://www.googleapis.com/webmasters/v3'}],
)
@app.get(
'/sites',
description=""" Lists the user's Search Console sites. """,
tags=['search_analytics_queries'],
security=[
UnsuportedSecurityStub(name="None"),
UnsuportedSecurityStub(name="None"),
UnsuportedSecurityStub(name="None"),
UnsuportedSecurityStub(name="None"),
],
)
def webmasters_sites_list(
alt: Optional[Alt] = None,
fields: Optional[str] = None,
key: Optional[str] = None,
oauth_token: Optional[str] = None,
pretty_print: Optional[bool] = Query(None, alias='prettyPrint'),
quota_user: Optional[str] = Query(None, alias='quotaUser'),
user_ip: Optional[str] = Query(None, alias='userIp'),
):
raise RuntimeError("Should be patched by MCPProxy and never executed")
@app.delete(
'/sites/{siteUrl}',
description=""" Removes a site from the set of the user's Search Console sites. """,
tags=['website_management_operations', 'search_analytics_queries'],
security=[
UnsuportedSecurityStub(name="None"),
UnsuportedSecurityStub(name="None"),
],
)
def webmasters_sites_delete(
site_url: str = Path(..., alias='siteUrl'),
alt: Optional[Alt] = None,
fields: Optional[str] = None,
key: Optional[str] = None,
oauth_token: Optional[str] = None,
pretty_print: Optional[bool] = Query(None, alias='prettyPrint'),
quota_user: Optional[str] = Query(None, alias='quotaUser'),
user_ip: Optional[str] = Query(None, alias='userIp'),
):
raise RuntimeError("Should be patched by MCPProxy and never executed")
@app.get(
'/sites/{siteUrl}',
description=""" Retrieves information about specific site. """,
tags=['website_management_operations', 'search_analytics_queries'],
security=[
UnsuportedSecurityStub(name="None"),
UnsuportedSecurityStub(name="None"),
UnsuportedSecurityStub(name="None"),
UnsuportedSecurityStub(name="None"),
],
)
def webmasters_sites_get(
site_url: str = Path(..., alias='siteUrl'),
alt: Optional[Alt] = None,
fields: Optional[str] = None,
key: Optional[str] = None,
oauth_token: Optional[str] = None,
pretty_print: Optional[bool] = Query(None, alias='prettyPrint'),
quota_user: Optional[str] = Query(None, alias='quotaUser'),
user_ip: Optional[str] = Query(None, alias='userIp'),
):
raise RuntimeError("Should be patched by MCPProxy and never executed")
@app.put(
'/sites/{siteUrl}',
description=""" Adds a site to the set of the user's sites in Search Console. """,
tags=['website_management_operations', 'search_analytics_queries'],
security=[
UnsuportedSecurityStub(name="None"),
UnsuportedSecurityStub(name="None"),
],
)
def webmasters_sites_add(
site_url: str = Path(..., alias='siteUrl'),
alt: Optional[Alt] = None,
fields: Optional[str] = None,
key: Optional[str] = None,
oauth_token: Optional[str] = None,
pretty_print: Optional[bool] = Query(None, alias='prettyPrint'),
quota_user: Optional[str] = Query(None, alias='quotaUser'),
user_ip: Optional[str] = Query(None, alias='userIp'),
):
raise RuntimeError("Should be patched by MCPProxy and never executed")
@app.post(
'/sites/{siteUrl}/searchAnalytics/query',
description=""" Query your data with filters and parameters that you define. Returns zero or more rows grouped by the row keys that you define. You must define a date range of one or more days.
When date is one of the group by values, any days without data are omitted from the result list. If you need to know which days have data, issue a broad date range query grouped by date for any metric, and see which day rows are returned. """,
tags=['search_analytics_queries'],
security=[
UnsuportedSecurityStub(name="None"),
UnsuportedSecurityStub(name="None"),
UnsuportedSecurityStub(name="None"),
UnsuportedSecurityStub(name="None"),
],
)
def webmasters_searchanalytics_query(
site_url: str = Path(..., alias='siteUrl'),
alt: Optional[Alt] = None,
fields: Optional[str] = None,
key: Optional[str] = None,
oauth_token: Optional[str] = None,
pretty_print: Optional[bool] = Query(None, alias='prettyPrint'),
quota_user: Optional[str] = Query(None, alias='quotaUser'),
user_ip: Optional[str] = Query(None, alias='userIp'),
body: SearchAnalyticsQueryRequest = None,
):
raise RuntimeError("Should be patched by MCPProxy and never executed")
@app.get(
'/sites/{siteUrl}/sitemaps',
description=""" Lists the sitemaps-entries submitted for this site, or included in the sitemap index file (if sitemapIndex is specified in the request). """,
tags=['website_management_operations', 'sitemap_operations'],
security=[
UnsuportedSecurityStub(name="None"),
UnsuportedSecurityStub(name="None"),
UnsuportedSecurityStub(name="None"),
UnsuportedSecurityStub(name="None"),
],
)
def webmasters_sitemaps_list(
site_url: str = Path(..., alias='siteUrl'),
sitemap_index: Optional[str] = Query(None, alias='sitemapIndex'),
alt: Optional[Alt] = None,
fields: Optional[str] = None,
key: Optional[str] = None,
oauth_token: Optional[str] = None,
pretty_print: Optional[bool] = Query(None, alias='prettyPrint'),
quota_user: Optional[str] = Query(None, alias='quotaUser'),
user_ip: Optional[str] = Query(None, alias='userIp'),
):
raise RuntimeError("Should be patched by MCPProxy and never executed")
@app.delete(
'/sites/{siteUrl}/sitemaps/{feedpath}',
description=""" Deletes a sitemap from this site. """,
tags=[
'website_management_operations',
'sitemap_operations',
'search_analytics_queries',
],
security=[
UnsuportedSecurityStub(name="None"),
UnsuportedSecurityStub(name="None"),
],
)
def webmasters_sitemaps_delete(
site_url: str = Path(..., alias='siteUrl'),
feedpath: str = ...,
alt: Optional[Alt] = None,
fields: Optional[str] = None,
key: Optional[str] = None,
oauth_token: Optional[str] = None,
pretty_print: Optional[bool] = Query(None, alias='prettyPrint'),
quota_user: Optional[str] = Query(None, alias='quotaUser'),
user_ip: Optional[str] = Query(None, alias='userIp'),
):
raise RuntimeError("Should be patched by MCPProxy and never executed")
@app.get(
'/sites/{siteUrl}/sitemaps/{feedpath}',
description=""" Retrieves information about a specific sitemap. """,
tags=[
'website_management_operations',
'sitemap_operations',
'search_analytics_queries',
],
security=[
UnsuportedSecurityStub(name="None"),
UnsuportedSecurityStub(name="None"),
UnsuportedSecurityStub(name="None"),
UnsuportedSecurityStub(name="None"),
],
)
def webmasters_sitemaps_get(
site_url: str = Path(..., alias='siteUrl'),
feedpath: str = ...,
alt: Optional[Alt] = None,
fields: Optional[str] = None,
key: Optional[str] = None,
oauth_token: Optional[str] = None,
pretty_print: Optional[bool] = Query(None, alias='prettyPrint'),
quota_user: Optional[str] = Query(None, alias='quotaUser'),
user_ip: Optional[str] = Query(None, alias='userIp'),
):
raise RuntimeError("Should be patched by MCPProxy and never executed")
@app.put(
'/sites/{siteUrl}/sitemaps/{feedpath}',
description=""" Submits a sitemap for a site. """,
tags=[
'website_management_operations',
'sitemap_operations',
'search_analytics_queries',
],
security=[
UnsuportedSecurityStub(name="None"),
UnsuportedSecurityStub(name="None"),
],
)
def webmasters_sitemaps_submit(
site_url: str = Path(..., alias='siteUrl'),
feedpath: str = ...,
alt: Optional[Alt] = None,
fields: Optional[str] = None,
key: Optional[str] = None,
oauth_token: Optional[str] = None,
pretty_print: Optional[bool] = Query(None, alias='prettyPrint'),
quota_user: Optional[str] = Query(None, alias='quotaUser'),
user_ip: Optional[str] = Query(None, alias='userIp'),
):
raise RuntimeError("Should be patched by MCPProxy and never executed")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="MCP Server")
parser.add_argument(
"transport",
choices=["stdio", "sse", "streamable-http"],
help="Transport mode (stdio, sse or streamable-http)",
)
args = parser.parse_args()
if "CONFIG_PATH" in os.environ:
config_path = os.environ["CONFIG_PATH"]
app.load_configuration(config_path)
if "CONFIG" in os.environ:
config = os.environ["CONFIG"]
app.load_configuration_from_string(config)
if "SECURITY" in os.environ:
security_params = BaseSecurity.parse_security_parameters_from_env(
os.environ,
)
app.set_security_params(security_params)
mcp_settings = json.loads(os.environ.get("MCP_SETTINGS", "{}"))
app.get_mcp(**mcp_settings).run(transport=args.transport)