esse vídeo ele vai ser um pouco diferente do custumes nele eu vou tentar te explicar de uma vez por todas para que você consiga entender o que é MCP Provavelmente você deve ter ouvido falar dessa sigla MCP que significa Model Contex protocolo e hoje é segunda-feira eu vou estar fazendo uma apresentação sobre esse tema onde eu vou mostrar pro meu time e eu resolvi aproveitar esse conteúdo para trazer aqui para vocês essa explicação para que vocês entendam de uma vez por todas que é Mc para que que ele serve né E por que ele foi
criado e além disso eu vou estar fazendo uma implementação com vocês aqui de um serviço Zinho utilizando esse protocolo e para esse serviço eu vou estar utilizando até a abacate pay como exemplo para não trazer um exemplo tão normal né tão trivial como o hello world eu queria trazer algo mais de a nível de mundo real então através desse vídeo Além de você entender o que é MCT você vai conseguir enxergar a aplicabilidade de onde você pode estar utilizando esse recurso né esse novo protocolo e com isso tá construindo produtos que se tornem diferente dos
outros que já existam e possivelmente tá implementando ou na sua emeso ou implementando aí dentro de um produto próprio Enfim então vamos começar eu tô aqui com a documentação do Model cont protocol porque eles dizem de forma bem simples o que é o MCP o MCP ele é um protocolo né Ele é um standart ou seja um padrão a ser seguido onde Visa padronizar a comunicação que é feita entre aplicativos aa e dados externos quando você ouve isso você acaba pensando pô mas isso não é o que já acontece hoje através de tucal enfim sim
é o que acontece hoje porém o MCP ele veio corrigir um problema que acabou acontecendo com essas arquiteturas que estão sendo utilizadas para fazer os agentes né e as aplicações reais que estão tendo hoje atualmente aí em produção e aqui a gente consegue enxergar mais ou menos como é que funciona a estrutura que estamos utilizando hoje atualmente em diversos aplicativos aí provavelmente se você tem um aplicativo você deve utilizar uma estrutura parecida com isso tá e a estrutura atual ela é feita dentro de um serviço que ali eu tô chamando ali de ai apps dentro
D esse ai App se você tem ali o hag você tem context né que é aquele template que você escreve e você consegue embedar os embeds que foram recuperados através do hag dentro desse contexto isso acaba criando ali um prompt enorme Além disso se você quiser fazer e integração com dados externos a llm né ao seu agente você utiliza né você faz isso através de Tools onde através dessas Tools você consegue fazer uma integração a nível de código mesmo para cada Api para cada recurso externo a LM que você queira integrar dentro da sua aplicação
então ali tu quiser fazer uma integração com api do github você vai fazer ali implementar a implementar O Executor da at e fazer a nível de código ali essa implementação tudo no mesmo serviço se quiser fazer com o banco mesma coisa então Vocês conseguem ver que acaba ficando muito acoplado dentro de um serviço né Toda essa funcionabilidade dessa aplicação ai beleza isso funciona para aplicativos que não requerem customizações P lado do cliente mas ao decorrer do tempo surgiu a necessidade desse tipo de aplicações terem um nível de Custom iação pelo lado do cliente onde o
cliente possa dizer pô eu quero agora integrar ali com gira para poder ver minhas tesk ali né enfim é esse tipo de customização só que dentro dessa estrutura aqui que temos atualmente isso acaba ficando um pouco difícil porque para você fazer para você dar essa essa implementação pro teu usuário você precisa implementar a nível de código ou seja tu precisaria criar ali mais um Executor né adicionar isso dentro do teu serviço e ali subir uma atualização ali pr pra aplicação se for se for uma aplicação que é lada dentro do PC do usuário tu vai
ter que pedir para ele atualizar né enfim acaba se tornando um pouco competo e aí chegou entropic o pessoal da entropic em 2024 e começou a montar um protocolo né um standar ali um padrão a ser seguido para realizar essas integrações então no final das contas o que que o MCP é o MCP diferente do que o callin ele é uma nova forma de você fazer essas integrações de forma desacoplada então aqui com tucal a gente tem a llm dentro da llm a gente escreve os executores dessas tools né que vão ser chamadas ali no
momento em que a llm achar que deve ser chamada e aqui através do MCP o que você tem é que você separa essas essas responsabilidades você tem ali a aplicação e dentro da aplicação você coloca um client e esse client ele faz conexões com diversos MCP servers né e dentro desses MCP servers você tem ali Tools para ser executadas você tem prompts você tem research que são Dados que você pode estar recuperando por exemplo de um arquivo e basicamente a estrutura do MCP é essa daqui você tem a aplicação né que é que a gente
chama de host e dentro desse host tu implementa o MCP client que é ele que é o a parte chave desse protocolo né que realiza comunicações ali com os MCP serves e ali é temos a camada de transporte que você tem dois tipos de transporte para que você pode usar dois tipos de transporte eu vou mostrar isso mais pra frente aqui para vocês e aí você tem os MCP serveres e você vê que eles estão desacoplados aqui separados Então você tem um MCP server que é um projeto você pode criar ali um projeto aqui que
no nosso caso vai esse o MCP server da abacat pay que a gente vai estar implementando você tem aqui Um MCP server de Fire System né para você gerenciar dados locais né arquivos locais do do computador do usuário e você tem um MCP server para fazer ha então o MCP ele não quer substituir por exemplo as Tools e os hacks ele vai utilizar da estrutura dele para fornecer isso de uma maneira desacoplada então no final das contas o MCP ele é somente um padrão a ser seguido tá de implementação então ele não depende de linguagem
de programação nem nada você segue o padrão implementa na linguagem que você quiser e constrói ali seus servidores seus mcps clients beleza entendendo um pouquinho mais sobre MCP servers O que são eles eles são pequenos servidores que você pode est rodando localmente ou remotamente e esses servidores eles servem para fornecer capabilities né que são capacidades que ele pode dar pro client onde você vai usar esse MCP serve as três capabilities chaves aqui que temos são as de Tools né que é a própria Tools que já conhecemos que serve para você chamar recursos externos como web
api Enfim fazer ações e você tem Unos resos que é fornecer dados e arquivos n beds isso pra tua lnm e você também tem prompts onde você consegue ajudar né o seu usuário a né a reutilizar esses prompt n esses templates de prompt e criar workflows a partir de disso tá então de certa forma o MCT server é só o aquela parte né de acesso a dados externos a llm só que des acupado da LM então tu tem a tua aplicação você implementa a sua aplicação implementa ela para executar um MCP client e através do
MCP client você vai plugando novos servidores tá você pega novos servidores e vai plugando e qual é o bom disso daqui por que MCP começou a ter muita demanda hoje atualmente né começou a ter ser mais falado hoje é atualmente é porque muitas empresas viram enxergaram o valor de você poder fornecer para o teu cliente o MCP do seu produto então eu por exemplo eu tenho um loga Flow e eu vou criar o MCP server do loga Flow para que meus usuários consigam estar gerenciando os backs dos projetos dele pela própria lnm que ele que
ele for utilizar tá e eu mais para frente possa implementar um um client dentro do loga Flow e ele pode estar integrando isso com ah recursos externos por exemplo pegar ali quando ele receber um feedback ele pegar esse feedback e criar um card no gira por exemplo Só através de comandos ali desse client que eu vou estar fornecendo dentro do loga Flow então o pessoal começou a enxergar o valor do MCP dessa forma desacoplada né de você de lidar com integrações externas e ali como é que funciona essa comunicação entre o client e o server
você tem ali a quando você pluga né vamos dizer assim quando você pluga um novo MCP server dentro de um de uma aplicação ai ali pelo client você tem a comunicação Inicial deles que é basicamente o MCP client ele vai mandar uma mensagem aqui Inicial pro pro server que tu plugou perguntando qual é as capabil que ele tem o servidor ele vai responder essa pro pro client dizendo Olha eu tenho isso né E também o Client forone sei qual é os recursos que ele tem também que ele consegue fazer aí o client vai notificar o
servidor dizendo ó Beleza a gente pode começar a trocar mensagens e a parte da comunicação Entre esses dois né ela funciona da seguinte maneira diferente do que nós temos atualmente aí através de de NPI essa comunicação ela é feita ah bidirecional né onde o client ele consegue mandar mensagem pro servidor mas o servidor ele também consegue mandar mensagem pro cin Tá mas beleza Antes de Partir aqui pro código da implementação do nosso mcpc da bacate pay eu vou mostrar para vocês como que vai funcionar aqui a nível de protocolo mesmo como eu falei o MCP
ele é um protocolo então ele não depende de linguagem vocês vão ver aqui dentro dessa dentro dessa documentação oficial do MCP eu tenho aqui implementa e sdc né que implementam esse protocolo em Python typescript Java in cotlin porém eu vou utilizar go não tem uma implementação oficial por parte da organização que toma conta né que gerencia o MCP mas eu vou est utilizando uma aberta né feita pelo pela comunidade utilizando golang no final das contas é tudo padrão e no nosso caso como tá criando o MCP server da abacate pay E para isso a gente
vai utilizar somente aqui de capa biv vamos utilizar somente tos Então vamos ter duas Tools vamos ter uma listar clientes e também e criar clientes e aqui né para você criar uma tu o padrão é você para essa t ela precisa ter um nome único ela precisa ter uma descrição e precisa ter um input esquema ou seja os argumentos que a sua llm tem que enviar para essa Tool ser executada e esse sput esquema aqui é um json esquema normalzinho e aqui tem a demonstração de como seria em typescript tá aqui onde ele define os
argumentos que ele vai receber o nome né da Tool e também a descrição e aqui em Python tem também tá eu vou est utilizando o go a forma com que é feito isso em em go é diferente mas no final né a resposta que ele dá pro client é a mesma porque é um padrão a ser seguido então sem mais delongas vamos lá pessoal eu tô aqui nesse projeto aqui como eu falei vou est utilizando o GO eu já deixei algumas coisas prontas aqui relacionadas a abacate pay né eu fiz aqui só um como se
fosse um servic né aqui http onde Eu me comunico para com o A abacate pay né com a api da abacate pay e aqui eu adicionei já dois métodos e aqui eu tenho um de get customer onde eu só tenho que passar um context aqui e eu também aqui tenho um de Create customer que recebe além de um context ele também recebe aqui um um input né para criar um cliente Além disso eu tenho aqui já pronto a minha clip né como eu falei o nosso MCP ele vai rodar de forma local e para isso
eu vou est utilizando aqui o a camada de transporte STD iio Então vamos começar aqui eu Antes de tudo eu tenho que importar as libs né da SDK que eu tô utilizando eu já tenho ela meio que salva aqui e aí eu vou começar a criar o meu servidor como o meu MCP server vai rodar de forma local eu já vou setar aqui o um Channel aqui para travar a o processo né quando o client for executar esse MCP né eu vou travar esse processo aqui para não encerrar antes do do da chamada completar né
antes das minhas ações completar e agora a gente começa a tá implementando o nosso servidor todo servidor ele precisa ter a camada de transporte que ele vai utilizar para se comunicar como a nossa vai ser local eu vou utizar stdio então eu já tenho aqui essa camada stdio aqui importada New stdio server transport e todo servidor ele tem que ter né é legal ele ter tanto o nome quanto a versão dele ali para est o pro a gente tá podendo gerenciar ela no go a gente utiliza ali o function option Se não me engano é
o nome desse padrão onde a gente passa os os nomes né argumentos através de chamadas né de funções e eu vou passar aqui o Noemi vai ser abacate pay e mais um aqui que é o version e aqui eu já vou botar ele para rodar já deixa eu ver aqui ncp server server pon server beleza e se tiver um erro meu servidor vai dar um pic e vai imputar isso ali no terminal aí agora começa a implementação das nossas Tools né como eu falei o nosso MCP server ele vai ter duas Tools que é uma
para listar os customers né os meus clientes registrados lá dentro da abaca pay e também criar novos customers né e para você registrar uma customer né o padrão é o seguinte Toda Toda Tool é como eu falei para vocês ela tem que ter um nome uma descrição e o input esquema que ela recebe Então vamos implementar aqui o nosso as nossas Tools né eu vou fazer elas e depois eu vou fazer a implementação de fato para vocês ver que a nível de código não muda muita coisa no se lado do lado do MCP server tá
então você tá aqui uma to register to aqui aí aqui como argumento ele já tem aqui para você botar um nome uma descrição e um handler o nome eu vou colocar aqui customers a descrição p customers e o handler é a função que vai ser executada quando essa tu ser e chamada tá E todas as funções né todos os handler de uma to elas TM que receber um argumento de forma obrigatória como get customer aqui como a minha função aqui get customer ela não recebe nenhum argumento ela só recebe Contex que eu mesmo crio Então
você tá aqui um argumento sem eu não vou utilizar É só mesmo para para encher linguiça ali no nosso código porque tem que ter né no Ness SDK do go que ele tem que colocar eu vou colocar aqui submitter só para receber Quem é que tá mandando a mensagem né Beleza todo os argumentos né todos os inputs das TS elas T que ter ser em formato Jon Skema tá tem que ser um formato Jon esquema E aqui nessa sdc go aqui você tem que fazer isso dessa forma você coloca através de uma tag aqui se
ela for required por padrão né todos os argumentos né todos os os parâmetros dessa Estação opcionais e se você for required você escreve aqui required e agora eu só preciso implementar aqui a o handler mesmo e aqui como argumento eu vou est botando get customer eu vou est retornando aqui como é um padrão ser seguido a a resposta que você retorna da sua toa ela tem que ser padronizada e aqui no go a gente já tem já uns helpers umas classes helpers pra gente tá fazendo isso e nesse caso aqui é to response e ele
é um ponteiro beleza e aqui eu posso estar retornando o erro também que a própria SDK já trata isso aqui eu vou primeiro retornar New turn New New e aqui eu vou adicionar o Hand US aqui a minha lmm para est dando um complete e pronto setei a minha primeira Tool obviamente eu não tô fazendo nada né aqui nesse handler eu só tô retornando New New e é basicamente assim que você seta uma Tool né você define o nome dela a descrição o handler eu já vou fazer aqui bem rapidinho eu já ten salvo aqui
para poupar tempo o argumento para criar o um cliente tá então eu tenho aqui já que é basicamente o nome o celular lá o tex ID que é o documento e também o e-mail e aqui eu já tenho a definição do Jon esima né que é o que o go vai utilizar para montar o Jon esquema que ele vai mandar pro client né para fornecer pro client Então tá aqui ó todos esses parâmetros aqui são obrigatórios então coloquei aqui no requir requir em todos os campos no Jon esquema e coi e coloquei a descrição de
cada argumento né de cada parâmetro desse tá E aí eu já vou setar a função também fun Create já vou dar um complete aqui E esse daqui eu vou estar utilizando o argumento tá Vou colocar aqui ARS pronto e aqui eu vou estar setando a minha Tool Deixa eu só copiar esse código aqui vou colar aqui agora eu seto o nome Create E aí eu seto a descrição beleza e aqui é só trocar o r pay customer pronto pessoal basicamente é isso esse meu servidor ele já funcionaria tá eu só precisaria construir buildar o binário
e passar para algum client específico o nosso client que a gente vai estar utilizando aqui é o do Cloud desktop tá então o que que acontece obviamente se eu fazer isso aqui a minha tu ela não vai fazer nada porque eu tô retornando aqui né tô retornando New nas minhas nos meus dois handlers a nível de MCP mesmo de como você criar um MCP é basicamente isso tudo que você for utilizar você seta dentro do teu MCP server que é como quando que ele é o ele vai responder Quais são as capabil dele quando o
cliente chamar e ali se você quiser adicionar prompt Você pode adicionar prompt Você pode adicionar ali eh também os resources enfim nesse meu caso aqui que é um exemplo eu só criei duas tu que são para e listar os customers né da os meus customers da abacate pay e criar customers na abacate pay eu já tenho agora os meus handlers e aqui para acelerar o processo eu já deixei meu aqui o código pronto e aqui é uma chamada ao Service do que eu implementei da abacate pay mesmo cara é só tipo assim ó passo aqui
abacate pay CL get customer que é o que eu já tinha deixado pronto aqui que é uma request que eu faço api da abacate pay eu pego esse customer só mapeio né porque como é um padrão eu tenho que responder de forma padronizada e aqui no go ele já tem asas funções rpas aqui eu só preciso listar aqui fazer uma lista né uma Slice de conta e o tipo de conta que eu tô mandando aqui é esse New Tex context aqui que é um dos padrões né um tipo de resposta padrão que as Tools podem
ter tá E aqui eu só passo né Cada customer com uma string né cara então no final das contas vai ser uma lista de de estrutura ali pro usuário no formato de string llm vai ver essa lista e ela vai conseguir estar trabalhando em cima dessa resposta e aqui no Create customers é a mesma coisa eu tô recebendo os argumentos né eu vou receber os argumentos aqui né E esses argumentos Eu só preciso passar pra minha chamada ali http do da api do do da abacate pi então eu tenho aqui o iput que ele recebe
desse tipo Create customer request então S preciso passar isso E aí ele consegue já est criando um customer lá na abaca P isso aqui eu também já deixei pronto porque ele não é pertinente aqui ao MCP né o MCP ele só precisa que você receba um argumento padronizado e responda de forma padronizada então aqui eu recebo os argumentos que são passados né E vi Jon Skema que eu defini e aqui eu faço uma validação bem simples e chamo o meu service e passo aqui os argumentos né que ele precisa no caso aqui é o nome
o telefone o tex ID que é o documento do usuário ou seja o cnp o CPF o CNPJ se eu não me engano é isso que é bacach p es receber e o e-mail beleza e aqui eu s verifico se tem um erro se tiver um erro eu retorno esse erro e aqui eu mapeio a resposta e a resposta ela tem que ser padronizada nesse meu caso aqui eu vou estar retornando a resposta como Tex Tex content tá cara praticamente é isso que você precisa fazer para est criando o MCP server do seu produto eu
vou buildar o binário aqui go build já tem aqui já e o complete e pronto buei o binário Então esse daqui é o meu binário Esse é abacate pay aqui e agora eu só preciso registrar esse servidor né em algum client o client que eu vou est utilizando aqui é o cloud desktop tá porque ele já tá pronto ele já tem a implementação do client então não precisaria implementar o client ah aliás se vocês quiserem um vídeo de eu implementando uma aplicação e um um client um MCP cli dentro dessa aplicação do zero vocês digam
aí nos comentários que eu posso estar trazendo isso para vocês também que eu acho que é a parte mais chave aqui disso tudo Tá então vamos lá eu vou entrar aqui dentro do Cloud e eu vou editar esse arquivo aqui chamado Cloud desktop e aqui no Cloud desktop eu já deixei meio que pronto e aqui você coloca uma uma propriedade desse Jão chamado MCP server e aqui dentro dessa propriedade você vai colocando todos os MCP servers que você quer utilizar como o meu ele é local eu coloco ele aqui abacate pay Command e passo aqui
o caminho do binário que o que o MCP client ele vai executar n ele vai chamar para tá utilizando esse MCP server e é basicamente o binário que eu acabei de construir aqui com vocês e é só isso eu construo meu MCP server e eu plugo ele dentro de um MCP client eu acabo construindo meu MCP server ele tá separado do meu client e agora eu pluguei ele dentro de um MCP de um MCP client que aqui no caso é o cloud desktop Então vamos testar essa parada cara vamos testar essa parada eu vou abrir
aqui o cloud desktop Tá beleza tá aqui e aqui nós já temos aqui dentro do Cloud desktop duas Tools availables para uso e aqui a gente tem o nosso Create customer e tem aqui o nosso get customers e aqui tem a descrição de cada Tools Então vamos aproveitar e vamos testar logo essas duas Tools para ver se ela funciona eu vou pedir aqui primeiramente para ele listar meu todos os meus customers né da da abaca pay Hum E C escrever assim Acho que ele entende ah abacate p c eu vou expedir para ele listar todos
os meus customes da abacat pay vamos ver se ele consegue fazer isso Beleza já pediu permissão para est utilizando a tu e beleza e aqui ele já conseguiu listar todos os meus customers eu tenho aqui três customers que eu registrei né na na minha abacate pay ali então eu tenho aqui esse Zé Roberto an exemple e esse customer Def aqui que a própria p da bacat p fornece para você registrar através da Doc deas e aqui tá a resposta né tá aqui tá o input que ele enviou né como argumento e aqui tá a resposta
que a minha que a minha Tour retornou né e agora vamos registrar né Vamos registrar mais um customer E para isso eu vou precisar gerar um CP F aqui e beleza vamos aqui pedir pro nosso pro Nossa llm criar né registrar mais um customer ali para mim Create a new abacate pay customer aí eu vou passar os parâmetros aqui já de uma vez passar aqui um número qualquer 88 88 8 e pronto vamos pedir para ele registrar eu acho que todos os argumentos estão certo ali ele vai pedir permissão e beleza ele já vai tá
criando o nosso customer lá dentro da abacat pay isso através de uma llm esse que é o ganho do MCP server você fornece aos teus usuários formas se você é uma empresa que tem um produto você fornece uma forma dos seus usuários utilizarem integrações com o teu produto através do LM né de um client específico que ele queira utilizar através de um copiloto aqui no caso né Além disso você pode utilizar essa estrutura de MCP MCP server para fazer o teu próprio produto ali e utilizar implementar o teu próprio Client ali seguindo o padrão para
se comunicar com MCP servers específicos né bô imagina que tu trabalha numa empresa tu quer criar um chatbot um CoPilot né que que vai se integrar com todas as ferramentas da empresa você pode utilizar essa estrutura para fazer isso de forma separada e criar até um Marketplace interno ali dentro da empresa para que os seus colaboradores né o seu time de desenvolvimento possam estar desenvolvendo MCP serveres que eles queiram táa para est para est integrando isso dentro do CoPilot dele Então cara isso tem um ganho enorme Tá além de as outras aplicações ali fora copilotos
que você pode estar utilizando essa estrutura vamos validar Só se ele se ele criou certinho vamos ver aqui vou pedir para ele listar mais todos os meus customers novamente Neal abacate pay customers vou pedir para ele listar todos os meus custas novamente aqui ele vai chamar novamente a e pelo jeito Ele trouxe já a resposta e aqui tem o novo customer que eu acabei de registrar com vocês aqui vídeo online onde traz aqui o ID né o telefone que eu registrei o documento que eu gerei e o e-mail que eu coloquei aqui cara muito simples
tá o conceito Ele é simples ele não veio para substituir as TS a r enfim ele não veio para substituir nada disso ele só veio para padronizar a forma com que nós fazemos essa integração essas integrações da de uma aplicação ai com recursos externos então Através disso você consegue trabalhar de forma forma modular com contexto modularizado que ajuda a lnm ter um aproveitamento melhor desse contexto né e economizar até ali os tokens que tu vai estar utilizando beleza pessoal esse foi o vídeo um vídeo um pouco mais técnico eu tentei ser o mais simples possível
se vocês quiserem que eu dê continuidade a explicação por exemplo implementando um client né uma aplicação e e fazendo essa aplicação executar um client que vai se comunicar com outros MCP servers digam aí nos comentários eu vou estar trazendo para vocês espero que vocês tenham curtido essa aqui vai ser a mesma apresentação que eu vou fazer pro pessoal do meu time se vocês tiverem dúvidas por favor deixem aí nos comentários que aí eu já posso utilizar essas dúvidas como possíveis dúvidas do pessoal do meu time tá beleza se inscreva aí nesse canal eu vou estar
trazendo vídeos relacionados a construção de produtos mas como vocês podem ver também vou estar trazendo alguns conteúdos técnicos que vão ajudar vocês a est construindo uns produtos melhores Ou pelo menos fazer você entender os hypes do momento que é no caso aqui do MCP que eu creio que não seja Hype porque é uma estrutura muito robusta pra gente tá se trabalhando tá ele não veio para substituir nada ele veio para organizar a casa tá então é isso aí pessoal espero que vocês tenham curtido esse vídeo Falou um abraço e até