from .utils import catch_error_and_return, base64_decode
from dotenv import load_dotenv
from fastmcp import FastMCP
import requests
import json
import os
load_dotenv()
markup_mcp = FastMCP(name="MarkUp server")
@markup_mcp.tool
@catch_error_and_return
def markup_get_methods() -> str:
"""
Get markup methods
:return: markup methods
"""
url = os.getenv("MARKUP_GET_METHODS_URL")
api_key = os.getenv("MARKUP_API_KEY")
headers = {
"X-Api-Key": f"{api_key}",
}
result = requests.get(url, headers=headers).json()
return str(result)
@markup_mcp.tool
@catch_error_and_return
def markup_process_text(text: str, method_name: str) -> dict:
"""
Process text with method
:param text: text for process
:param method_name: method name for process
:return:
"""
url = os.getenv("MARKUP_PROCESS_TEXT_URL")
api_key = os.getenv("MARKUP_API_KEY")
headers = {
"X-Api-Key": f"{api_key}",
}
data = {
"content": text,
"markup_type": method_name,
"metadata": {"additionalProp1": {}},
}
result = requests.post(url, data=json.dumps(data), headers=headers).json()
return result
@markup_mcp.tool
@catch_error_and_return
def markup_process_file(file_base64: str) -> dict:
"""
Get chunks from file (only .txt files!!!)
:param file_base64: full base64 string for file
:return: chunks
"""
url = os.getenv("MARKUP_PROCESS_FILE_URL")
api_key = os.getenv("MARKUP_API_KEY")
headers = {
"X-Api-Key": f"{api_key}",
}
file = {
"file": base64_decode(file_base64),
}
result = requests.post(url, files=file, headers=headers).json()
return result
@markup_mcp.tool
@catch_error_and_return
def health_check():
"""
health check for server
:return: server status
"""
url = os.getenv("MARKUP_HEALTH_CHECK_URL")
api_key = os.getenv("MARKUP_API_KEY")
headers = {
"X-Api-Key": f"{api_key}",
}
try:
result = requests.get(url, headers=headers)
result.raise_for_status()
return {"status": "ok"}
except Exception as ex:
return {"status": f"Error {ex}"}