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: SENATRAN: Meus Veículos - Possuidor (Listagem)
🎯 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
Deterministic IT asset registry operated by AI agents over MCP. Agents propose, humans approve.
MCP server for Brazilian Federal Senate open data (legislative, administrative, e-Cidadania).
MCP server for Product Management
MCP server for GLPI: tickets, ITIL, assets, knowledge base. GLPI 10/11. Not affiliated with Teclib'.
Related MCP Servers
- 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
- FlicenseBqualityCmaintenanceEnables users to manage personal expenses by adding entries, listing them by date range, and summarizing spending by category through MCP tools, while exposing category data as a resource.3-