yudao-pilot-mcp
This server is a workspace-aware MCP server for yudao/ruoyi-vue-pro projects that helps AI tools discover, validate, and generate code/SQL in the correct project structure.
Discover, load, initialize, and validate workspace configurations
Inspect backend/frontend project types using dependency fingerprints
Resolve database configuration from workspace or backend settings
Inspect codegen context and table schemas read-only
Generate backend/frontend scaffold code with target paths for AI to write
Generate menu, derived dictionary, and H2 SQL content read-only
Apply generated menu/dictionary SQL to the database when explicitly permitted
Merge backend error codes and frontend DICT_TYPE constants through dedicated tools
Preview generated content without creating preview directories
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@yudao-pilot-mcpload workspace config and validate projects"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Yudao Pilot MCP
中文
Yudao Pilot MCP 是面向 yudao / ruoyi-vue-pro 生态的工作区感知型 MCP 服务。它帮助 AI 编码工具识别本地后端、前端、数据库和代码生成目标,让 AI 生成的代码准确落到正确项目结构里。
严肃声明
yudao、ruoyi-vue-pro 生态与 ruoyi / RuoYi / 若依原生生态不是同一个项目。当前 MCP 只支持 yudao、ruoyi-vue-pro、ruoyi-vue-pro-jdk17、yudao-cloud 相关项目,不支持若依原生生态项目。
核心价值
让 AI 不再猜 yudao 项目目录和生成位置
用
.yudao-pilot/config.yaml固化后端、前端和数据库配置基于项目指纹校验路径,避免代码写错仓库或模块
生成前后端代码、菜单、表字段派生字典和 H2 SQL 内容,由 AI 写入普通文件
使用专用工具合并错误码、前端 DICT_TYPE 常量,显式应用菜单与派生字典到数据库
当工作目录不明确时停止初始化,并要求 AI 先询问真实项目目录
安装
项目提供 yudao-pilot 命令入口,适合通过 pipx 或 uv 作为隔离的命令行工具安装。
推荐使用 pipx:
pipx install yudao-pilot-mcp
pipx ensurepath也可以使用 uv:
uv tool install yudao-pilot-mcp没有 pipx 或 uv 时,使用标准虚拟环境和 pip:
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install yudao-pilot-mcpWindows 使用 .venv\Scripts\activate 激活虚拟环境。如果当前 PyPI 镜像尚未同步新版本,显式使用官方索引:
python -m pip install --index-url https://pypi.org/simple/ yudao-pilot-mcp从源码安装仅用于开发:
git clone https://github.com/chanshawoh/yudao-pilot-mcp.git
cd yudao-pilot-mcp
python -m pip install -e ".[dev]"查看版本与升级
yudao-pilot --version # 打印已安装版本,等价于 yudao-pilot version
yudao-pilot upgrade # 按当前安装方式升级upgrade 会根据运行环境自动选择 uv tool upgrade、pipx upgrade 或 python -m pip install --upgrade。升级后需要重启 MCP 客户端,已经运行的旧进程不会自动切换。
配置 MCP 客户端
通过 pipx、uv tool 或 PATH 中的 pip 环境安装后:
{
"mcpServers": {
"yudao-pilot": {
"command": "yudao-pilot",
"args": []
}
}
}如果使用项目内虚拟环境,或 MCP 客户端读取不到 shell 的 PATH:
{
"mcpServers": {
"yudao-pilot": {
"command": "/absolute/path/to/.venv/bin/python",
"args": ["-m", "yudao_pilot.server"]
}
}
}Windows 将 command 改为 .venv\\Scripts\\python.exe 的绝对路径。临时试用也可以让 pipx 自动创建缓存环境:
{
"mcpServers": {
"yudao-pilot": {
"command": "pipx",
"args": ["run", "--spec", "yudao-pilot-mcp", "yudao-pilot"]
}
}
}长期使用推荐先执行 pipx install,避免 MCP 首次启动时等待下载依赖。
使用
当前目录包含多个项目或不确定目标时,先用 discover_workspaces(search_root=当前目录绝对路径) 发现已有配置与候选项目;任务已给出准确工作区时直接调用 load_workspace_config。缺少配置时显式调用 init_workspace_config,检查识别到的后端与前端路径。
# 主目录或多项目场景:先发现
discover_workspaces(search_root=...)
load_workspace_config(workspace_root=...)
validate_workspace_projects(workspace_root=...)
inspect_codegen_context(table_name=..., workspace_root=...)
generate_codegen_scaffold(table_name=..., workspace_root=...)生成工具只返回内容和目标路径;普通文件由 AI 写入,错误码与前端字典通过返回的 merge_operations 调用专用合并工具。需要 SQL 时单独调用 generate_codegen_sql;需要应用菜单/派生字典到数据库时,显式调用 apply_codegen_sql 并满足配置许可。
“只预览”展示生成结果即可,不会创建预览目录。完整的 13 个工具及参数示例见 工具文档。
配套 Skill
仓库提供 yudao-pilot-mcp skill,包含工具选择、表生成、错误码与前端常量合并、SQL 生成和数据库应用流程。将 skills/yudao-pilot-mcp/ 整个目录安装到客户端的技能目录;更新时同步 SKILL.md 和 agents/openai.yaml。
给 AI Agent 的说明
将下面的要求交给使用该 MCP 的 AI Agent:
请安装并配置 yudao-pilot-mcp。不要克隆源码仓库,除非用户明确要参与开发。
1. 确认 Python 版本不低于 3.11。
2. 优先执行 pipx install yudao-pilot-mcp,将 MCP Server 安装为隔离的命令行工具。
3. 如果没有 pipx 但有 uv,执行 uv tool install yudao-pilot-mcp。
4. 如果两者都没有,创建 Python 虚拟环境并执行 python -m pip install yudao-pilot-mcp。
5. 如果当前包镜像找不到该包,使用 --index-url https://pypi.org/simple/ 从官方 PyPI 安装。
6. 用 yudao-pilot --version 验证命令入口并记录已安装版本,不要把 stdio MCP Server 持续运行在测试终端中。
7. 在用户的 MCP 客户端配置中注册 command=yudao-pilot、args=[]。
8. 如果 MCP 客户端读取不到 PATH,使用虚拟环境 Python 的绝对路径,并配置 args=["-m", "yudao_pilot.server"]。
9. 配置完成后提醒用户重启或重新加载 MCP 客户端。
10. 需要升级时执行 yudao-pilot upgrade,升级后重启 MCP 客户端。
安装后的业务操作方式以 yudao-pilot-mcp Skill 为准,不要在安装阶段自行执行代码生成或数据库写入。开源协议
本项目采用 MIT License。你可以自由使用、复制、修改、合并、发布和分发本项目,但必须保留原始版权和许可声明。软件按“原样”提供,不附带任何明示或默示担保。
文档
Related MCP server: Builder-Proj-MCP Server
English
Yudao Pilot MCP is a workspace-aware MCP server for the yudao / ruoyi-vue-pro ecosystem. It helps AI coding tools understand local backend projects, frontend targets, database configuration, and code-generation routes so generated code lands in the right place.
Important Notice
The yudao / ruoyi-vue-pro ecosystem is not the same project as the original ruoyi / RuoYi ecosystem. This MCP currently supports yudao, ruoyi-vue-pro, ruoyi-vue-pro-jdk17, and yudao-cloud projects only. It does not support original RuoYi projects.
Core Value
Stop AI tools from guessing yudao project paths
Use
.yudao-pilot/config.yamlas the routing source of truthValidate backend and frontend paths with project fingerprints
Return backend/frontend code, menu SQL, table-derived dictionary SQL, and H2 contents for AI clients to write
Merge error codes and frontend DICT_TYPE constants through dedicated tools; apply menu/dictionary database changes explicitly
Refuse unsafe initialization when the project workspace is unknown
Installation
The package exposes a yudao-pilot command and is well suited to isolated CLI installation with pipx or uv.
Recommended with pipx:
pipx install yudao-pilot-mcp
pipx ensurepathWith uv:
uv tool install yudao-pilot-mcpWithout pipx or uv, use a standard virtual environment:
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install yudao-pilot-mcpOn Windows, activate with .venv\Scripts\activate. If your configured package mirror has not synchronized the release yet, use the official PyPI index:
python -m pip install --index-url https://pypi.org/simple/ yudao-pilot-mcpInstall from source only for development:
git clone https://github.com/chanshawoh/yudao-pilot-mcp.git
cd yudao-pilot-mcp
python -m pip install -e ".[dev]"Check the Version and Upgrade
yudao-pilot --version # print the installed version; same as yudao-pilot version
yudao-pilot upgrade # upgrade with the installer that owns this environmentupgrade picks uv tool upgrade, pipx upgrade, or python -m pip install --upgrade based on how the command was installed. Restart your MCP client afterwards; an already running server keeps the old version.
MCP Client Configuration
After installing with pipx, uv tool, or a pip environment available on PATH:
{
"mcpServers": {
"yudao-pilot": {
"command": "yudao-pilot",
"args": []
}
}
}When using a project virtual environment, or when the MCP client cannot see your shell PATH:
{
"mcpServers": {
"yudao-pilot": {
"command": "/absolute/path/to/.venv/bin/python",
"args": ["-m", "yudao_pilot.server"]
}
}
}On Windows, set command to the absolute path of .venv\\Scripts\\python.exe. For temporary use, pipx can create a cached environment automatically:
{
"mcpServers": {
"yudao-pilot": {
"command": "pipx",
"args": ["run", "--spec", "yudao-pilot-mcp", "yudao-pilot"]
}
}
}For regular use, run pipx install first to avoid dependency downloads during the first MCP startup.
Usage
When the current directory contains several projects or the target is unclear, call discover_workspaces(search_root=<absolute path>) first; call load_workspace_config directly when the task already names the workspace. If missing, explicitly call init_workspace_config and check the detected project paths.
discover_workspaces(search_root=...)
load_workspace_config(workspace_root=...)
validate_workspace_projects(workspace_root=...)
inspect_codegen_context(table_name=..., workspace_root=...)
generate_codegen_scaffold(table_name=..., workspace_root=...)Generation returns contents and target paths. The AI writes ordinary files and calls the dedicated tools in merge_operations for error codes and frontend constants. Generate SQL separately with generate_codegen_sql; explicitly call apply_codegen_sql for authorized database changes, subject to config permission.
Preview means inspecting the returned contents; no preview directory is created. See all 13 tools and parameter examples.
Companion Skill
The yudao-pilot-mcp skill covers tool selection, table-based generation, constant merging, SQL generation, and database application. Install the complete skills/yudao-pilot-mcp/ directory in your client’s skill directory, keeping SKILL.md and agents/openai.yaml in sync.
Instructions for AI Agents
Give the following requirements to the AI Agent using this MCP server:
Install and configure yudao-pilot-mcp. Do not clone the source repository unless the user explicitly wants a development checkout.
1. Confirm that Python 3.11 or newer is available.
2. Prefer pipx install yudao-pilot-mcp to install the MCP server as an isolated CLI application.
3. If pipx is unavailable but uv is installed, run uv tool install yudao-pilot-mcp.
4. If neither tool is available, create a Python virtual environment and run python -m pip install yudao-pilot-mcp.
5. If the configured package mirror cannot find the package, install from the official index with --index-url https://pypi.org/simple/.
6. Run yudao-pilot --version to verify the command entry point and report the installed version. Do not leave the stdio MCP server running in the verification terminal.
7. Register the server in the user's MCP client with command=yudao-pilot and args=[].
8. If the MCP client cannot see the command on PATH, use the absolute path to the virtual-environment Python and set args=["-m", "yudao_pilot.server"].
9. Ask the user to restart or reload the MCP client after saving the configuration.
10. To upgrade, run yudao-pilot upgrade and restart the MCP client afterwards.
After installation, follow the yudao-pilot-mcp Skill for business operations. Do not start code generation or database writes during installation.License
This project is released under the MIT License. You may use, copy, modify, merge, publish, and distribute it provided that the original copyright and permission notice are retained. The software is provided “as is”, without warranty of any kind.
Documentation
Available Tools
13 toolsapply_codegen_sqlApply Codegen SqlA
按当前表结构和参数重新生成计划,显式应用菜单/派生字典到配置数据库。
必须满足 codegen.apply_to_database=true;仅应用 mode=auto 的部分。 不执行任意 SQL、不写迁移或 H2 文件。与 generate_codegen_sql 使用相同命名参数。 菜单与字典分别提交,可能部分成功;返回各自结果,不提供跨两者的整体回滚。
| Name | Required | Description | Default |
|---|---|---|---|
| menu_icon | No | ||
| menu_name | No | ||
| table_name | Yes | ||
| entity_name | No | ||
| module_name | No | ||
| business_name | No | ||
| parent_menu_id | No | ||
| workspace_root | No | ||
| module_menu_icon | No | ||
| module_menu_name | No | ||
| parent_menu_name | No | ||
| backend_module_dir | No | ||
| backend_package_module | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply readOnlyHint=false, but the description adds substantial behavioral context: no arbitrary SQL is executed, no migrations or H2 files are written, menus and dictionaries are submitted separately and may partially succeed, and there is no cross-cutting rollback. These are exactly the operational traits an agent needs for a mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and the apply gating are front-loaded, and the following sentences each carry a distinct constraint (no raw SQL, no migrations, partial success, no rollback). It is dense but nearly every clause earns its place; slightly clipped phrasing is the only cost.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value semantics need not be restated, and the description compensates by noting per-resource results and lack of rollback. However, for a 13-parameter mutation tool the absence of any per-parameter semantics leaves a real gap the sibling reference only partly fills.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 13 parameters, so the description must carry the parameter burden. It offers only a pointer that the same named parameters as generate_codegen_sql are used, giving no meaning, format, or defaults for any individual field, which is a significant shortfall.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: regenerate the plan and explicitly apply menu/derived-dictionary entries to the configuration database. It names the sibling generate_codegen_sql and distinguishes itself by being the 'apply' side rather than the generator, so an agent can separate the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete prerequisite (codegen.apply_to_database=true) and a scope condition (only the mode=auto portion is applied), which tells the agent when the call will actually act. It does not spell out an explicit 'use X instead' decision path against the other siblings, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_workspacesDiscover WorkspacesARead-only
只读发现工作区:返回已有配置、后端与前端候选、扫描告警,不写文件、不连接数据库。
search_root 必须是包含项目目录的绝对路径;max_depth 取 0-6,默认 3,只向下扫描。 在主目录里用它确认目标后,再把选定项目的绝对路径作为 workspace_root 调用其他工具。
| Name | Required | Description | Default |
|---|---|---|---|
| max_depth | No | ||
| search_root | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
注释已提供 readOnlyHint=true,描述中进一步强调'只读'、'不写文件、不连接数据库',增强了安全语义。还披露了扫描行为(只向下扫描)和默认深度限制,但未提及返回结果的格式或具体字段(如告警的细节),考虑到有输出 schema,描述已覆盖关键行为,评 4 分。
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
描述仅两句话,第一句概括用途和副作用(只读、不写文件),第二句给出参数约束和使用建议。信息密度高,无冗余,关键约束前置,结构紧凑。
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
工具操作简单(2 参数),有输出 schema,描述已涵盖目的、副作用、参数约束和使用时机。唯一缺失的是返回内容的具体结构,但输出 schema 已承担该职责,整体完整性足够。
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
schema 描述覆盖率为 0%,但描述对两个参数都做了补充说明:search_root 必须是绝对路径且指向项目目录,max_depth 范围 0-6、默认 3。这些信息弥补了 schema 的不足,虽然未给出完整示例,但语义已足够清晰,评 4 分。
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
描述明确说明这是只读发现工作区的工具,返回已有配置、后端与前端候选、扫描告警,并明确不写文件、不连接数据库。与兄弟工具(如 load_workspace_config、init_workspace_config)区分清晰,动词是'发现',资源是'工作区',具有高度特异性。
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
描述明确说明使用场景:在主目录中确认目标后,再调用其他工具。并给出参数使用条件:search_root 必须是包含项目目录的绝对路径;max_depth 取 0-6,默认 3。还隐含了与其他工具(如 validate_workspace_projects)的衔接关系,提供了清晰的何时使用与后续步骤。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_codegen_scaffoldGenerate Codegen ScaffoldARead-only
只读生成前后端代码内容与目标路径,不写文件、不生成 SQL、不写库。
generated_files 由 AI 写入;merge_operations 给出专用合并工具及结构化参数, 错误码和字典增量不作为完整文件返回。不会创建预览目录。
field_overrides: AI 覆盖字段组件类型,格式为 {"java_field": "html_type"}, 例如 {"lng": "inputNumber", "lat": "inputNumber"}。 可用 html_type 值: input, inputNumber, textarea, editor, select, radio, checkbox, datetime, date, imageUpload, fileUpload。 backend_module_dir: 显式后端目标模块目录,支持 yudao-module-a/yudao-module-b 或 a/b。 backend_package_module: 显式 Java package module 名,例如 b;未传时使用 module_name。
| Name | Required | Description | Default |
|---|---|---|---|
| menu_name | No | ||
| table_name | Yes | ||
| entity_name | No | ||
| module_name | No | ||
| business_name | No | ||
| parent_menu_id | No | ||
| workspace_root | No | ||
| field_overrides | No | ||
| include_backend | No | ||
| include_frontend | No | ||
| parent_menu_name | No | ||
| backend_module_dir | No | ||
| backend_package_module | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply readOnlyHint=true, and the description adds meaningful behavioral context beyond that: no file writes, no SQL generation, no DB writes, no preview directory creation, and the important nuance that generated_files is written by the AI while error-code/dict increments are returned as merge operations rather than full files. This is substantive behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Information is front-loaded with the read-only constraint and output shape before parameter details, and each sentence conveys a distinct fact. It is dense but not padded, though the mix of behavioral notes and parameter notes could be organized more cleanly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, yet the description still usefully characterizes the output (generated_files vs merge_operations). For a 13-parameter mutation-adjacent generator, the coverage of key behaviors and tricky parameters is solid, with only the many self-evident-named parameters left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for 13 parameters, so the description must compensate. It does so well for the non-obvious ones (field_overrides including the full html_type enum list, backend_module_dir with both 'yudao-module-a/b' and shorthand 'a/b' forms, backend_package_module fallback to module_name), but ~10 parameters (table_name, menu_name, entity_name, module_name, business_name, parent_menu_id, workspace_root, include_*, parent_menu_name) remain undocumented beyond their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('只读生成前后端代码内容与目标路径') and immediately differentiates itself from siblings by negation: it does not write files, does not generate SQL (contrast generate_codegen_sql), and does not write to the DB. An agent can tell it apart from generate_codegen_sql/apply_codegen_sql without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through its read-only framing and mentions that generated_files are meant to be written by the AI and that merge_operations points to dedicated merge tools (siblings merge_backend_error_codes/merge_frontend_dict_types). However, it never states an explicit when-to-use rule, sequence (e.g. before generate_codegen_sql), or exclusion criteria, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_codegen_sqlGenerate Codegen SqlARead-only
只读生成指定业务表的菜单、派生字典和 H2 SQL 内容及路径,不写文件、不写库。
auto / migration_only 均生成对应 SQL,disabled 不生成对应片段。 即使 codegen.apply_to_database=true,本工具也不执行数据库应用。 SQL 文件由 AI 写入;真实菜单/字典应用需显式调用 apply_codegen_sql。 backend_module_dir: 显式后端目标模块目录,支持 yudao-module-a/yudao-module-b 或 a/b。 backend_package_module: 显式 Java package module 名,例如 b;未传时使用 module_name。
| Name | Required | Description | Default |
|---|---|---|---|
| menu_icon | No | ||
| menu_name | No | ||
| table_name | Yes | ||
| entity_name | No | ||
| module_name | No | ||
| business_name | No | ||
| parent_menu_id | No | ||
| workspace_root | No | ||
| module_menu_icon | No | ||
| module_menu_name | No | ||
| parent_menu_name | No | ||
| backend_module_dir | No | ||
| backend_package_module | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, but the description adds substantial context: even if codegen.apply_to_database=true the tool will not apply to the database, and SQL files are written by the AI rather than by this tool. This clarifies destructive boundaries beyond the annotation bar.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and safety constraints are front-loaded and the prose is dense with no filler. The trailing parameter notes read as appended patches rather than a structured parameter section, slightly hurting flow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the read-only safety model is well covered. However, for a 13-parameter tool the undocumented majority of inputs leaves an agent without enough guidance to set most arguments correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 13 parameters, so the description carries the full burden. Only backend_module_dir and backend_package_module are explained (with accepted format variants), leaving the other 11 parameters undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (generate) and precise resources (menu, derived dictionary, H2 SQL content and paths) scoped to a named business table. It also distinguishes itself from apply_codegen_sql, which actually applies menu/dictionary changes, so an agent can tell the two apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly defines when and when-not: it does not write files or the DB, and real menu/dictionary application requires explicitly calling apply_codegen_sql. It also specifies mode behavior (auto/migration_only generate, disabled does not), leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
init_workspace_configInit Workspace ConfigA
识别工作区项目并创建 .yudao-pilot/config.yaml;overwrite=true 会重建已有配置。
backend_path 与 frontend_projects 必须同时提供或同时省略,用于多项目目录下的显式选择; frontend_projects=[] 表示只配置后端。省略时按无歧义自动识别,存在多个后端或同类前端候选 时返回 selection_required 与候选清单,不写文件。
| Name | Required | Description | Default |
|---|---|---|---|
| overwrite | No | ||
| backend_path | No | ||
| workspace_root | No | ||
| frontend_projects | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare `readOnlyHint=false`, so the tool is known to mutate state. The description adds transparency by stating it creates a config file, that `overwrite=true` rebuilds existing config, and that in ambiguous cases it returns `selection_required` and writes no file. This goes beyond the annotation and covers important behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph that front-loads the main action and then explains parameter constraints and fallback behavior. Every sentence adds value, and it is not overly long. It could be broken into bullet points for clarity, but it is appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (indicated by context), the description does not need to detail return values. It covers the core behavior, parameter relationships, and the edge case of ambiguity. It could mention prerequisites like existing workspace structure, but for a config-init tool it is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains `backend_path` and `frontend_projects` relationship and the meaning of an empty array, and partially explains `overwrite`. However, it does not describe `workspace_root` or the internal structure of `frontend_projects` items (type/path), leaving some parameters under-explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool identifies workspace projects and creates `.yudao-pilot/config.yaml`, with a specific verb (identify/create) and resource. It also explains the `overwrite` behavior. However, it does not explicitly differentiate from sibling tools like `load_workspace_config`, though the name 'init' vs 'load' makes it clear. It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete usage rules: `backend_path` and `frontend_projects` must be provided together or omitted, and `frontend_projects=[]` means backend-only. It also explains the auto-detection fallback and the `selection_required` case when ambiguity exists. This gives clear guidance on how to invoke the tool, though it does not explicitly state when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_codegen_contextInspect Codegen ContextCRead-only
结合配置规则、后端默认配置和 SQL 菜单数据,构建生成代码所需上下文。
backend_module_dir: 显式后端目标模块目录,支持 yudao-module-a/yudao-module-b 或 a/b。 backend_package_module: 显式 Java package module 名,例如 b;未传时使用 module_name。
| Name | Required | Description | Default |
|---|---|---|---|
| menu_name | No | ||
| table_name | Yes | ||
| entity_name | No | ||
| module_name | No | ||
| business_name | No | ||
| parent_menu_id | No | ||
| workspace_root | No | ||
| parent_menu_name | No | ||
| backend_module_dir | No | ||
| backend_package_module | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so the agent knows it's a safe read operation. The description adds that it combines multiple data sources, which is useful, but doesn't disclose potential rate limits, auth needs, or what the output context contains (though output schema exists). With annotations covering safety, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, but the first sentence is in Chinese while the rest is in English, creating linguistic inconsistency. It's front-loaded with the main purpose, but the parameter explanations could be more structured. It's adequately concise but not optimally organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema and readOnly annotation, the description doesn't need to explain return values or safety. However, with 10 parameters and 0% schema coverage, the description should document more parameters to be complete. It covers two parameters but leaves eight undocumented, which is a significant gap for a tool with many inputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate. It explains two parameters (backend_module_dir and backend_package_module) with format examples and fallback behavior, which is helpful. However, 8 other parameters (menu_name, table_name, entity_name, module_name, business_name, parent_menu_id, workspace_root, parent_menu_name) are undocumented in both schema and description. This partial coverage means the description adds value but doesn't fully address the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool builds codegen context from config rules, backend defaults, and SQL menu data, which is a specific verb+resource. However, it doesn't differentiate itself from sibling tools like generate_codegen_scaffold or inspect_table_schema, and the purpose is somewhat vague about what 'context' entails. It's clear enough for a technical user but lacks sibling routing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives. It doesn't mention prerequisites like requiring workspace configuration or table schema inspection first, nor does it exclude any scenarios. The agent must infer usage from the context of sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_project_pathInspect Project PathBRead-only
根据 pom.xml 或 package.json 的依赖指纹分析项目类型,不依赖目录名。
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes that this is a non-mutating inspection, so the safety profile is covered. The description does add real behavioral context beyond the annotation: detection is fingerprint-based on pom.xml/package.json rather than directory naming. It still says nothing about failure modes (e.g., unknown project type) or how confident/partial results are presented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with no filler; the analytical method leads and the non-reliance-on-name caveat follows. Nothing is redundant, though it is terse to the point of leaving the parameter format unstated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the read-only annotation covers safety. What remains missing is the expected form of project_path and any note about behavior on unrecognized projects, which for a one-parameter inspection tool is a modest but real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required parameter project_path, so the description carries the burden. It implicitly frames the input as a project location rather than a name ('does not rely on the directory name'), but it never specifies whether the value is a directory path, a file path, or whether it must be absolute.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a concrete verb (分析/analyze) and a concrete target (项目类型/project type), plus the mechanism used (dependency fingerprints in pom.xml or package.json). That is enough to distinguish it from siblings like validate_workspace_projects or inspect_table_schema, though it never names which sibling it complements or replaces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this tool versus alternatives such as validate_workspace_projects or load_workspace_config. The only guidance-like content is the methodological note that analysis does not depend on directory names, which is a caveat rather than a when-to-use rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_table_schemaInspect Table SchemaBRead-only
只读检查单表字段;真实数据库必须识别到目标表,本地 SQL 仅作诊断参考。
| Name | Required | Description | Default |
|---|---|---|---|
| table_name | Yes | ||
| workspace_root | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already covers safety, and '只读' merely repeats it. The description does add genuinely new behavioral context: the real database must recognize the target table, and local SQL is diagnostic-only. It still omits what happens on failure or whether results are cached, so a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence that front-loads the core action (read-only single-table inspection) before the constraints. It is efficient, though the dense punctuation makes the two clauses blur together slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but with 0% parameter coverage the description should compensate for undocumented inputs — it does not explain workspace_root at all. For a two-parameter tool, this leaves a material gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and neither of the two parameters is documented. The description only hints at 'single table' (implying table_name) but says nothing about workspace_root, its default null, or path resolution — leaving the uncovered schema to carry meaning the description never supplies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource in '只读检查单表字段' (read-only inspection of a single table's fields), which clearly separates it from project/workspace-level siblings like inspect_project_path or validate_workspace_projects. It is clear but does not explicitly route to any alternative tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage context via '真实数据库必须识别到目标表,本地 SQL 仅作诊断参考' — i.e. the tool expects a real, resolvable database and treats local SQL as diagnostic only. However, it never states when to choose this over resolve_database_config or inspect_codegen_context, so the guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_workspace_configLoad Workspace ConfigBRead-only
只读加载工作区配置;缺失时返回 config_missing,不创建文件。
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_root | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a non-mutating read, and the description partly restates that (只读, 不创建文件). Its real added value is disclosing the failure mode (returns config_missing rather than creating anything), which annotations do not convey; beyond that it says nothing about permissions, resolution order, or partial configs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact clause, front-loaded with the read-only character and the missing-file behavior; no filler. Every phrase carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value details are covered elsewhere, and the missing-config behavior is stated. What is missing is any treatment of workspace_root semantics and the relationship to init_workspace_config, which matters even for a one-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter workspace_root has no description, default documented only as null. With low coverage the description is expected to compensate, but it never mentions workspace_root, what null/default means, or how the root is resolved — so the parameter remains ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (只读加载/read-only load) and resource (工作区配置/workspace config), and implicitly distinguishes itself from the sibling init_workspace_config by stressing it does not create files. It stops short of naming that sibling, so the differentiation is inferable rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one concrete usage-relevant condition — when the config is missing the tool returns config_missing instead of provisioning — which implies init_workspace_config is the alternative for that case. However, it never explicitly says 'use this to read, use init_workspace_config to create', leaving the routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_backend_error_codesMerge Backend Error CodesA
合并后端错误码;relative_path 是相对配置后端仓库的 ErrorCodeConstants.java 路径。
constants 为非空 {name, message} 列表,自动分配编号;同名更新提示并保留编号。 section_title 指定业务分组标题。只修改目标文件及必要的 ServiceErrorCodeRange.java, 不生成普通代码、不处理或删除占位文件。返回实际 changed_files,重复相同输入为空列表。
| Name | Required | Description | Default |
|---|---|---|---|
| constants | Yes | ||
| relative_path | Yes | ||
| section_title | Yes | ||
| workspace_root | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint=false in annotations, the description fills the gap substantially: it states it modifies only the target file and ServiceErrorCodeRange.java, does not generate ordinary code or delete placeholders, returns changed_files, and produces an empty list for duplicate input. This level of detail on scope, side effects, and idempotency goes well beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, opening with the core purpose before parameter details and behavioral constraints. Every sentence adds information and there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write tool with four required parameters, nested constants, and an output schema, the description covers purpose, behavior, and most parameters. It misses the meaning of workspace_root and any prerequisite such as ensuring the backend workspace is configured, which leaves a small completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% at the top level, so the description must carry the burden. It explains relative_path (path to ErrorCodeConstants.java relative to the configured backend repo), constants (non-empty {name, message} list, auto-numbering, same-name update behavior), and section_title (business group title), but leaves workspace_root completely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: '合并后端错误码' (merge backend error codes), and clarifies the target file via relative_path. It distinguishes itself from the frontend sibling implicitly by the 'backend' domain, but never names an alternative tool to make the contrast explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but gives no guidance on when to use it versus alternatives such as merge_frontend_dict_types or the codegen tools. Constraints like 'not generating ordinary code' describe behavior rather than helping an agent select this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_frontend_dict_typesMerge Frontend Dict TypesA
向指定前端 src/utils/dict.ts 的 DICT_TYPE 增量合并常量,不创建数据库字典。
target_type 唯一匹配配置前端;relative_path 相对该项目,可带 apps/web-antd 等子目录。 constants 为非空 {name, value, comment?} 列表;同名同值跳过,名称或值冲突报错。 仅修改此文件的 DICT_TYPE 并补齐成员逗号,保留其他内容。不会创建缺失的文件/枚举。
| Name | Required | Description | Default |
|---|---|---|---|
| constants | Yes | ||
| target_type | Yes | ||
| relative_path | Yes | ||
| workspace_root | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false; the description carries the real behavioral burden. It discloses exactly what changes (only the DICT_TYPE block plus member commas), what is preserved (other content), idempotency (same name+same value is skipped), conflict handling (name or value mismatch errors), and that it will not create files or enums.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence followed by tightly packed parameter and behavior notes; nearly every clause earns its place. Slightly dense but no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described. For a mutation tool the description covers what is written, preserved, skipped, and errored, plus the no-file-creation constraint. Only the workspace_root parameter and any permission/auth requirements are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Top-level schema coverage is 0%, so the description must compensate, and it does: target_type uniquely matches a configured frontend, relative_path is project-relative and may include subdirs like apps/web-antd, and constants is a non-empty {name, value, comment?} list with skip/conflict behavior. It does not disambiguate workspace_root, leaving one param unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: incrementally merge constants into the DICT_TYPE of src/utils/dict.ts, with the explicit negative scope 'does not create a database dictionary.' An agent can distinguish this from merge_backend_error_codes (frontend dict vs backend error codes) without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the purpose statement, but there is no explicit when-to-use/when-not against the sibling tools (merge_backend_error_codes, apply_codegen_sql, generate_codegen_scaffold). It notes the target file must already exist ('does not create missing files/enums'), which is a useful precondition, but alternative routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_database_configResolve Database ConfigBRead-only
解析数据库配置,优先遵循工作区 config,其次从后端本地配置中读取。
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_root | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true already declaring safety, the description still adds genuine behavioral context beyond annotations: the tool resolves config from two sources with an explicit fallback order (workspace config, then backend local config). It does not describe failure behavior when neither source exists, but the dual-source precedence is real value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence that front-loads the action and then the priority order. Nothing wasted, though there is no additional clarifying detail that could have been added cheaply.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and annotations cover safety. But for a tool whose entire purpose is resolution logic, the description leaves key questions open: what happens when workspace_root is null, how conflicts between the two sources are merged, and what 'backend local config' covers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter (workspace_root) at 0% schema description coverage, and the description never mentions it. The agent must guess what passing null/default versus a path does, and whether that path drives the 'workspace config' lookup. With low coverage the description should compensate but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (解析/resolve) and resource (数据库配置), and adds the resolution precedence (workspace config first, backend local config second). This is clear, but it does not differentiate the tool from siblings like load_workspace_config or init_workspace_config that also deal with config.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the internal source precedence, which implies it is a resolution/lookup step, but it never states when an agent should call this instead of load_workspace_config, init_workspace_config, or the inspect_* tools. Usage is only inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_workspace_projectsValidate Workspace ProjectsBRead-only
校验工作区中的后端和前端项目是否与配置严格匹配。
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_root | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read operation, so the description carries a lighter burden. It adds the useful 'strict match' semantic, but leaves open the key behavioral question for a validator: whether a mismatch raises an error or is returned as a report, and whether validation is recursive over all projects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler — the verb and scope come first. It is efficient, though its brevity shades into under-specification rather than disciplined conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return structure need not be explained. What is missing is what exactly counts as a 'strict match,' what happens on failure, and how workspace_root defaults — gaps that matter for a validation tool an agent must decide to invoke.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single workspace_root parameter has 0% schema description coverage and is undocumented in the description beyond the vague phrase 'in the workspace.' The default of null and any path syntax or resolution behavior are never explained, so the description does not compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb plus resource pair — validate backend and frontend projects in the workspace against the configuration — and adds the qualifier 'strictly matches.' That is enough for an agent to know what the tool does. It does not, however, distinguish itself from close siblings such as load_workspace_config or inspect_project_path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no stated prerequisites, and no mention of alternatives among the many sibling config/inspect tools. An agent can only infer that this is a preflight check, not when it should be preferred over loading the config directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v0.4.0- Added
discover_workspaces - Changed
init_workspace_config2 fields changed- added
Input schema / properties / backend_pathAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / frontend_projectsAdded value: +{ + "anyOf": [ + { + "items": { + "properties": { + "path": { + "type": "string" + }, + "type": { + "enum": [ + "VUE3_ELEMENT_PLUS", + "VUE3_VBEN5_ANTD_SCHEMA", + "VUE3_VBEN5_ANTD_GENERAL", + "VUE3_VBEN5_EP_SCHEMA", + "VUE3_VBEN5_EP_GENERAL", + "VUE3_ADMIN_UNIAPP_WOT" + ], + "type": "string" + } + }, + "required": [ + "type", + "path" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null +}
25 tool updates
v0.2.0- Added
apply_codegen_sql - Removed
compare_codegen_reference_projects_tool - Added
generate_codegen_scaffold - Removed
generate_codegen_scaffold_tool - Added
generate_codegen_sql - Removed
generate_codegen_sql_tool - Removed
infer_codegen_plan_tool - Added
init_workspace_config - Removed
init_workspace_config_tool - Added
inspect_codegen_context - Removed
inspect_codegen_context_tool - Added
inspect_project_path - Removed
inspect_project_path_tool - Added
inspect_table_schema - Removed
inspect_table_schema_tool - Added
load_workspace_config - Removed
load_workspace_config_tool - Added
merge_backend_error_codes - Added
merge_frontend_dict_types - Added
resolve_database_config - Removed
resolve_database_config_tool - Added
validate_workspace_projects - Removed
validate_workspace_projects_tool - Removed
write_generated_files_tool - Removed
write_mysql_migration_tool
2 tool updates
- Added
init_workspace_config_tool - Added
inspect_project_path_tool
2 tool updates
v0.1.1- Added
inspect_table_schema_tool - Added
load_workspace_config_tool
4 tool updates
- Removed
init_workspace_config_tool - Removed
inspect_project_path_tool - Removed
inspect_table_schema_tool - Removed
load_workspace_config_tool
13 tool updates
v0.1.0- First observed
compare_codegen_reference_projects_tool - First observed
generate_codegen_scaffold_tool - First observed
generate_codegen_sql_tool - First observed
infer_codegen_plan_tool - First observed
init_workspace_config_tool - First observed
inspect_codegen_context_tool - First observed
inspect_project_path_tool - First observed
inspect_table_schema_tool - First observed
load_workspace_config_tool - First observed
resolve_database_config_tool - First observed
validate_workspace_projects_tool - First observed
write_generated_files_tool - First observed
write_mysql_migration_tool
TDQS
Scored across 13 tools
Each tool has a clearly distinct purpose: config load/init/discover, project validation, database resolution, schema/codegen context inspection, SQL/scaffold generation, SQL application, and merging error codes/dict types. Even related tools like generate_codegen_sql and apply_codegen_sql are cleanly separated into generate vs. apply.
All tool names follow a consistent verb_noun snake_case pattern (load_, init_, discover_, generate_, inspect_, validate_, resolve_, apply_, merge_). The verbs are varied but meaningful, and the pattern is uniform throughout the entire set.
13 tools is well within the ideal 3-15 range for a domain-specific scaffolding tool. Each tool earns its place by covering a distinct step in the workspace configuration and code generation lifecycle, without redundancy or bloat.
The tool surface covers the full workflow: workspace discovery/init/load/validate, database config resolution, table schema inspection, SQL generation and application, code scaffold generation, and merging of backend error codes and frontend dict types. No obvious dead ends or missing operations for the stated purpose.
Maintenance
Related MCP Connectors
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Repository knowledge graph MCP server for codebase understanding and debugging.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
Related MCP Servers
- AlicenseCqualityDmaintenanceAn experimental MCP server that enables AI assistants to interact with VS Code workspaces through file operations, code execution, and Git management. It also provides tools for Docker integration, project scaffolding, and secure command execution using project-specific configurations.7629 npm3MIT
- AlicenseAqualityDmaintenanceA unified MCP server for scaffolding project structures across multiple frameworks including Spring Boot, React, Vue, Next.js, FastAPI, Django, Flask, Express, and more.25 npm1MIT
- AlicenseNot gradedqualityCmaintenanceToken-efficient MCP server for multi-language project analysis (Java, TypeScript, JavaScript, Markdown, Python) with plugins, semantic search, and static analysis.MIT
- FlicenseNot gradedqualityDmaintenanceWorkspace-aware MCP server that provides AI clients with structural code understanding via AST parsing, hybrid retrieval, and git history, enabling accurate code search, definition lookup, and blame analysis.-