MCP Fusion/Reference/Migração
Migração
Migre um servidor MCP existente do SDK puro para o MCP Fusion de forma incremental: um domínio de tools por vez, das respostas com JSON.stringify para Presenters, redação e rules.
O MCP Fusion não exige uma reescrita. O SDK MCP puro e o MCP Fusion podem coexistir em um mesmo servidor, e a maioria das equipes migra um domínio de tools por vez, na ordem de 15 a 30 minutos por domínio. Esta página mostra o formato de um desses passos.
Antes: uma tool do SDK puro
server.setRequestHandler(CallToolRequestSchema, async (request) => {
if (request.params.name === 'get_invoice') {
const invoice = await db.invoices.findUnique({
where: { id: request.params.arguments.id },
});
return {
content: [{ type: 'text', text: JSON.stringify(invoice) }],
};
}
});Os problemas são estruturais. JSON.stringify(invoice) envia todas as colunas ao modelo, incluindo as que você esqueceu que existiam. As unidades vivem em conhecimento tribal, então o modelo chuta. Não há lugar onde redação, validação ou próximas ações pudessem sequer acontecer.
Depois: a mesma tool em MVA
const InvoicePresenter = createPresenter('Invoice')
.schema({
id: t.string,
customer: t.string,
amount_cents: t.number.describe('CENTS, divide by 100'),
status: t.enum('draft', 'paid', 'overdue'),
})
.redactPII(['customer.email', 'customer.ssn'])
.rules(['amount_cents is in CENTS. Divide by 100.']);
export default f.query('billing.get_invoice')
.describe('Retrieve an invoice by ID')
.withString('id', 'Invoice ID')
.returns(InvoicePresenter)
.handle(async (input) => {
return db.invoices.findUnique({ where: { id: input.id } });
});A mesma lógica de handler. O que mudou:
| Preocupação | SDK puro | MCP Fusion |
|---|---|---|
| Forma da saída | JSON.stringify, todas as colunas | Schema do Presenter, apenas os campos declarados |
| PII | Na rede | .redactPII() antes da serialização |
| Unidades e significado | Folclore de prompts | .rules() como linhas de sistema |
| Próximas ações | Nenhuma | affordances de .suggest() |
| Validação | Manual | Zod vindo do builder |
O caminho incremental
- Instale lado a lado.
npm install @mcpfusion/corenão perturba os handlers existentes. - Escolha um domínio de tools. Geralmente o que lida com os dados mais sensíveis.
- Escreva o Presenter primeiro. Declare os campos de que a tarefa precisa, aplique redaction ao resto e escreva as rules que o modelo costuma errar.
- Mova o handler. A lógica de query normalmente sobrevive inalterada.
- Ligue o
autoDiscover. As tools novas vêm desrc/tools/, e os handlers antigos continuam funcionando durante a transição. - Trave e teste. Rode
mcpfusion lockna nova superfície e adicione as asserções de egress de Testing.
Vindo de outros frameworks
- De APIs HTTP simples.
@mcpfusion/openapi-gengera Models, Views e Agents a partir de uma spec OpenAPI ou Swagger existente, então envolver uma API interna começa quase todo gerado. - De um schema Prisma.
@mcpfusion/prisma-gengera tools e Presenters com segurança no nível de campo e isolamento de tenant a partir de anotações no schema. - Do n8n.
@mcpfusion/n8ntransforma webhooks do n8n em tools com filtragem por tags. - De internos da AWS.
@mcpfusion/awseleva funções Lambda e Step Functions a tools por meio de tags de recursos.
Próximos passos
- The MVA pattern: para onde você está migrando
- Models and Presenters: a API de destino
- Deploy: quando o último domínio migrar, publique de graça
