mcp.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. # from __future__ import annotations
  2. #
  3. # from pydantic import ValidationError
  4. # from quart import Blueprint, jsonify
  5. #
  6. # from app.api.v1.utils import ApiDependencies, LongArticlesMcpRequest
  7. # from app.api.v1.utils import parse_json, validation_error_response
  8. # # from app.domains.mcp import deal, UnknownMcpTaskName
  9. #
  10. #
  11. # def create_mcp_bp(deps: ApiDependencies) -> Blueprint:
  12. # bp = Blueprint("mcp", __name__)
  13. #
  14. # @bp.route("/long_articles_mcp/<string:task_name>", methods=["POST"])
  15. # async def long_articles_mcp(task_name: str):
  16. # """MCP 交互接口
  17. #
  18. # - POST /api/long_articles_mcp/<task_name>
  19. # - 通过 task_name 分发到 MCP 域内对应的方法
  20. # - 请求体为 JSON,可选字段如 page、page_size、sort_by、sort_order 等
  21. # """
  22. # try:
  23. # req, _ = await parse_json(LongArticlesMcpRequest)
  24. # except ValidationError as e:
  25. # payload, status = validation_error_response(e)
  26. # return jsonify(payload), status
  27. #
  28. # # 使用校验后的模型转 dict,保证类型正确,且含 extra 透传字段
  29. # params = req.model_dump(exclude_none=True)
  30. #
  31. # try:
  32. # result = await deal(
  33. # task_name=task_name,
  34. # pool=deps.db,
  35. # log_service=deps.log,
  36. # params=params,
  37. # )
  38. # except UnknownMcpTaskName:
  39. # return (
  40. # jsonify(
  41. # {
  42. # "code": 404,
  43. # "message": f"unknown task_name: {task_name}",
  44. # "data": None,
  45. # }
  46. # ),
  47. # 404,
  48. # )
  49. #
  50. # return jsonify({"code": 0, "message": "success", "data": result})
  51. #
  52. # return bp