75 lines
4.4 KiB
Python
75 lines
4.4 KiB
Python
from fastmcp import FastMCP
|
|
from backend.tools.mcp.factory import create_tool
|
|
from backend.tools.api.schemas import (
|
|
CourtSearch, CourtByID, CourtAutocomplete,
|
|
JudgeSearch, JudgeByID, JudgeAutocomplete,
|
|
DecisionSearch, DecisionByID, DecisionAutocomplete,
|
|
ContractSearch, ContractByID, ContractAutocomplete,
|
|
CivilProceedingsSearch, CivilProceedingsByID, CivilProceedingsAutocomplete,
|
|
AdminProceedingsSearch, AdminProceedingsByID, AdminProceedingsAutocomplete,
|
|
ExecutorSearch, ExecutorByID, ExecutorByECE, ExecutorAutocomplete,
|
|
)
|
|
|
|
TOOLS = [
|
|
# .../v1/sud — Courts
|
|
{"name": "court_search", "route": "/sud", "schema": CourtSearch, "remove_keys": None},
|
|
{"name": "court_id", "route": "/sud/{id}", "schema": CourtByID, "remove_keys": ["foto"]},
|
|
{"name": "court_autocomplete", "route": "/sud/autocomplete", "schema": CourtAutocomplete, "remove_keys": None},
|
|
|
|
# .../v1/sudca — Judges
|
|
{"name": "judge_search", "route": "/sudca", "schema": JudgeSearch, "remove_keys": ["sudcaMapList"]},
|
|
{"name": "judge_id", "route": "/sudca/{id}", "schema": JudgeByID, "remove_keys": None},
|
|
{"name": "judge_autocomplete", "route": "/sudca/autocomplete", "schema": JudgeAutocomplete, "remove_keys": None},
|
|
|
|
# .../v1/rozhodnutie — Decisions
|
|
{"name": "decision_search", "route": "/rozhodnutie", "schema": DecisionSearch, "remove_keys": None},
|
|
{"name": "decision_id", "route": "/rozhodnutie/{id}", "schema": DecisionByID, "remove_keys": None},
|
|
{"name": "decision_autocomplete", "route": "/rozhodnutie/autocomplete","schema": DecisionAutocomplete, "remove_keys": None},
|
|
|
|
# .../v1/zmluvy — Contracts
|
|
{"name": "contract_search", "route": "/zmluvy", "schema": ContractSearch, "remove_keys": None},
|
|
{"name": "contract_id", "route": "/zmluvy/{idZmluvy}", "schema": ContractByID, "remove_keys": None},
|
|
{"name": "contract_autocomplete", "route": "/zmluvy/autocomplete", "schema": ContractAutocomplete, "remove_keys": None},
|
|
|
|
# .../v1/obcianPojednavania — Civil Proceedings
|
|
{"name": "civil_proceedings_search", "route": "/obcianPojednavania", "schema": CivilProceedingsSearch, "remove_keys": None},
|
|
{"name": "civil_proceedings_id", "route": "/obcianPojednavania/{id}", "schema": CivilProceedingsByID, "remove_keys": None},
|
|
{"name": "civil_proceedings_autocomplete", "route": "/obcianPojednavania/autocomplete","schema": CivilProceedingsAutocomplete, "remove_keys": None},
|
|
|
|
# .../v1/spravneKonanie — Administrative Proceedings
|
|
{"name": "admin_proceedings_search", "route": "/spravneKonanie", "schema": AdminProceedingsSearch, "remove_keys": None},
|
|
{"name": "admin_proceedings_id", "route": "/spravneKonanie/{id}", "schema": AdminProceedingsByID, "remove_keys": None},
|
|
{"name": "admin_proceedings_autocomplete", "route": "/spravneKonanie/autocomplete","schema": AdminProceedingsAutocomplete, "remove_keys": None},
|
|
|
|
# .../v1/exekutor — Executor
|
|
{"name": "executor_search", "route": "/exekutor", "schema": ExecutorSearch, "remove_keys": None},
|
|
{"name": "executor_ece", "route": "/exekutor/ec/{ece}", "schema": ExecutorByECE, "remove_keys": None},
|
|
{"name": "executor_id", "route": "/exekutor/{id}", "schema": ExecutorByID, "remove_keys": None},
|
|
{"name": "executor_autocomplete", "route": "/exekutor/autocomplete","schema": ExecutorAutocomplete, "remove_keys": None},
|
|
|
|
]
|
|
|
|
mcp = FastMCP(
|
|
name="Slovak Justice API",
|
|
instructions="""
|
|
This MCP server provides access to public APIs of the
|
|
Ministry of Justice of the Slovak Republic.
|
|
It contains tools for searching for courts, judges,
|
|
decisions, contracts and proceedings.
|
|
"""
|
|
)
|
|
|
|
def register_tools():
|
|
for tool in TOOLS:
|
|
tool_function = create_tool(
|
|
route=tool["route"],
|
|
schema=tool["schema"],
|
|
remove_keys=tool.get("remove_keys")
|
|
)
|
|
mcp.tool(name=tool["name"])(tool_function)
|
|
|
|
register_tools()
|
|
|
|
if __name__ == "__main__":
|
|
mcp.run(transport="streamable-http", host="0.0.0.0", port=8002)
|