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
- Create a plugin with a
.mcp.json that defines an MCP server:
{
"mcpServers": {
"my-plugin": {
"type": "stdio",
"command": "node",
"args": ["scripts/bootstrap.mjs"]
}
}
}
-
Install: copilot plugin install owner/my-plugin
-
Verify plugin is installed:
ls ~/.copilot/installed-plugins/_direct/owner--my-plugin/
# All files present, server starts correctly when called directly
-
Start a Copilot CLI session and try to use any tool from the plugin -- tools are unavailable
-
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
Describe the bug
When a plugin is installed via
copilot plugin install, the plugin's.mcp.jsonserver 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
.mcp.jsonthat defines an MCP server:{ "mcpServers": { "my-plugin": { "type": "stdio", "command": "node", "args": ["scripts/bootstrap.mjs"] } } }Install:
copilot plugin install owner/my-pluginVerify plugin is installed:
Start a Copilot CLI session and try to use any tool from the plugin -- tools are unavailable
Inspect
~/.copilot/mcp-config.json:{ "mcpServers": { // my-plugin entry is MISSING } }The plugin's
plugin.jsoncorrectly declares"mcpServers": ".mcp.json"and the.mcp.jsonfile exists with valid server definitions, but the install process does not merge them into the runtime config.Expected behavior
copilot plugin installshould merge the plugin's.mcp.jsonserver definitions into~/.copilot/mcp-config.jsonso that the plugin's tools are immediately available in the next session. Theplugin.json->mcpServers->.mcp.jsonchain 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
copilot plugin installdoesn't add the entry to the runtime config.