Skip to content

Bug: copilot plugin install does not merge plugin .mcp.json servers into ~/.copilot/mcp-config.json #2709

@ericchansen

Description

@ericchansen

Describe the bug

When a plugin is installed via copilot plugin install, the plugin's .mcp.json server definitions are not merged into ~/.copilot/mcp-config.json -- the file the Copilot CLI runtime reads to start MCP servers. This results in the plugin's own tools being completely unavailable, even though the plugin files are correctly installed and the server starts fine when called directly.

Affected version

1.0.25 (also reproduced on earlier versions)

Steps to reproduce the behavior

  1. Create a plugin with a .mcp.json that defines an MCP server:
{
  "mcpServers": {
    "my-plugin": {
      "type": "stdio",
      "command": "node",
      "args": ["scripts/bootstrap.mjs"]
    }
  }
}
  1. Install: copilot plugin install owner/my-plugin

  2. Verify plugin is installed:

ls ~/.copilot/installed-plugins/_direct/owner--my-plugin/
# All files present, server starts correctly when called directly
  1. Start a Copilot CLI session and try to use any tool from the plugin -- tools are unavailable

  2. Inspect ~/.copilot/mcp-config.json:

{
  "mcpServers": {
    // my-plugin entry is MISSING
  }
}

The plugin's plugin.json correctly declares "mcpServers": ".mcp.json" and the .mcp.json file exists with valid server definitions, but the install process does not merge them into the runtime config.

Expected behavior

copilot plugin install should merge the plugin's .mcp.json server definitions into ~/.copilot/mcp-config.json so that the plugin's tools are immediately available in the next session. The plugin.json -> mcpServers -> .mcp.json chain is correctly authored; the install step just doesn't process it.

Workaround

Manually add the server entry to ~/.copilot/mcp-config.json:

{
  "mcpServers": {
    "my-plugin": {
      "type": "stdio",
      "command": "node",
      "args": ["scripts/bootstrap.mjs"],
      "cwd": "~/.copilot/installed-plugins/_direct/owner--my-plugin"
    }
  }
}

Additional context

Metadata

Metadata

Assignees

No one assigned

    Labels

    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