MCP Messenger
Como n8n para desenvolvedores
Documentação
SlashMCP
Espaço de trabalho de IA com tecnologia MCP para inteligência documental, orquestração multiagente e gerenciamento dinâmico de servidores MCP.
Demonstração ao vivo: slashmcp.vercel.app | Repositório: github.com/mcpmessenger/slashmcp
- 🚀 Registro Dinâmico de Servidores MCP - Gerencie e invoque servidores Model Context Protocol a partir da interface de chat
- 📄 Inteligência Documental - Uploads por arrastar e soltar com OCR via AWS Textract e análise de visão via GPT‑4o
- 📊 Dados Financeiros - Cotações de ações, gráficos e dados de mercados de previsão por meio de servidores MCP integrados
- 🤖 Framework Multiagente - Orquestre múltiplos agentes de IA com acesso padronizado a ferramentas MCP
- 🔄 Troca de LLM - Alterne facilmente entre provedores OpenAI, Anthropic e Gemini em tempo de execução
Repositório do projeto: https://github.com/mcpmessenger/slashmcp
Resumo
- Frontend: Vite + React + TypeScript + Tailwind + shadcn/ui
- Estado e Dados: TanStack Query, Supabase client
- Workers / Integrações: Supabase Edge Functions (
uploads,vision-worker,textract-worker,chat,job-status) - Serviços em Nuvem: AWS S3 + Textract, OpenAI GPT‑4o, Google Gemini (fallback), Supabase Postgres
- Armazenamento: bucket S3
arn:aws:s3:::tubbyai-products-catalog - Gerenciamento de ambiente:
.envpara Vite, segredos de função Supabase para chaves de serviço
Começando
Pré-requisitos
- Node.js ≥ 18.18 (recomenda-se usar
nvm) - npm ≥ 9 ou pnpm/bun se preferir (o projeto está atualmente travado no npm)
- Supabase CLI (
npm install -g supabaseounpx supabase) - Credenciais AWS com acesso ao Textract + bucket S3 acima
- Chave de API OpenAI (visão GPT‑4o)
- Opcional: chave Google Generative AI (para fallback do Gemini), chaves Whisper / Google Cloud TTS para recursos futuros
Configuração
git clone https://github.com/mcpmessenger/slashmcp.git
cd slashmcp
npm install
Crie .env.local (o Vite carrega automaticamente as variáveis VITE_*):
Configuração rápida: Copie .env.local.example para .env.local e preencha seus valores.
Configuração manual: Crie .env.local com:
VITE_SUPABASE_URL=https://<your-supabase-ref>.supabase.co
VITE_SUPABASE_FUNCTIONS_URL=https://<your-supabase-ref>.supabase.co/functions/v1
VITE_SUPABASE_PUBLISHABLE_KEY=<supabase-anon-key>
VITE_ALPHA_VANTAGE_API_KEY=<alpha-vantage-key>
VITE_MCP_GATEWAY_URL=http://localhost:8989/invoke # MCP gateway proxy endpoint
VITE_SUPABASE_REDIRECT_URL=http://localhost:8080 # OAuth redirect URL (local dev)
# For production: Set VITE_SUPABASE_REDIRECT_URL to your production domain in Vercel env vars
TWELVEDATA_API_KEY=<twelve-data-key> # optional fallback provider
ALPHAVANTAGE_CACHE_TTL_MS=300000 # optional Supabase function cache TTL (5 min)
POLYMARKET_CACHE_TTL_MS=120000 # optional cache window for Polymarket lookups
Nota: Consulte
LOCAL_SETUP.mdpara configuração detalhada de desenvolvimento local, incluindo configuração de CORS do S3 para uploads de arquivos.
Configure os segredos da Supabase Edge Function (uma vez por projeto):
npx supabase secrets set \
--project-ref <supabase-ref> \
PROJECT_URL=https://<your-supabase-ref>.supabase.co \
SERVICE_ROLE_KEY=<supabase-service-role-key> \
OPENAI_API_KEY=<openai-key> \
GEMINI_API_KEY=<optional-gemini-key> \
GEMINI_IMAGE_MODEL=gemini-2.5-flash-image \
ALPHAVANTAGE_API_KEY=<alpha-vantage-key> \
TWELVEDATA_API_KEY=<twelve-data-key> \
ALPHAVANTAGE_CACHE_TTL_MS=300000 \
POLYMARKET_CACHE_TTL_MS=120000 \
GOOGLE_CLIENT_ID=<google-oauth-client-id> \
GOOGLE_CLIENT_SECRET=<google-oauth-client-secret> \
AWS_REGION=<aws-region> \
AWS_ACCESS_KEY_ID=<aws-access-key> \
AWS_SECRET_ACCESS_KEY=<aws-secret> \
AWS_SESSION_TOKEN=<optional-session-token> \
AWS_S3_BUCKET=tubbyai-products-catalog
Sirva o aplicativo de desenvolvimento junto com as funções Supabase:
npm run dev # Vite dev server
npx supabase functions serve --env-file supabase/.env # optional local function emulation
Principais Recursos e Fluxo
-
Upload e Acompanhamento de Trabalhos
src/components/ui/chat-input.tsxcontrola as ações do menu (Upload de Arquivos, Análise de Documentos, OCR de Imagens, Assistente de Voz).- O frontend chama
supabase/functions/uploadspara criar uma linhaprocessing_jobse receber uma URL PUT pré-assinada do S3. - O progresso do upload é exibido na interface; as transições de status
processing_jobssão verificadas via funçãojob-status.
-
Análise de Visão
vision-workerbusca o ativo enviado do S3 via GET pré-assinado, envia para GPT‑4o (com prompt estruturado em JSON) e persiste os resultados emanalysis_results.- Existem auxiliares de fallback do Gemini que podem ser reativados se desejado.
-
Textract OCR
textract-workerusa AWS Textract (síncrono para imagens, assíncrono para PDFs) e armazena o texto do OCR + resposta bruta.- O frontend lida com erros do Textract de forma graciosa (ex.: "Nenhum texto detectado") e recorre ao resumo de visão.
-
Esquema Supabase
- A migração
supabase/migrations/20250108120000_create_processing_jobs.sqlprovisiona:processing_jobs: metadados para cada uploadanalysis_results: saídas de OCR + visão (garanta que a migração seja executada no projeto Supabase)- O índice único
analysis_results_job_id_uniqueé necessário para upsertsonConflict: "job_id"
- A migração
-
Estrutura Futura
- Existem hooks e opções de menu para pipelines de Whisper ASR e Google TTS.
- Prompts em linguagem natural (ou
/imagine <prompt>) passam porsupabase/functions/image-generator, que agora visa o modelo Gemini 2.5 Flash Image ("Nano Banana") para geração.
-
Cotações e Gráficos de Ações
- Digite
/quote AAPL,/stock MSFT 3mou/ticker NVDA 1yno campo de chat para buscar dados da Alpha Vantage. - O assistente renderiza um cartão de preço com gráfico de tendência diária, métricas de variação e estatísticas principais.
- O suporte a endpoint MCP está estruturado para que
/alphavantage-mcp get_stock_chart symbol=NVDAuse o mesmo pipeline de renderização (função edge Supabasemcp). - As cotações são armazenadas em cache por 5 minutos e automaticamente recorrem ao Twelve Data (se
TWELVEDATA_API_KEYestiver definido) quando a Alpha Vantage atinge limites premium/rate.
- Digite
-
Mercados de Previsão
- Use
/polymarket-mcp get_market_price market_id=us_election_2024para obter odds ao vivo da Polymarket via função Supabasemcp. - As respostas incluem melhor bid/ask, probabilidade implícita, liquidez e são armazenadas em cache por 2 minutos (configurável via
POLYMARKET_CACHE_TTL_MS).
- Use
-
Troca de Provedor
- Use
/model openai,/model anthropicou/model geminipara alternar o LLM de suporte em tempo de execução (padrão: OpenAI). - Variáveis de ambiente e segredos de função Supabase (
OPENAI_API_KEY,ANTHROPIC_API_KEY,GEMINI_API_KEY) devem ser configurados para cada provedor que você planeja usar.
- Use
-
Comandos Slash MCP e Registro
- Autentique-se via botão de login no cabeçalho (Google OAuth) ou pelo comando de chat alternativo
/slashmcp login email=user@example.com password=secret. - Depois de autenticado, gerencie servidores com
/slashmcp list,/slashmcp add <name> <https://gateway>(mais parâmetros opcionaisauth=/key=) e/slashmcp remove <name|serverId>. - Atalhos de provedor como
/geminiou/playwrightmapeiam para predefinições e solicitam quaisquer segredos necessários. - Detectores de linguagem natural roteiam perguntas comuns sobre ações e Polymarket para o servidor MCP apropriado automaticamente quando disponível.
- Registros dinâmicos são armazenados por usuário no Supabase (tabela
mcp_servers) e proxy através de novas edge functions (mcp-register,mcp-get-registry,mcp-remove,mcp-proxy).
- Autentique-se via botão de login no cabeçalho (Google OAuth) ou pelo comando de chat alternativo
Scripts Disponíveis
| Comando | Descrição |
|---|---|
npm run dev | Iniciar servidor de desenvolvimento Vite |
npm run build | Build de produção |
npm run build:dev | Build em modo de desenvolvimento (útil para staging) |
npm run preview | Pré-visualizar assets compilados |
npm run lint | ESLint em todo o projeto |
As Supabase Edge Functions podem ser implantadas com:
npx supabase functions deploy <function-name> --project-ref <ref>
Destaques do Diretório
src/components— Página inicial e componentes de UI (Hero, Features, Architecture, CTA).src/components/ui— Wrappers shadcn/ui.src/lib/api.ts— Cliente de API do frontend (uploads, Textract, visão).supabase/functions/*— Edge functions para uploads, status de trabalho, Textract, visão GPT e chat.supabase/functions/_shared/database.types.ts— Tipagens Supabase geradas compartilhadas entre funções.supabase/migrations— Esquema de banco de dados para rastreamento de trabalhos + resultados de análise.
Notas de Implantação
- Garanta que as migrações Supabase tenham sido aplicadas (colunas de visão
analysis_resultse índice único). - Configure o CORS do S3 para permitir suas origens e métodos de dev/prod (
GET,PUT,POST,HEAD). - Ao implantar em novos ambientes, rotacione e preencha os segredos das funções Supabase antes de invocar workers de upload/visão.
- Síntese de voz (Whisper, Google TTS) ainda requer segredos adicionais; a geração de imagens Gemini espera
GEMINI_API_KEY(e opcionalmenteGEMINI_IMAGE_MODELse você substituir ogemini-2.5-flash-imagepadrão). Os assets de favicon e logo agora ficam empublic/Untitled design.svgepublic/Untitled design (12/14).png. - O gateway MCP deve expor um único endpoint
/invokecompatível com o payload JSON emitido porsrc/lib/mcp/client.ts.
Segurança e Manutenção
- Execute
npm audit(ounpm audit --omit=dev) regularmente; veja a seção "Security Scan" abaixo. - Restrinja o uso da chave de função de serviço Supabase apenas a contextos do lado do servidor; nunca a exponha ao navegador.
- Use funções IAM da AWS com acesso de privilégio mínimo ao Textract e ao bucket S3 específico.
- Considere configurar políticas de Row Level Security do Supabase se o suporte multi-tenant for necessário.
Roadmap / TODO
- Conectar o pipeline de transcrição Whisper com edge worker Supabase + atualizações de status de fila.
- Integrar Google Cloud Text-to-Speech para respostas de voz.
- Reativar o fallback do Gemini com seleção de provedor configurável e rastreamento de custos.
- Adicionar testes automatizados (Cypress/Playwright) para o fluxo de upload + análise.
- Reforçar o RLS do Supabase e adicionar autenticação quando contas de usuário forem introduzidas.
Contribuindo
Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request. Para mudanças significativas, abra uma issue primeiro para discutir o que você gostaria de alterar.
- Faça um fork do repositório
- Crie sua branch de feature (
git checkout -b feature/AmazingFeature) - Faça commit das suas alterações (
git commit -m 'Add some AmazingFeature') - Envie para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
Licença
Este projeto é licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
Feito com ❤️ pela equipe SlashMCP