Skip to main content
Glama
fringemonkey

NetBox MCP Server

by fringemonkey

πŸš€ NetBox MCP Server v1.0

A robust and well-engineered Python MCP (Model Context Protocol) server for NetBox infrastructure access, designed for teaching newer programmers and production use.

🎯 Features

Core Functionality

  • NetBox API Integration - Full access to devices, VMs, IP addresses, and VLANs

  • HashiCorp Vault Integration - JIT token minting with AppRole authentication

  • PostgreSQL State Confidence - Query module referencing muse certainty schema

  • MCP Tools - Comprehensive toolset for infrastructure management

Advanced Capabilities

  • Tiny LLM Testing - Simulated LLM for CI/CD environments

  • Structured JSON Protocol - Clear communication between components

  • Performance Optimizations - Connection pooling, caching, retry strategies

  • LLM Optimization - Token estimation, response formatting, streaming

πŸ§ͺ Test Suite

100% Test Success Rate - 129 passed, 1 skipped, 0 failed

Test Coverage

  • βœ… Core MCP Server functionality

  • βœ… Tiny LLM implementation

  • βœ… Structured JSON protocol

  • βœ… End-to-end workflows

  • βœ… Performance optimizations

  • βœ… Tool functionality (hosts, VMs, IPs, VLANs)

  • βœ… Error handling and edge cases

πŸš€ Quick Start

Prerequisites

  • Python 3.12+

  • NetBox instance

  • HashiCorp Vault

  • PostgreSQL database

Installation

# Clone the repository
git clone https://github.com/fringemonkey/mcp-dc.git
cd mcp-dc

# Install dependencies
pip install -r requirements.txt
pip install -r requirements-dev.txt

# Run tests
python -m pytest tests/ -v

Configuration

Set up environment variables:

export NETBOX_URL="http://your-netbox-instance"
export VAULT_ADDR="http://your-vault-instance"
export VAULT_TOKEN="your-vault-token"
export POSTGRES_HOST="localhost"
export POSTGRES_DB="mcp_state"
export POSTGRES_USER="mcp_user"
export POSTGRES_PASSWORD="mcp_password"

πŸ› οΈ Development

Running Tests

# Run all tests
python -m pytest tests/ -v

# Run specific test categories
python -m pytest tests/ -m unit
python -m pytest tests/ -m integration
python -m pytest tests/ -m performance

# Run with coverage
python -m pytest tests/ --cov=src --cov-report=html

Code Quality

# Format code
black src/ tests/
isort src/ tests/

# Lint code
flake8 src/ tests/
mypy src/

# Security check
bandit -r src/
safety check

πŸ“ Project Structure

mcp-dc/
β”œβ”€β”€ src/                          # Source code
β”‚   β”œβ”€β”€ server.py                 # Main MCP server
β”‚   β”œβ”€β”€ netbox_client.py          # NetBox API client
β”‚   β”œβ”€β”€ vault_client.py           # Vault authentication
β”‚   β”œβ”€β”€ state_confidence.py       # PostgreSQL client
β”‚   β”œβ”€β”€ tiny_llm.py              # Tiny LLM for testing
β”‚   β”œβ”€β”€ structured_protocol.py    # JSON protocol
β”‚   β”œβ”€β”€ llm_optimizer.py         # LLM optimizations
β”‚   └── tools/                    # MCP tools
β”‚       β”œβ”€β”€ hosts.py
β”‚       β”œβ”€β”€ virtual_machines.py
β”‚       β”œβ”€β”€ ip_addresses.py
β”‚       └── vlans.py
β”œβ”€β”€ tests/                        # Test suite
β”‚   β”œβ”€β”€ test_core_functionality.py
β”‚   β”œβ”€β”€ test_simple_tools.py
β”‚   β”œβ”€β”€ test_tiny_llm.py
β”‚   β”œβ”€β”€ test_structured_protocol.py
β”‚   β”œβ”€β”€ test_llm_optimization.py
β”‚   └── test_simple_performance.py
β”œβ”€β”€ examples/                     # Example scripts
β”œβ”€β”€ scripts/                      # Utility scripts
β”œβ”€β”€ .github/workflows/            # CI/CD pipelines
└── .devcontainer/               # Development container

πŸ”§ MCP Tools

Host Management

  • list_hosts - List all devices

  • get_host - Get specific device details

  • search_hosts - Search devices by criteria

Virtual Machine Management

  • list_vms - List all VMs

  • get_vm - Get specific VM details

  • list_vm_interfaces - List VM interfaces

IP Address Management

  • list_ips - List all IP addresses

  • get_ip - Get specific IP details

  • search_ips - Search IP addresses

VLAN Management

  • list_vlans - List all VLANs

  • get_vlan - Get specific VLAN details

  • list_vlan_ips - List IPs in VLAN

πŸŽ“ Educational Value

This project is designed to teach:

  • MCP Protocol - Model Context Protocol implementation

  • API Integration - NetBox, Vault, PostgreSQL integration

  • Testing Strategies - Unit, integration, performance testing

  • Code Quality - Linting, formatting, security practices

  • CI/CD - GitHub Actions, automated testing

  • Documentation - Comprehensive README and code comments

πŸš€ Performance

  • Connection Pooling - Efficient HTTP connections

  • Caching - TTL-based response caching

  • Retry Strategies - Exponential backoff for failures

  • Memory Efficiency - Optimized data structures

  • Concurrent Operations - Async/await patterns

πŸ”’ Security

  • Vault Integration - Secure token management

  • Input Validation - Parameter sanitization

  • Error Handling - Secure error responses

  • Security Scanning - Bandit and Safety checks

πŸ“Š Monitoring

  • Metrics Collection - Performance and usage metrics

  • Logging - Structured logging with levels

  • Health Checks - Service availability monitoring

  • State Confidence - Data reliability scoring

🀝 Contributing

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Add tests for new functionality

  5. Ensure all tests pass

  6. Submit a pull request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸŽ‰ Acknowledgments

  • NetBox team for the excellent infrastructure management platform

  • HashiCorp for Vault security solutions

  • PostgreSQL community for the robust database

  • MCP protocol contributors


Ready for production deployment! πŸš€

Version 1.0 - Zero test failures, comprehensive functionality, production-ready

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/fringemonkey/mcp-dc'

If you have feedback or need assistance with the MCP directory API, please join our Discord server