Package Exports
- @safecore/aip-mcp-ajx
- @safecore/aip-mcp-ajx/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@safecore/aip-mcp-ajx) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
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