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

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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