Skip to content

[aw-compat] Missing codemod: migrate unknown tools: entries to mcp-servers: #26812

@github-actions

Description

@github-actions

Detected in daily compat check §24548289602: 2 high-star repos have the same syntax error — a custom MCP server name placed directly in the tools: section instead of mcp-servers:.

Pattern

Users write:

tools:
  serena: ['typescript']      # storybookjs/storybook

or:

tools:
  tavily:
    tools: [search, search_news]   # SSWConsulting/SSW.Rules.Content

But the compiler requires unknown servers to be declared under mcp-servers::

mcp-servers:
  serena:
    command: "..."
    tools: ['typescript']

Affected Repositories

Repository Stars File Unknown tool
storybookjs/storybook 89,730 duplicate-code-detector.md serena
SSWConsulting/SSW.Rules.Content 400 content-campaign.md tavily

Proposed Codemod: tools-unknown-to-mcp-servers

gh aw fix could detect when a tools: entry uses an unrecognized key (not a built-in tool name) and:

  1. Move the block from tools: to mcp-servers:
  2. Wrap it in the correct MCP server config structure (with a skeleton command: if not present)
  3. Update the lock file

Example transformation (duplicate-code-detector.md):

# Before
tools:
  serena: ['typescript']

# After
mcp-servers:
  serena:
    command: "..."   # TODO: fill in command
    tools: ['typescript']

Why This is Common

The tools: and mcp-servers: sections look similar syntactically. A user configuring a new MCP integration naturally tries tools: myserver: ... first before discovering mcp-servers: is the right namespace. The error message already provides good guidance, but an auto-fix would reduce friction for these high-traffic repos.

Acceptance Criteria

  • gh aw fix migrates tools: { unknown-name: value }mcp-servers: { unknown-name: value }
  • If the value is a list (e.g. ['typescript']), wraps it as tools: under the server block
  • Inserts a # TODO: fill in command placeholder for command: if not present
  • Does not touch recognized built-in tool names

References: §24548289602
Related to #26811

Generated by Daily AW Cross-Repo Compile Check · ● 911.5K ·

  • expires on Apr 24, 2026, 5:05 AM UTC

Metadata

Metadata

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions