MCP Patrimônio
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Patrimôniolist all assets in the IT sector"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Patrimônio - Servidor de Gestão de Patrimônio
Servidor MCP (Model Context Protocol) para gestão de patrimônio desenvolvido para o homeLab Jads. Este projeto fornece uma interface padronizada para interagir com sistemas de controle de patrimônio através do protocolo MCP.
📋 Índice
Related MCP server: SEFAZ DF: IPTU (Emissão Guia)
🎯 Visão Geral
O MCP Patrimônio é um servidor que implementa o Model Context Protocol para fornecer acesso estruturado a dados de patrimônio. Ele atua como uma camada intermediária entre aplicações cliente (como assistentes de IA) e APIs de gestão de patrimônio.
O que é MCP?
O Model Context Protocol (MCP) é um protocolo padronizado para comunicação entre modelos de IA e ferramentas externas. Ele permite que assistentes de IA executem ações e consultem dados de forma estruturada e segura.
✨ Características
🔧 9 Ferramentas MCP: Conjunto completo de operações CRUD para patrimônio
🔐 Autenticação Bearer Token: Segurança via token de autenticação
✅ Validação com Zod: Validação robusta de entrada e saída
📊 Estatísticas: Análise agregada de dados de patrimônio
🚀 TypeScript: Desenvolvimento type-safe
📝 Logging Estruturado: Sistema de logs com diferentes níveis
⚡ Rate Limiting: Controle de taxa de requisições
🧪 Testes Completos: Suite de testes com Vitest
🔄 Arquitetura Modular: Fácil extensão e manutenção
📦 Pré-requisitos
Node.js >= 22.15.0 (versão LTS recomendada para produção)
npm >= 10.0.0
Acesso a uma API de patrimônio compatível
Token de autenticação da API
🚀 Instalação
Instalação Local
# Clone o repositório
git clone <url-do-repositorio>
cd mcppatrimonio
# Instale as dependências
npm install
# Build do projeto
npm run buildInstalação via Docker (Recomendado para Produção)
# Clone o repositório
git clone <url-do-repositorio>
cd mcppatrimonio
# Configure variáveis de ambiente
cp .env.example .env
# Edite .env com suas configurações
# Build e execute com Docker Compose
docker compose up -d
# Verifique os logs
docker compose logs -fVeja o Guia Docker Completo para instruções detalhadas.
Instalação via npm (quando publicado)
npm install -g mcppatrimonio⚙️ Configuração
1. Variáveis de Ambiente
Crie um arquivo .env na raiz do projeto baseado no .env.example:
cp .env.example .envConfigure as seguintes variáveis:
# URL base da API de patrimônio
PATRIMONIO_BASE_URL=https://api.example.com
# Token de autenticação da API
PATRIMONIO_TOKEN=seu_token_aqui
# Ambiente de execução
NODE_ENV=development
# Nível de log (debug, info, warn, error)
LOG_LEVEL=info
# Rate Limiting - Janela de tempo em ms (padrão: 60000)
RATE_LIMIT_WINDOW_MS=60000
# Rate Limiting - Máximo de requisições por janela (padrão: 100)
RATE_LIMIT_MAX_REQUESTS=1002. Configuração do Cliente MCP
Para usar com Claude Desktop ou outro cliente MCP, adicione ao arquivo de configuração:
Claude Desktop (Windows)
Caminho: %APPDATA%\Claude\claude_desktop_config.json
Claude Desktop (macOS)
Caminho: ~/Library/Application Support/Claude/claude_desktop_config.json
Opção A: Instalação Local (Node.js)
{
"mcpServers": {
"Patrimonio": {
"command": "node",
"args": [
"C:\\caminho\\completo\\para\\mcppatrimonio\\dist\\index.js"
],
"env": {
"PATRIMONIO_BASE_URL": "https://api.example.com",
"PATRIMONIO_TOKEN": "seu_token_aqui",
"NODE_ENV": "production",
"LOG_LEVEL": "info"
}
}
}
}Opção B: Docker (Recomendado para Produção)
{
"mcpServers": {
"Patrimonio": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--env-file",
"C:\\caminho\\completo\\para\\mcppatrimonio\\.env",
"mcppatrimonio:latest"
]
}
}
}Nota: Para Docker, certifique-se de que a imagem foi construída com docker compose build ou docker build -t mcppatrimonio:latest .
🛠️ Ferramentas Disponíveis
O servidor disponibiliza 9 ferramentas MCP:
1. neviim_info
Retorna informações sobre o servidor MCP.
Parâmetros: Nenhum
Retorno: Informações do servidor, versão, descrição
2. neviim_get_patrimonio
Obtém informações de um patrimônio específico pelo número.
Parâmetros:
numero(string): Número do patrimônio
Retorno: Objeto Patrimonio completo
3. neviim_get_patrimonios_por_setor
Lista todos os patrimônios de um setor específico.
Parâmetros:
setor(string): Nome do setor
Retorno: Array de objetos Patrimonio
4. neviim_get_patrimonios_por_usuario
Lista todos os patrimônios associados a um usuário.
Parâmetros:
usuario(string): Nome do usuário
Retorno: Array de objetos Patrimonio
5. neviim_get_patrimonio_por_id
Obtém um patrimônio pelo ID único.
Parâmetros:
id(string): ID do patrimônio
Retorno: Objeto Patrimonio
6. neviim_update_patrimonio
Atualiza os dados de um patrimônio existente.
Parâmetros:
id(string): ID do patrimôniodata(object): Dados a serem atualizados
Retorno: Objeto Patrimonio atualizado
7. neviim_create_patrimonio
Cria um novo registro de patrimônio.
Parâmetros:
data(object): Dados do novo patrimônio
Retorno: Objeto Patrimonio criado
8. neviim_get_estatisticas
Retorna estatísticas agregadas sobre os patrimônios.
Parâmetros: Nenhum
Retorno: Estatísticas (total, por setor, por tipo, por locação)
9. neviim_get_version
Retorna informações de versão do sistema.
Parâmetros: Nenhum
Retorno: Versão do servidor e timestamp
📚 Exemplos de Uso
Exemplo 1: Consultar Patrimônio pelo Número
// Via Claude Desktop ou cliente MCP
// Use a ferramenta: neviim_get_patrimonio
{
"numero": "PAT-001"
}
// Resposta:
{
"id": "abc123",
"numero": "PAT-001",
"setor": "TI",
"usuario": "João Silva",
"tipoEquipamento": "Notebook",
"locacao": "Sala 101",
"descricao": "Dell Latitude 5520",
"valor": 3500.00,
"dataAquisicao": "2024-01-15"
}Exemplo 2: Listar Patrimônios por Setor
// Use a ferramenta: neviim_get_patrimonios_por_setor
{
"setor": "TI"
}
// Resposta: Array com todos os patrimônios do setor TIExemplo 3: Criar Novo Patrimônio
// Use a ferramenta: neviim_create_patrimonio
{
"data": {
"numero": "PAT-123",
"setor": "RH",
"usuario": "Maria Santos",
"tipoEquipamento": "Desktop",
"locacao": "Sala 205",
"descricao": "HP EliteDesk 800 G6",
"valor": 2800.00,
"dataAquisicao": "2024-10-06"
}
}
// Resposta: Objeto do patrimônio criado com IDExemplo 4: Atualizar Patrimônio
// Use a ferramenta: neviim_update_patrimonio
{
"id": "abc123",
"data": {
"usuario": "Pedro Costa",
"locacao": "Sala 102"
}
}
// Resposta: Objeto do patrimônio atualizadoExemplo 5: Obter Estatísticas
// Use a ferramenta: neviim_get_estatisticas
{}
// Resposta:
{
"total": 150,
"porSetor": {
"TI": 45,
"RH": 20,
"Financeiro": 35,
"Operações": 50
},
"porTipoEquipamento": {
"Notebook": 60,
"Desktop": 50,
"Monitor": 40
},
"porLocacao": {
"Sala 101": 10,
"Sala 102": 8,
"Sala 201": 12
},
"valorTotal": 425000.00
}🏗️ Arquitetura
Estrutura de Pastas
mcppatrimonio/
├── src/
│ ├── config/ # Configurações (env, constantes)
│ ├── core/ # Núcleo (MCPServer, types)
│ ├── handlers/ # Handlers (Tool, Resource)
│ ├── middleware/ # Middleware (validator, errorHandler)
│ ├── services/ # Services (patrimonio, estatisticas, version)
│ ├── tools/ # Ferramentas MCP
│ ├── utils/ # Utilitários (logger, security)
│ └── index.ts # Entry point
├── tests/ # Testes
├── dist/ # Build output
├── .env.example # Exemplo de configuração
├── package.json
├── tsconfig.json
└── vitest.config.tsFluxo de Dados
Cliente MCP (Claude)
↓
MCP Server (stdio)
↓
Tool Handler
↓
BaseTool (validação)
↓
Service Layer
↓
API Externa (HTTP)Componentes Principais
1. MCPServer (src/core/MCPServer.ts)
Gerencia o servidor MCP, conexão stdio e registro de ferramentas.
2. BaseTool (src/tools/BaseTool.ts)
Classe abstrata base para todas as ferramentas, fornecendo:
Validação automática com Zod
Tratamento de erros padronizado
Logging estruturado
Helpers para respostas
3. Services (src/services/)
Camada de serviço que encapsula a comunicação com APIs externas:
PatrimonioService: Operações CRUD de patrimônioEstatisticasService: Agregação de estatísticasVersionService: Informações de versão
4. Middleware (src/middleware/)
validator.ts: Validação com Zod schemaserrorHandler.ts: Tratamento centralizado de erros
🧪 Testes
O projeto usa Vitest para testes.
# Executar testes
npm test
# Testes em modo watch
npm run test:watch
# Testes com UI
npm run test:ui
# Cobertura de testes
npm run test:coverage🔧 Desenvolvimento
Scripts Disponíveis
# Build do projeto
npm run build
# Build em modo watch
npm run build:watch
# Limpar build
npm run clean
# Iniciar servidor
npm start
# Desenvolvimento (build + start)
npm run dev
# Desenvolvimento com watch
npm run dev:watch
# Type checking
npm run typecheck
# Linter (a configurar)
npm run lintCriar Nova Ferramenta
Crie um arquivo em
src/tools/MinhaFerramentaTool.ts:
import { z } from "zod";
import { BaseTool } from "./BaseTool.js";
import type { MCPToolResult, ToolExecutionContext } from "../core/types.js";
interface MinhaFerramentaParams {
parametro: string;
}
export class MinhaFerramentaTool extends BaseTool<MinhaFerramentaParams> {
readonly name = "neviim_minha_ferramenta";
readonly title = "Minha Ferramenta";
readonly description = "Descrição da ferramenta";
readonly inputSchema = z.object({
parametro: z.string(),
});
protected async executeInternal(
params: MinhaFerramentaParams,
context: ToolExecutionContext
): Promise<MCPToolResult> {
// Implementação
const resultado = { /* ... */ };
return this.success(resultado);
}
}Export em
src/tools/index.tsRegistre em
src/index.ts
🤝 Contribuindo
Contribuições são bem-vindas! Por favor:
Fork o projeto
Crie uma branch para sua feature (
git checkout -b feature/MinhaFeature)Commit suas mudanças (
git commit -m 'Add: Minha nova feature')Push para a branch (
git push origin feature/MinhaFeature)Abra um Pull Request
Padrões de Código
Use TypeScript
Siga os padrões ESLint (quando configurado)
Adicione testes para novas funcionalidades
Documente APIs públicas com JSDoc
Use commits semânticos
📄 Licença
ISC License - homeLab Jads
🙋 Suporte
Para questões e suporte, abra uma issue no repositório do projeto.
📦 Deploy em Produção
Docker (Recomendado)
O projeto está totalmente configurado para Docker:
# Build da imagem
docker compose build
# Iniciar em produção
docker compose up -d
# Verificar status
docker compose ps
# Ver logs
docker compose logs -fRecursos Docker:
✅ Multi-stage build otimizado
✅ Imagem Alpine (~150MB)
✅ Usuário não-root
✅ Health checks configurados
✅ Resource limits
✅ Auto-restart
Documentação completa: docs/DOCKER.md
Kubernetes
Exemplo de deployment em Kubernetes disponível em docs/DOCKER.md.
🔗 Links Úteis
📖 Documentação Adicional
🚀 Começando
Quick Start - Comece em 5 minutos
🐳 Docker
📚 Referência
🔧 Desenvolvimento
🚀 Produção
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for Brazilian Federal Senate open data (legislative, administrative, e-Cidadania).
Governed property-management MCP: portfolio, leasing, accounting, maintenance, OAuth 2.1.
MCP server for Product Management
Provide seamless access to Appfolio Property Manager Reporting API through a standardized MCP serv…
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides Brazilian financial market data (stocks, dividends, FIIs, crypto, exchange rates, macro indicators) from B3. Works with any MCP client via HTTP, read-only.MIT
- AlicenseNot gradedqualityCmaintenanceEnables users to query official SEFAZ DF IPTU (Distrito Federal property tax) information and issue tax payment guides directly from AI assistants like Claude and ChatGPT. A read-only MCP server with one tool, hosted for any MCP-enabled client, using a prepaid, pay-per-query model.MIT
- AlicenseNot gradedqualityCmaintenanceRead-only MCP server for querying official Brazilian SENATRAN vehicle data for a possessor, enabling listing/consultation of vehicles through natural language in any MCP-compatible client.MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for consulting Brazilian fiscal declaration data (SICONFI) from official sources. Provides a single read-only tool for users to query fiscal information through natural language.MIT