SuperAPI AI 工具集

flutter-mcp-toolkit-intentcall-migration

编程与开发

查看项目

更新于 10-16 14:11

技能介绍

用途

本技能用于在 mcp_toolkit 硬性移除 MCPCallEntry 之后,把 Flutter 应用代码从旧的 MCPCallEntry 迁移到 AgentCallEntry。AgentCallEntry 来自 intentcall_core,并由 mcp_toolkit 重新导出。规范的迁移文档为 migration_mcp_call_entry_to_agent_call_entry.md。

何时使用

  • 升级 mcp_toolkit 后,dart analyze 报告 MCPCallEntry 未定义。
  • 用户要求将自定义工具或资源迁移到新 API。
  • 在向消费者发布重大 mcp_toolkit 版本之前。

使用方式(CLI,推荐)

# 预览(有改动待处理时退出码为 1)
flutter-mcp-toolkit migrate agent-entries --check lib/

# 应用
flutter-mcp-toolkit migrate agent-entries --write lib/
flutter-mcp-toolkit migrate agent-entries --write --namespace my_app lib/main.dart

别名:migrate mcp-call-entry(行为相同)。

迁移后的注册

  • MCPToolkitBinding.addEntries(entries: Set<AgentCallEntry>)
  • bootstrapFlutter(additionalEntries: { ... })
  • addMcpTool(AgentCallEntry) —— 仍是单个条目的快捷方式

处理器应返回 AgentResult(AgentResult.success / AgentResult.failure)。对于旧的 MCPCallResult 加 MCPToolDefinition 处理器,使用 mcpToolkitTool / mcpToolkitResource(参见 flutter-mcp-toolkit-custom-tools)。

代码对照

旧模式(迁移前,不应在新代码中发布):

// BEFORE (removed in Phase 6b)
final tool = MCPCallEntry.tool(
  handler: (request) async => MCPCallResult(
    message: 'ok',
    parameters: {'n': request['n']},
  ),
  definition: MCPToolDefinition(
    name: 'my_tool',
    description: 'Example',
    inputSchema: {'type': 'object', 'properties': {}},
  ),
);

目标模式(迁移后):

import 'package:mcp_toolkit/mcp_toolkit.dart';

final tool = AgentCallEntry.tool(
  namespace: 'app',
  name: 'my_tool',
  description: 'Example',
  inputSchema: const {
    'type': 'object',
    'additionalProperties': false,
    'properties': {'n': {'type': 'string'}},
    'required': ['n'],
  },
  handler: (final args) async {
    final n = args['n']?.toString() ?? '';
    return AgentResult.success(
      message: 'ok',
      data: {'n': n},
    );
  },
);

await MCPToolkitBinding.instance.addEntries(entries: {tool});

平台同步(可选)

在工具界面可编译后:

flutter-mcp-toolkit codegen sync --platform web
flutter-mcp-toolkit codegen sync --platform android,ios,macos --check

关于小米/华为,参见 docs/platform-notes/android-oem.md(使用与 AOSP 相同的 shortcuts XML)。

MCP 迁移工具

fmt_migrate_agent_entries 已随附(默认仅报告;apply: true 才改写)。CLI 等价命令为 flutter-mcp-toolkit migrate agent-entries。

维护者检查清单(仓库内产品关口)

  • 在 flutter_test_app/lib 上运行 flutter-mcp-toolkit migrate agent-entries --check
  • 任何 plugin/skills/ 编辑后运行 make sync-skills
  • cd mcp_server_dart && dart test test/contract/
  • Grep:除本文件的 BEFORE 示例外,skills 中不应出现 MCPCallEntry

托管 IntentCall 包

IntentCall 现在位于本仓库之外。正常消费者状态使用托管的 intentcall_* 包。

  • 已提交的消费者状态使用托管 intentcall_*: ^0.6.0 依赖。
  • 仅在有意对本地 IntentCall 检出进行跨仓库开发时使用本地路径覆盖。
  • 依赖变更后运行 flutter pub get 并再次执行 migrate agent-entries --check。
  • CI:使用 make check-intentcall-hosted-consumer 进行托管 mcp_flutter 证明;仅在有意对本地 IntentCall 检出做矩阵证明时使用 make check-intentcall-sibling-matrix。历史 make check-intentcall-integration 目标是 sibling-matrix 通道的兼容别名,而非新采用者的托管关口。

相关技能

  • flutter-mcp-toolkit-custom-tools —— 编写 AgentCallEntry 界面
  • flutter-mcp-toolkit-repo-maintainer —— CHANGELOG、版本固定、sync-skills