Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

mcp_server_app.py 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. from flask import Response, request
  2. from flask_login import current_user, login_required
  3. from api.db.db_models import MCPServer
  4. from api.db.services.mcp_server_service import MCPServerService
  5. from api.db.services.user_service import TenantService
  6. from api.settings import RetCode
  7. from api.utils import get_uuid
  8. from api.utils.api_utils import get_data_error_result, get_json_result, server_error_response, validate_request
  9. @manager.route("/list", methods=["GET"]) # noqa: F821
  10. @login_required
  11. def get_list() -> Response:
  12. try:
  13. return get_json_result(data=MCPServerService.get_servers(current_user.id) or [])
  14. except Exception as e:
  15. return server_error_response(e)
  16. @manager.route("/get_multiple", methods=["POST"]) # noqa: F821
  17. @login_required
  18. @validate_request("id_list")
  19. def get_multiple() -> Response:
  20. req = request.json
  21. try:
  22. return get_json_result(data=MCPServerService.get_servers(current_user.id, id_list=req["id_list"]) or [])
  23. except Exception as e:
  24. return server_error_response(e)
  25. @manager.route("/get/<ms_id>", methods=["GET"]) # noqa: F821
  26. @login_required
  27. def get(ms_id: str) -> Response:
  28. try:
  29. mcp_server = MCPServerService.get_or_none(id=ms_id, tenant_id=current_user.id)
  30. if mcp_server is None:
  31. return get_json_result(code=RetCode.NOT_FOUND, data=None)
  32. return get_json_result(data=mcp_server.to_dict())
  33. except Exception as e:
  34. return server_error_response(e)
  35. @manager.route("/create", methods=["POST"]) # noqa: F821
  36. @login_required
  37. @validate_request("name", "url", "server_type")
  38. def create() -> Response:
  39. req = request.json
  40. try:
  41. req["id"] = get_uuid()
  42. req["tenant_id"] = current_user.id
  43. e, _ = TenantService.get_by_id(current_user.id)
  44. if not e:
  45. return get_data_error_result(message="Tenant not found.")
  46. if not req.get("headers"):
  47. req["headers"] = {}
  48. if not MCPServerService.insert(**req):
  49. return get_data_error_result()
  50. return get_json_result(data={"id": req["id"]})
  51. except Exception as e:
  52. return server_error_response(e)
  53. @manager.route("/update", methods=["POST"]) # noqa: F821
  54. @login_required
  55. @validate_request("id", "name", "url", "server_type")
  56. def update() -> Response:
  57. req = request.json
  58. if not req.get("headers"):
  59. req["headers"] = {}
  60. try:
  61. req["tenant_id"] = current_user.id
  62. if not MCPServerService.filter_update([MCPServer.id == req["id"], MCPServer.tenant_id == req["tenant_id"]], req):
  63. return get_data_error_result()
  64. return get_json_result(data={"id": req["id"]})
  65. except Exception as e:
  66. return server_error_response(e)
  67. @manager.route("/rm", methods=["POST"]) # noqa: F821
  68. @login_required
  69. @validate_request("id")
  70. def rm() -> Response:
  71. req = request.json
  72. ms_id = req["id"]
  73. try:
  74. req["tenant_id"] = current_user.id
  75. if not MCPServerService.filter_delete([MCPServer.id == ms_id, MCPServer.tenant_id == req["tenant_id"]]):
  76. return get_data_error_result()
  77. return get_json_result(data={"id": req["id"]})
  78. except Exception as e:
  79. return server_error_response(e)