github / github/copilot-cli

Title: MCP tools with dots in names cause 400 Bad Request — should match MCP spec

Aberta
#2,581 2 comentários 3 reações 0 responsáveis Ver no GitHub
area:mcp
Linguagem predominante
Shell
Estrelas
11.2k
Forks
1.9k
Merge médio
14h 16min
PRs com merge (30d)
6

Descrição

When an MCP server returns tools with dots (.) in their names, Copilot CLI sends them to the API which rejects them with a 400 error:

✗ Execution failed: CAPIError: 400 tools.19.custom.name: String should match pattern
'^[a-zA-Z0-9_-]{1,128}$'

The MCP specification explicitly allows dots in tool names (section 5.1.1). VS Code Copilot handles this by remapping tool names internally (dots → underscores), but the CLI passes them through raw and the API rejects them.

Steps to Reproduce

1. Configure an MCP server that returns tools with dots in names (e.g., Backstage's @backstage/plugin-mcp-actions-backend v0.1.10+ which generates names like catalog.get-entity-facets)
2. Start Copilot CLI
3. Send any prompt → 400 Bad Request

Expected Behavior

API should accept dots per the MCP spec.

Actual Behavior

Hard failure — CLI becomes completely unusable when any MCP server has dotted tool names.

Environment

- Copilot CLI: latest
- OS: macOS / Windows / Linux (all affected)

Related Issues

- VS Code (warning, not error): https://github.com/microsoft/vscode/issues/308463
- IntelliJ (same hard failure): https://github.com/microsoft/copilot-intellij-feedback/issues/1583
- MCP spec discussion on tool name pattern: https://github.com/modelcontextprotocol/modelcontextprotocol/pull/1603
- MCP Spec — Tool Names: https://modelcontextprotocol.io/specification/2025-11-25/server/tools

Guia de contribuição

Abrir o guia de contribuição

Direção de pesquisa

Comece reproduzindo a falha com um servidor MCP que retorne um nome de ferramenta com pontos, como catalog.get-entity-facets; em seguida, rastreie o caminho do Copilot CLI que envia as ferramentas MCP para a API. Considera-se concluído quando nomes com pontos não produzirem mais um erro 400 e estiverem em conformidade com a especificação MCP, com cobertura para o caminho de solicitação afetado.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Domínio
api, cli
Tipo de issue
Bug
Dificuldade
3/5
Tempo estimado
1-2 dias
Status de atividade
Pouca atividade
Clareza
Razoavelmente clara
Facilidade para iniciantes
48/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.