feat(mcp): advertise the MCP Apps extension when a resource serves an app

Aberta
#8,832 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 2 dias

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
52/100
Tipo de issue
Funcionalidade
Clareza
Razoavelmente clara
Status de atividade
Ativa
Stack de tecnologia
php
Domínio
api, backend

Direção de pesquisa

Start by reading the MCP bundle Loader and the referenced McpAppPass::extensionAlreadyEnabled() logic, then check how the SDK defines McpApps::MIME_TYPE and McpApps::URI_SCHEME. Trace how registered resources and tools expose those values and how server capabilities are built. Done means app resources or tool metadata enable the extension once per server, including when #[AsMcpApp] is also used.

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

Descrição

When an McpResource serves an MCP App (mimeType: 'text/html;profile=mcp-app', ui:// uri) or an McpTool points to one through meta: ['ui' => ['resourceUri' => 'ui://...']], the server should advertise the io.modelcontextprotocol/ui extension in its capabilities. Today we don't, so every app ends up with its own compiler pass:

$container->getDefinition('mcp.server.garage.builder')
    ->addMethodCall('enableExtension', [new Definition(McpApps::class)]);

The bundle already does this for #[AsMcpApp] (Symfony\AI\McpBundle\DependencyInjection\McpAppPass, see extensionAlreadyEnabled()), and since 2026-07-28 extensions are negotiated through capabilities.extensions, so a host that doesn't see it may not render the app at all.

I think the Loader (or a compiler pass in the bundle integration) could check the operations it registers and call enableExtension(new McpApps()) once per server when one of them is an app, reusing McpApps::MIME_TYPE / McpApps::URI_SCHEME from the sdk. We'd also need to not enable it twice when #[AsMcpApp] is used next to API Platform resources.

Thoughts?

Linguagem predominante
PHP
Estrelas
2.6k
Forks
985
Merge médio
4d 16h
PRs com merge (30d)
118

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de api-platform/core

Todas as issues de api-platform/core

Issues semelhantes

Mais issues de PHP

Receba novas issues na sua caixa de entrada

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