Servidor MCP
Servidor Model Context Protocol para Mapfolio - Permite que assistentes de IA interajam com dados do Mapfolio
Visão Geral
O Servidor MCP Mapfolio é um servidor Model Context Protocol (MCP) que permite que assistentes de IA e outros clientes compatíveis com MCP interajam com os dados e operações do Mapfolio. Fornece acesso programático a empresas, projetos, usuários, perfis do LinkedIn e funções administrativas.
O que é MCP?
Model Context Protocol (MCP) é um protocolo aberto que permite que assistentes de IA acessem com segurança fontes de dados e ferramentas externas. Os servidores MCP expõem capacidades através de uma interface padronizada, permitindo que assistentes de IA:
- Consultar e recuperar dados
- Realizar operações
- Acessar recursos
- Integrar com sistemas externos
Funcionalidades
O Servidor MCP Mapfolio fornece funcionalidade abrangente:
Dados de Empresas
- Pesquisar empresas com filtros avançados
- Obter detalhes da empresa por ID
- Recuperar empresas por cantão e letra inicial
- Obter empresas aleatórias para amostragem
- Acessar estatísticas de visitas de empresas
Gerenciamento de Projetos
- Criar e gerenciar projetos
- Listar e filtrar projetos do usuário
- Atualizar detalhes do projeto
- Excluir projetos
- Adicionar e remover empresas de projetos
Perfis de Usuário
- Obter informações do perfil do usuário
- Atualizar configurações do perfil
- Listar projetos do usuário
- Gerenciar chaves API
Integração LinkedIn
- Obter dados do perfil do LinkedIn
- Pesquisar perfis do LinkedIn
- Acessar informações de conexão
- Ver histórico de versões do perfil
- Obter dados de empresas do LinkedIn
Operações Administrativas
- Listar todos os usuários (apenas admin)
- Criar novos usuários (apenas admin)
- Gerenciar chaves API (apenas admin)
- Acessar estatísticas do painel administrativo
Estatísticas
- Obter estatísticas agregadas de empresas
- Ver contagens por nível de cantão
- Acessar contagens baseadas em letras
- Obter estatísticas de combinações de duas letras
Instalação
Pré-requisitos
- Node.js >= 20.0.0
- npm >= 10.0.0
- Acesso à instância Supabase do Mapfolio
Configuração
- Instalar dependências:
cd mcp-server
npm install
- Configurar variáveis de ambiente:
cp .env.example .env
Edite .env e configure:
# URL da API Mapfolio (padrão: https://mapfolio.app)
MAPFOLIO_API_URL=https://mapfolio.app
# Tipo de transporte: 'stdio' (padrão) ou 'http' para acesso remoto
MCP_TRANSPORT=stdio
# Porta HTTP (usada apenas quando MCP_TRANSPORT=http)
MCP_HTTP_PORT=3001
# Opcional: Autenticação padrão (pode ser fornecida via contexto MCP ou cabeçalhos HTTP)
MAPFOLIO_API_KEY=mapf_your_api_key_here
MAPFOLIO_JWT_TOKEN=your-jwt-token-here
- Compilar o servidor:
npm run build
Uso
Executando o Servidor
Desenvolvimento Local (transporte stdio)
O servidor MCP usa transporte stdio por padrão (protocolo MCP padrão):
npm start
Para desenvolvimento com recarregamento automático:
npm run dev
Transporte HTTP (para acesso remoto)
Para executar o servidor com transporte HTTP para testes locais:
MCP_TRANSPORT=http MCP_HTTP_PORT=3001 npm start
Isso inicia um servidor HTTP na porta 3001 que aceita solicitações JSON-RPC 2.0 via HTTP POST.
Implantação Vercel (Acesso Remoto)
O servidor MCP está automaticamente disponível via HTTP quando implantado no Vercel:
- Endpoint:
https://your-app.vercel.app/api/mcp - Protocolo: JSON-RPC 2.0 via HTTP POST
- Autenticação: Via cabeçalho
X-API-Keyou cabeçalhoAuthorization: Bearer <token>
Exemplo de solicitação:
curl -X POST https://your-app.vercel.app/api/mcp \
-H "Content-Type: application/json" \
-H "X-API-Key: mapf_your_api_key" \
-d '{
"jsonrpc": "2.0",
"method": "tools/list",
"id": 1
}'
Configuração do Cliente MCP
Claude Desktop
Implantação local:
{
"mcpServers": {
"mapfolio": {
"command": "node",
"args": ["/path/to/mapfolio/mcp-server/dist/index.js"],
"env": {
"MAPFOLIO_API_URL": "https://mapfolio.app",
"MAPFOLIO_API_KEY": "mapf_your_api_key_here"
}
}
}
}
Cursor
Configure via configurações MCP:
- Comando:
node - Args:
["/path/to/mapfolio/mcp-server/dist/index.js"] - Variáveis de ambiente:
MAPFOLIO_API_URL:https://mapfolio.appMAPFOLIO_API_KEY: Sua chave API (opcional)
Autenticação
O servidor suporta dois métodos de autenticação:
Autenticação por Chave API
As chaves API têm o prefixo mapf_ e podem:
- Ser definidas via variável de ambiente
MAPFOLIO_API_KEY - Ser passadas por solicitação via parâmetro
apiKeyem chamadas de ferramentas
Autenticação por Token JWT
Os tokens JWT do Supabase podem:
- Ser definidos via variável de ambiente
MAPFOLIO_JWT_TOKEN - Ser passados por solicitação via parâmetro
jwtTokenem chamadas de ferramentas
Prioridade de Autenticação
- Transporte HTTP: Cabeçalhos (
X-API-KeyouAuthorization) têm precedência - Credenciais por solicitação (
apiKeyoujwtTokennos argumentos da ferramenta) - Variáveis de ambiente (
MAPFOLIO_API_KEYouMAPFOLIO_JWT_TOKEN)
Autenticação de Transporte HTTP
Ao usar o endpoint HTTP (/api/mcp), a autenticação é fornecida via cabeçalhos HTTP:
- Chave API:
X-API-Key: mapf_your_api_key - Token JWT:
Authorization: Bearer your_jwt_token
Ferramentas Disponíveis
O servidor fornece 30+ ferramentas em 6 categorias:
Ferramentas de Empresas
search_companies- Pesquisar com filtrosget_company- Obter empresa por IDget_companies_by_canton_letter- Obter por cantão e letraget_random_companies- Obter amostras aleatóriasget_company_visits- Obter estatísticas de visitas
Ferramentas de Projetos
create_project- Criar novo projetolist_projects- Listar projetos do usuárioget_project- Obter detalhes do projetoupdate_project- Atualizar projetodelete_project- Excluir projetoadd_companies_to_project- Adicionar empresasremove_companies_from_project- Remover empresas
Ferramentas de Usuário
get_user_profile- Obter perfilupdate_user_profile- Atualizar perfilget_user_projects- Listar projetosget_user_api_keys- Listar chaves API
Ferramentas LinkedIn
get_linkedin_profile- Obter perfilsearch_linkedin_profiles- Pesquisar perfisget_linkedin_connections- Obter conexõesget_linkedin_profile_versions- Obter histórico de versõesget_linkedin_companies- Obter dados de empresas
Ferramentas Admin (Apenas Admin)
list_all_users- Listar todos os usuárioscreate_user- Criar usuárioget_user_details- Obter detalhes do usuáriolist_api_keys- Listar todas as chaves APIcreate_api_key- Criar chave APIrevoke_api_key- Revogar chave APIget_admin_stats- Obter estatísticas admin
Ferramentas de Estatísticas
get_company_stats- Obter estatísticas agregadasget_canton_counts- Obter contagens de cantõesget_letter_counts- Obter contagens de letrasget_two_letter_counts- Obter contagens de duas letras
Recursos
O servidor fornece acesso baseado em recursos:
mapfolio://company/{id}- Dados da empresamapfolio://project/{id}- Dados do projetomapfolio://user/{id}- Perfil do usuáriomapfolio://linkedin-profile/{id}- Perfil do LinkedIn
Os recursos podem incluir autenticação via parâmetros de consulta:
mapfolio://company/{id}?apiKey=mapf_...mapfolio://company/{id}?jwtToken=...
Exemplo de Uso
Pesquisar Empresas
{
"tool": "search_companies",
"arguments": {
"query": "technology",
"cantons": ["ZH", "BE"],
"page": 1,
"limit": 20
}
}
Criar Projeto
{
"tool": "create_project",
"arguments": {
"name": "Tech Companies Zurich",
"searchType": "company",
"searchQuery": "technology",
"isPublic": false
}
}
Obter Detalhes da Empresa
{
"tool": "get_company",
"arguments": {
"companyId": "company-uuid-here"
}
}
Tratamento de Erros
Todas as ferramentas retornam erros em um formato consistente:
{
"error": "Mensagem de erro"
}
Cenários de erro comuns:
- 401 Não Autorizado: Autenticação inválida ou ausente
- 403 Proibido: Permissões insuficientes
- 404 Não Encontrado: Recurso não encontrado
- 500 Erro Interno do Servidor: Erro do lado do servidor
Arquitetura Apenas API
O servidor MCP usa solicitações HTTP para mapfolio.app em vez de acesso direto ao banco de dados. Isso significa:
- ✅ Não são necessárias credenciais Supabase - Funciona apenas com URL da API e chave API
- ✅ Implantação Vercel fácil - Implantar como função serverless
- ✅ Seguro - Todas as solicitações passam pela API do Mapfolio com autenticação
- ✅ Escalável - Beneficia-se do limite de taxa e cache da API do Mapfolio
Atualmente Disponível via API
- ✅ Pesquisa e recuperação de empresas
- ✅ Estatísticas de empresas (contagens de cantões, contagens de letras)
- ✅ Empresas aleatórias
- ✅ Visitas de empresas
Em Breve (Requer Endpoints de API)
- ⏳ Gerenciamento de projetos (criar, listar, atualizar, excluir)
- ⏳ Gerenciamento de perfis de usuário
- ⏳ Acesso a perfis do LinkedIn
- ⏳ Operações administrativas
Essas funcionalidades retornarão mensagens de erro úteis até que os endpoints da API sejam criados.
Considerações de Segurança
- Chaves API: Armazenar com segurança, nunca fazer commit no controle de versão
- Tokens JWT: Os tokens expiram, lidar com atualização adequadamente
- Limite de Taxa da API: Respeita os limites de taxa da API do Mapfolio
- Apenas HTTPS: Sempre usar HTTPS para solicitações de API
- Operações Admin: Requerem autenticação de admin explícita (quando os endpoints estiverem disponíveis)
Desenvolvimento
Verificação de Tipos
npm run type-check
Compilação
npm run build
Modo de Desenvolvimento
npm run dev
Documentação
Para documentação completa, consulte o README do Servidor MCP.
Suporte
Para problemas ou perguntas:
- GitHub Issues: [repositório mapfolio]
- Email: support@mapfolio.app
Licença
MIT