Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI, Request | |
| import src.Paraphrase as Paraphrase | |
| import src.Translate as Translate | |
| from typing import Optional | |
| from fastapi_mcp import FastApiMCP | |
| app = FastAPI() | |
| # app = FastAPI(docs_url="/docs") | |
| MTMODELS = {'enro': 'BlackKakapo/opus-mt-en-ro', | |
| 'roen': 'BlackKakapo/opus-mt-ro-en', | |
| 'gemma': 'Gargaz/gemma-2b-romanian-better'} | |
| def index(request: Request): | |
| from fastapi.responses import HTMLResponse | |
| host_url = "https://" + request.url.netloc | |
| html_content = f''' | |
| <html> | |
| <head> | |
| <title>FastAPI with MCP</title> | |
| </head> | |
| <body> | |
| <h2>FastAPI URLS</h2> | |
| <p>Host URL: {host_url}</p> | |
| <p><a href="{host_url}/docs">DOCS</a></p> | |
| <p><a href="{host_url}/redoc">REDOC</a></p> | |
| <p><a href="{host_url}/openapi.json">openapi.json</a></p> | |
| <p><a href="{host_url}/mcp">MCP</a></p> | |
| <p>MTMODELS: {MTMODELS}"</p> | |
| </body> | |
| </html> | |
| ''' | |
| return HTMLResponse(content=html_content) | |
| # @app.get("/") | |
| # async def get_host_url(request: Request): | |
| # host_url = request.url.scheme + "://" + request.url.netloc | |
| # return {"host_url": host_url, 'endpoints': ['/paraphrase', '/translate', f'{host_url}/docs', f'{host_url}/redoc', f'{host_url}/openapi.json'], 'mtmodels': MTMODELS} | |
| def paraphrase(text: str, model: str, operation_id="get_paraphrase", description="Paraphrase text", tags=["paraphrase"], summary="Paraphrase text"): | |
| resultValue, exception = Paraphrase.paraphraseParaphraseMethod(text, model) | |
| return {"input": text, "translation": resultValue, "exception": exception} | |
| def translate(text: str, model: Optional[str] = MTMODELS['gemma'], operation_id="get_translate", description="Translate text", tags=["translate"], summary="Translate text"): | |
| # resultValue, exception = Translate.paraphraseTranslateMethod(text, model) | |
| resultValue: str = Translate.gemma_direct(text, model) | |
| return {"input": text, "result": resultValue, "model": model} | |
| # Create an MCP server based on this app | |
| mcp = FastApiMCP( | |
| app, | |
| name="FASTAPI translate and paraphrase MCP", | |
| description="MCP server to translate and paraphrase text", | |
| describe_all_responses=True, | |
| describe_full_response_schema=True, | |
| include_operations=["get_translate", "get_paraphrase"], | |
| include_tags=["paraphrase", "translate"] | |
| ) | |
| # Mount the MCP server directly to your app | |
| mcp.mount() |