基于现有 AI 接口和点位写入接口,使用 FastMCP 构建一个面向大模型的 MCP 服务。
当前版本目标:
project_key 选择项目环境当前版本不做的事情:
AI 相关正式查询工具统一使用 code,而不是名称参数。
所有业务工具都必须显式传入 project_key,用于定位项目配置和认证信息。
原因:
code 更稳定codes 查询因此当前版本采用两层结构:
codecode 发起正式查询当前版本不单独提供 find_ai_system 这类解析工具。
原因:
search_ai_systems 已足够支撑“先查候选,再拿 code”流程所有分页接口都保留上游原有分页行为:
page_sizepage_num这样可以避免一次调用返回过大数据,也更符合上游原始接口行为。
当某一页没有找到目标结果时,MCP 应明确提示:
page_num当前版本不对接口返回结果做额外整理:
items 包装MCP 以“尽量接近上游返回”的方式对外暴露结果,只补充必要的工具层说明。
set_multi_values 直接透传点位和值,只补充项目鉴权和错误处理。
原因:
项目配置来自 sys_config 中的 mcp_project_data_projects。
单个项目配置至少包含:
project_keyproject_namebase_urlusernamepasswordenabled业务请求流程:
project_key 找到项目配置base_url、username、password登录接口:
POST {base_url}/api/ai/auth/password_login登录成功条件:
errcode 为 0 或 0.0token业务请求认证方式:
AuthorizationBearer 前缀token 缓存策略:
project_key 单独缓存sys_configexpire_at 仍未过期时直接复用接口:POST /api/ai/system/search
用途:
code输入特点:
order_by输出特点:
results 数组id、name、code、ctrl_mode_point_id、status_formulapage、page_size、total_pages、totalMCP 处理建议:
page_size=20mcp_note接口:POST /api/ai/ai_rcmd_operation/search_ai_rcmd_operation
用途:
code 查询策略记录主要过滤字段:
codesendorderpage_sizepage_num输出特点:
results 数组id、code、status、auto_exec、data、create_timedata.rcmd 中包含策略建议明细MCP 处理建议:
page_size=20auto_exec=true 表示自动控制,否则为推荐参考mcp_note接口:POST /api/ai/ai_rcmd_operation/ai_online_v2
用途:
输入特点:
codes 批量查询输出特点:
details 对象details.<code> 包含 status、control_mode、ctrl_mode_point_id、status_formulaMCP 处理建议:
control_mode=1 表示自动控制,否则为推荐参考status=0 表示正常,status=1 表示异常接口:POST /basedataportal/value/set_multi_values
用途:
输入特点:
pointspoint_id 和 valuefrom 标记来源输出特点:
state、state_info、dataMCP 处理建议:
state == 0name 和稳定的 codectrl_mode_point_idstatus_formulacode 归属auto_exec 可区分自动控制和推荐参考code 返回control_mode 表示控制模式status 表示运行状态point_id 和 value 执行当前版本聚焦 AI 系统查询、策略查询、在线状态查询和点位批量下发。
search_ai_systems用途:
code建议入参:
project_key: strkeyword: str = ""page_size: int = 20page_num: int = 1order_by: list[str] | None = None内部调用:
/api/ai/system/search返回字段:
results[].idresults[].nameresults[].coderesults[].remarkresults[].ctrl_mode_point_idresults[].status_formula备注:
codepage、page_size、total_pages、totalsearch_ai_rcmd_operations用途:
code 查询策略记录建议入参:
project_key: strcodes: list[str]end: strpage_size: int = 20page_num: int = 1order: str = "-create_time"内部调用:
/api/ai/ai_rcmd_operation/search_ai_rcmd_operation返回字段:
results[].idresults[].workflow_idresults[].coderesults[].statusresults[].auto_execresults[].dataresults[].create_timeresults[].operation_name备注:
auto_exec=true 表示自动控制,否则为推荐参考get_ai_online_v2用途:
建议入参:
project_key: strcodes: list[str]内部调用:
/api/ai/ai_rcmd_operation/ai_online_v2返回字段:
details.<code>.iddetails.<code>.namedetails.<code>.codedetails.<code>.statusdetails.<code>.control_modedetails.<code>.ctrl_mode_point_iddetails.<code>.status_formula备注:
control_mode=1 表示自动控制,否则为推荐参考status=0 表示正常,status=1 表示异常set_multi_values用途:
建议入参:
project_key: strpoints: list[{"point_id": str, "value": str}]from_: str = "M2_BACKEND"内部调用:
/basedataportal/value/set_multi_values返回字段:
statestate_infodata备注:
points 中每项固定包含 point_id 和 value步骤:
search_ai_systems(project_key=..., keyword=...)results 中选择目标 AI 系统 codecode 用于后续策略查询或状态查询步骤:
search_ai_systems(project_key=..., keyword=...)codesearch_ai_rcmd_operations(project_key=..., codes=[...], end=...)步骤:
get_ai_online_v2(project_key=..., codes=[...])set_multi_values(project_key=..., points=[...])当前仅对支持分页的 AI 查询接口透传分页参数,不做自动翻页。
约定:
search_ai_systems 默认使用 page_size=20search_ai_rcmd_operations 默认使用 page_size=20page_nummcp_note适用接口:
/api/ai/system/search/api/ai/ai_rcmd_operation/search_ai_rcmd_operation不涉及分页控制的接口:
/api/ai/ai_rcmd_operation/ai_online_v2/basedataportal/value/set_multi_values当前版本继续尽量保持上游接口的返回结构:
errcode、msg、results、details、page、total_pages 等字段state、state_info、dataitems 结构这样可以降低实现复杂度,也便于和上游接口文档直接对照。
当前版本采用简单直接的错误策略。
errcode != 0 时视为业务失败state != 0 时视为业务失败msg 或 state_info建议继续采用现有轻量三层结构。
职责:
project_key 定位项目配置当前模块:
auth.py职责:
当前模块:
config_api.py职责:
FastMCP 工具mcp_note当前模块:
server.py以下能力可在后续版本再补:
实现顺序建议如下:
project.list 和登录链路稳定set_multi_values 的安全使用说明