@safecore/aip-mcp-ajx
v1.1.1
Published
Busca de dados de controle de acesso em condomínios usando Qdrant e rastreamento integrado com Firestore.
Maintainers
Readme
AJX MCP
Um servidor MCP (Model Context Protocol) para buscar e consultar dados de controle de acesso de condomínios armazenados no Qdrant e integrado com rastreamento de visitantes via Firestore.
🏢 Sobre
Este servidor MCP permite realizar buscas avançadas em registros de acesso de condomínios, incluindo:
- Busca semântica por texto livre
- Filtros estruturados por pessoa, morador, veículo, data, etc.
- Histórico de acesso de pessoas específicas
- Lista de visitantes por morador
- Consulta de pessoas ainda dentro do condomínio
- Busca por placa de veículo
- NOVO: Rastreamento de visitantes com SafeTags
- NOVO: Visualização de histórico de movimentação em mapas interativos
- NOVO: Integração com Firebase/Firestore para dados de rastreamento
🚀 Instalação
- Clone o repositório:
git clone <repo>
cd aip-mcp-ouroville- Instale as dependências:
pnpm install- Configure as variáveis de ambiente:
cp .env.example .envEdite o arquivo .env com suas configurações:
# Configuração do servidor MCP
MCP_SERVER_NAME=condominio-access-mcp
MCP_SERVER_VERSION=1.1.0
# Configuração do Qdrant
QDRANT_URL=http://localhost:6333
QDRANT_API_KEY=sua_api_key_aqui
QDRANT_COLLECTION_NAME=condominio_access
# Configuração da OpenAI para embeddings
OPENAI_API_KEY=sua_openai_api_key
OPENAI_EMBEDDING_MODEL=text-embedding-3-small
# Configuração do Firebase/Firestore
FIREBASE_API_KEY=sua_firebase_api_key
FIREBASE_AUTH_DOMAIN=seu-projeto.firebaseapp.com
FIREBASE_PROJECT_ID=seu-projeto
FIREBASE_STORAGE_BUCKET=seu-projeto.appspot.com
FIREBASE_MESSAGING_SENDER_ID=seu_messaging_sender_id
FIREBASE_APP_ID=seu_app_id- Compile o projeto:
pnpm run build🔧 Configuração
Pré-requisitos
- Node.js 18+
- Qdrant Server rodando
- Coleção no Qdrant com os dados de acesso do condomínio
Estrutura dos Dados
O servidor espera que os dados no Qdrant sigam a estrutura definida nos tipos TypeScript (src/types.ts), baseada no payload fornecido.
Configuração do MCP
Para usar este servidor com clientes MCP, adicione a configuração apropriada ao seu cliente. Exemplo para Claude Desktop:
{
"mcpServers": {
"condominio-access": {
"command": "node",
"args": ["./dist/index.js"],
"cwd": "/caminho/para/aip-mcp-ouroville"
}
}
}🛠️ Ferramentas Disponíveis
1. buscar_acesso_texto
Busca registros usando busca semântica por texto livre.
Parâmetros:
query(obrigatório): Texto para buscalimit(opcional): Número máximo de resultados (padrão: 10)offset(opcional): Número de resultados para pular (padrão: 0)
Exemplo:
{
"query": "ALECSANDER SILVA",
"limit": 5
}2. buscar_acesso_filtros
Busca com filtros estruturados específicos.
Parâmetros:
query(opcional): Busca semântica adicionalpessoa_nome(opcional): Nome da pessoapessoa_documento(opcional): Documento da pessoamorador_nome(opcional): Nome do morador visitadoresidencia_numero(opcional): Número da residênciaresidencia_rua(opcional): Rua da residênciaveiculo_placa(opcional): Placa do veículodata_inicio(opcional): Data início (YYYY-MM-DD)data_fim(opcional): Data fim (YYYY-MM-DD)ainda_dentro(opcional): Se ainda está dentrotem_veiculo(opcional): Se possui veículoperiodo_dia(opcional): manha, tarde, noitedia_semana(opcional): segunda, terca, etc.limit(opcional): Número máximo de resultadosoffset(opcional): Número de resultados para pular
3. buscar_pessoas_dentro
Lista pessoas que ainda estão dentro do condomínio.
Parâmetros:
limit(opcional): Número máximo de resultados (padrão: 10)
4. buscar_historico_pessoa
Busca histórico completo de uma pessoa por documento.
Parâmetros:
documento(obrigatório): Documento da pessoadata_inicio(opcional): Data início (YYYY-MM-DD)data_fim(opcional): Data fim (YYYY-MM-DD)limit(opcional): Número máximo de resultados (padrão: 20)
5. buscar_visitas_morador
Busca todas as visitas para um morador específico.
Parâmetros:
morador_nome(obrigatório): Nome do moradordata_inicio(opcional): Data início (YYYY-MM-DD)data_fim(opcional): Data fim (YYYY-MM-DD)limit(opcional): Número máximo de resultados (padrão: 20)
6. buscar_por_veiculo
Busca registros por placa de veículo.
Parâmetros:
placa(obrigatório): Placa do veículolimit(opcional): Número máximo de resultados (padrão: 10)
7. verificar_conexao
Verifica a conexão com o Qdrant e a existência da coleção.
Parâmetros: Nenhum
🏃♂️ Executando
Desenvolvimento
npm run devProdução
npm run build
npm start📊 Formato dos Dados
O servidor trabalha com registros de acesso que contêm informações sobre:
- Pessoa: Nome, documento, cidade, telefone
- Acesso: Data/hora de entrada e saída, tempo de permanência
- Destino: Morador visitado, residência, endereço
- Veículo: Placa, marca, modelo, cor (se aplicável)
- Metadados: Período do dia, dia da semana, terminal usado
🔍 Exemplos de Uso
Buscar por nome de pessoa
{
"tool": "buscar_acesso_texto",
"arguments": {
"query": "ALECSANDER DIAS DA SILVA"
}
}Buscar visitas para uma residência específica
{
"tool": "buscar_acesso_filtros",
"arguments": {
"residencia_numero": "236",
"data_inicio": "2025-03-01",
"data_fim": "2025-03-31"
}
}Verificar quem ainda está dentro
{
"tool": "buscar_pessoas_dentro",
"arguments": {
"limit": 20
}
}Buscar por placa de veículo
{
"tool": "buscar_por_veiculo",
"arguments": {
"placa": "EHP1389"
}
}� Ferramentas de Rastreamento (Novas)
8. buscar_rastreamento_visitante
Busca informações de rastreamento de um visitante no Firestore.
Parâmetros:
nome_visitante(obrigatório): Nome do visitante para buscarincluir_mapa_html(opcional): Se deve incluir mapa HTML (padrão: false)incluir_mapa_svg(opcional): Se deve incluir mapa SVG (padrão: false)
9. buscar_acesso_com_rastreamento
Busca registros de acesso e informações de rastreamento combinados.
Parâmetros:
query(opcional): Texto para busca semânticapessoa_nome(opcional): Nome da pessoapessoa_documento(opcional): Documento da pessoamorador_nome(opcional): Nome do morador visitadolimite_registros(opcional): Número máximo de registros (padrão: 5)incluir_mapa_html(opcional): Se deve incluir mapa HTML (padrão: false)incluir_mapa_svg(opcional): Se deve incluir mapa SVG (padrão: true)
�🛡️ Segurança
- Configure adequadamente as credenciais do Qdrant e Firebase no arquivo
.env - Mantenha o arquivo
.envfora do controle de versão - Use HTTPS em produção
- Implemente autenticação adequada conforme necessário
- Proteja adequadamente as credenciais do Firebase
📝 Logs e Debugging
Os logs são enviados para stderr e incluem:
- Status de inicialização do servidor
- Erros de conexão com Qdrant
- Erros de execução de ferramentas
🤝 Contribuindo
- Fork o projeto
- Crie uma branch para sua feature
- Commit suas mudanças
- Push para a branch
- Abra um Pull Request
📄 Licença
MIT License - veja o arquivo LICENSE para detalhes.
🐛 Problemas Conhecidos
- O sistema de embeddings está usando valores mock - em produção, integre com um modelo real
- Algumas validações de tipos podem precisar de ajustes conforme a estrutura real dos dados
- Performance pode variar dependendo do tamanho da coleção Qdrant
🔮 Próximas Funcionalidades
- [ ] Integração com modelos de embedding reais
- [ ] Cache de resultados
- [ ] Exportação de relatórios
- [ ] Alertas e notificações
- [ ] Interface web para administração
