Dados comerciais
CRM, ERP, pedidos, documentos, análises e conhecimento interno.
MCP permite que outro programa publique ferramentas, informações e prompts reutilizáveis por meio de um contrato padrão. ADK-Rust transforma esses recursos em ferramentas de agente tipadas, expõe o protocolo mais amplo e pode gerenciar uma frota variável de servidores MCP locais enquanto seu produto está em execução.
Arquitetura ADK-Rust MCP
Seu agente usa recursos MCP como qualquer outra ferramenta ADK-Rust. MCP conecta-o a cada servidor, enquanto cada servidor permanece responsável por seus próprios dados, regras e ações.
A experiência de pedir trabalho.
Agente ou fluxo de trabalho
Escolhe um recurso dentre as ferramentas que ele pode ver.
Política ADK
Aplica aprovação, autorização, proteções e auditoria em torno da chamada.
O adaptador tipado dentro do tempo de execução.
McpToolset
Descobre ferramentas e preserva os esquemas do servidor e o conteúdo dos resultados.
Protocolo APIs
Recursos, prompts, conclusão, assinaturas, elicitação e tarefas.
Gerenciador de servidor
Altera e supervisiona um registro de conexões stdio locais.
Escolha o transporte que corresponda à propriedade.
Local stdio
ADK-Rust inicia um binário nativo ou outro processo filho e possui sua sessão.
Streamable HTTP
Conecte-se a um serviço hospedado de forma independente com cabeçalhos, autenticação e tempos limite.
Cada servidor publica apenas o que possui.
Ferramentas
Ações
Recursos
Contexto
Solicitações
Modelos
Tarefas
Trabalho longo
CRM, ERP, pedidos, documentos, análises e conhecimento interno.
Controle de origem, ferramentas de construção, navegadores, sandboxes e ambientes de codificação.
Pagamentos, comunicações, pesquisa, mapas e APIs de parceiros.
Geração de mídia, planilhas, uso de computador e serviços específicos de domínio.
Comece com o problema
Um agente de IA torna-se útil quando consegue alcançar os sistemas que contêm informações reais e realizam trabalhos reais. Sem um protocolo compartilhado, cada banco de dados, produto SaaS, ferramenta de navegador, serviço interno e tempo de execução especializado precisa de um adaptador personalizado. Esses adaptadores repetem descoberta, esquemas, transporte, erros, autenticação e código de ciclo de vida.
MCP estabelece um contrato estável em torno desse limite. Um servidor descreve o que oferece e como chamá-lo. Um cliente descobre esse catálogo em tempo de execução. O aplicativo do agente pode então selecionar um recurso revisado sem importar a implementação do servidor ou receber suas credenciais privadas.
ADK-Rust conecta esse contrato às mesmas abstrações Tool e Toolset usadas pelas ferramentas nativas Rust. O modelo pode funcionar com recursos MCP por meio de seu loop de agente normal, enquanto o aplicativo mantém conversão de esquema, aprovação, sessões, telemetria e política operacional específicas do provedor em torno da chamada.
Ferramenta
Uma ferramenta possui um nome, uma descrição útil, um esquema de entrada e, opcionalmente, um esquema de saída. Os exemplos incluem a leitura de um pedido, a pesquisa em um repositório, a atualização de um ticket ou a geração de uma planilha.
Recurso
Um recurso fornece às informações um URI estável. Pode representar um documento, política, registro de banco de dados, catálogo ou resultado gerado sem fingir que a leitura de dados é uma ação.
Alerta
Um prompt pode capturar as instruções e entradas corretas para uma tarefa pertencente ao domínio do servidor, como investigar um pedido ou revisar uma implantação.
Elicitação
Durante uma chamada de ferramenta, um servidor pode solicitar ao cliente que apresente um formulário ou abra uma URL aprovada. A aplicação permanece responsável pelo consentimento e pela validação da resposta.
Dynamic MCP management
An agent product may serve several tenants, workspaces, or operating modes. The useful MCP servers can change when a workspace opens, an administrator enables an integration, a credential rotates, or a specialist process is upgraded.
`McpServerManager` keeps that lifecycle in the application instead of forcing every server definition into startup code. It is designed for local stdio child processes; independently hosted HTTP services remain application-owned connections.
Read mcp.json-compatible definitions or construct them in Rust. Disabled servers stay registered without starting.
Spawn each enabled child and complete the MCP handshake before its capabilities become visible.
List tools from running servers, filter the published surface, and prefix only names that collide.
Add, update, enable, disable, or remove a server without rebuilding the agent application.
Detect a closed connection and apply the server's bounded exponential-backoff restart policy.
Persist the current registry atomically, cancel MCP sessions, wait for the grace period, and drop child transports.
Practical sequence
The model does not receive database credentials or private API clients. It receives a reviewed catalog of tools and resources. ADK-Rust keeps approval around the consequential replacement call.
Superfície de protocolo atual
Os ADK-Rust APIs diretos cobrem os recursos que um produto de agente precisa com mais frequência: descobrir e chamar ferramentas, ler recursos, resolver prompts, solicitar sugestões de argumentos, assinar recursos variáveis, responder a solicitações de elicitação e seguir uma tarefa de ferramenta negociada de longa duração.
Para criação avançada de servidor, manipuladores de cliente personalizados, notificações, transportes, trabalho de autorização e extensões de protocolo, adk_tool::mcp::rmcp reexporta a versão oficial exata do SDK usada dentro da estrutura. Isso evita misturar tipos de protocolo incompatíveis em um aplicativo.
Use recursos MCP dentro de fluxos de ferramentas e agentes ADK-Rust comuns.
Leia o restante do catálogo em vez de reduzir MCP a chamadas de ferramentas.
Suporta conversas de protocolo que continuam além de uma resposta imediata.
Escolha a propriedade do processo local ou um serviço hospedado separadamente.
Exemplo de trabalho
Um aplicativo pode precisar de recursos MCP diferentes para cada espaço de trabalho, cliente ou tarefa. A codificação permanente de cada servidor na inicialização dificulta essas alterações. McpServerManager oferece ao aplicativo um local para iniciar servidores MCP locais, combinar suas ferramentas, alterar sua configuração, monitorar suas conexões e fechá-las de forma limpa.
Este exemplo começa com um servidor configurado denominado local-tools. O agente pode descobrir e chamar sua ferramenta de eco. O aplicativo então adiciona um segundo servidor, habilita-o, substitui sua configuração em execução, salva o registro atualizado e o remove novamente. Cada alteração utiliza os mesmos APIs disponíveis para uma tela de administração ou serviço de configuração.
O exemplo é executado inteiramente em sua máquina. O executável Rust inicia uma cópia de si mesmo como o servidor filho MCP, portanto, o handshake, a descoberta da ferramenta, a chamada da ferramenta, a reinicialização, a persistência e o desligamento são reais. Não é necessário modelo, pacote Node.js, chave API ou conexão com a Internet.
Carregue local-tools de uma configuração compatível com mcp.json, inicie seu processo filho, conclua o handshake MCP e descubra sua ferramenta de eco.
Registre as ferramentas de espera como desativadas e, em seguida, ative-as e inicie-as quando o aplicativo decidir que esse recurso deve ficar disponível.
Atualize a definição do servidor em execução. O gerenciador o reinicia com a nova configuração e pode restaurar a definição anterior se a inicialização de substituição falhar.
Grave o registro ativo de volta em JSON, desative e remova o servidor extra e, em seguida, feche cada sessão MCP e processo filho de forma limpa.
let manager = McpServerManager::from_json(&config)?
.with_health_check_interval(Duration::from_secs(15));
manager.start_server("local-tools").await?;
manager.start_monitoring();
manager
.add_server("standby-tools".into(), standby)
.await?;
manager.enable_server("standby-tools").await?;
manager.start_server("standby-tools").await?;
manager
.update_server("standby-tools", replacement)
.await?;
manager.save_json_file("mcp.json").await?;
manager.shutdown().await?;$ cargo run --manifest-path examples/mcp_manager/Cargo.toml
1. Loaded local-tools from mcp.json-compatible configuration
status: Running
2. Discovered 1 tool: echo
3. Called the real child server
response: {"output":"MCP server replied: dynamic MCP is running"}
4. Added standby-tools at runtime: Disabled
enabled and started: Running
5. Reconfigured the running server and restarted it safely
6. Saved the live registry
7. Disabled, removed, and shut down every child serverCliente, gerente ou servidor
A maioria dos aplicativos de agente são clientes MCP. Eles se conectam a um servidor existente e disponibilizam ferramentas selecionadas para um agente. Os produtos que permitem integrações de espaço de trabalho ou administrador podem colocar conexões stdio locais atrás do gerente. As equipes que publicam um novo recurso usam os APIs do servidor rmcp reexportados e, em seguida, testam o servidor a partir de um cliente ADK-Rust.
Design de produção
MCP torna a descoberta e a comunicação consistentes. Ele não decide quais sistemas um agente deve alcançar, quais ações exigem aprovação, como as credenciais são emitidas ou o que deve acontecer quando uma dependência falha. Essas continuam sendo decisões de produto e plataforma.
Crie um servidor em torno de um recurso coerente pertencente a uma equipe ou sistema. Evite um servidor enorme cujas ferramentas abrangem credenciais e níveis de risco não relacionados.
Filtre as ferramentas antes que o modelo as veja. Mantenha as operações de leitura distintas de gravações, pagamentos, exclusão, implantação e outras ações consequentes.
mcp.json autoApprove é preservado para compatibilidade; ele não ignora a autorização da estrutura, os manipuladores de confirmação ou a política de aplicativo.
Use stdio quando seu aplicativo possuir o processo filho local. Use Streamable HTTP quando outra implantação possuir disponibilidade, identidade e escalabilidade.
Descrições de ferramentas, esquemas, conteúdo de recursos e resultados ultrapassam os limites do sistema. Valide argumentos, limite tamanhos de resultados e proteja o contexto do modelo contra instruções hostis.
Defina tempos limite de conexão e tarefas, registre alterações no ciclo de vida, investigue a dependência de negócios separadamente e decida como o produto se comportará quando um servidor estiver indisponível.
Conecte os sistemas úteis
Comece com um servidor que você conhece, filtre seu catálogo, chame uma ferramenta somente leitura e inspecione o resultado completo. Adicione ações de gravação, gerenciamento dinâmico, serviços remotos, elicitação e tarefas de longa execução quando o produto tiver um motivo claro para cada uma delas.