MCP Nautobot Server
A Model Context Protocol server that integrates with Nautobot to provide network automation and infrastructure data to AI assistants like Claude, allowing them to query and interact with network Source of Truth systems.
README Documentation
MCP-Nautobot
A Model Context Protocol (MCP) server for Nautobot network automation platform. This project allows AI assistants to interact with your Nautobot instance, providing access to network inventory data.
Disclaimer: This project is not officially affiliated with Anthropic, Claude, or Nautobot. It is an independent implementation of the Model Context Protocol for Nautobot integration.
Features
- Asynchronous API: Built with modern async Python
- MCP Compatible: Works with Claude and other MCP-compatible AI assistants
- Nautobot Integration: Query your network inventory data directly
- Site Information: Retrieve detailed site location data
- Device Details: Access device specifications and configurations
- Network Topology: Visualize network connections and relationships
- Role-based Access: Control data access by user role
- Flexible Configuration: Customizable data presentation
Requirements
- Python 3.10+
- Nautobot instance with API access
- Nautobot API token with appropriate permissions
Installation
# Clone the repository
git clone https://github.com/aiopnet/mcp-nautobot.git
cd mcp-nautobot
# Create and activate a virtual environment
# If uv is not installed, follow instructions at: https://github.com/astral-sh/uv
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install dependencies
uv pip install -e . # Requires pip 21.3+ for editable installs with pyproject.toml
Configuration
Copy the example environment file and update it with your settings:
cp .env.example .env
# Edit .env with your favorite editor
Environment Variables
Variable | Required | Description | Default |
---|---|---|---|
NAUTOBOT_URL | Yes | URL of your Nautobot instance | None |
NAUTOBOT_TOKEN | Yes | API token with read permissions | None |
MCP_PORT | No | Port for the MCP server to listen on | 8000 |
MCP_HOST | No | Host for the MCP server to bind to | 127.0.0.1 |
LOG_LEVEL | No | Logging level (DEBUG, INFO, WARNING, ERROR) | INFO |
⚠️ Security Note: Never commit your
.env
file to version control. It contains sensitive API tokens.
For advanced configuration options, see docs/CONFIGURATION.md.
Usage
Running the Server
# Start the MCP server
python -m mcp_nautobot.server
# Or using the provided CLI
mcp-nautobot-server
The server will start on http://127.0.0.1:8000 by default.
Integrating with Claude Desktop
- Open Claude Desktop and navigate to Settings > Tools > Configure Custom Tools
- Add a new tool with the following details:
- Name: Nautobot Network Data
- Description: Access network inventory data from Nautobot
- Schema Type: MCP
- Endpoint URL: http://127.0.0.1:8000 (or your custom host/port)
- Save and test the connection
Now you can ask Claude questions about your network inventory:
- "What sites do we have in the US West region?"
- "Show me all devices in the Chicago datacenter"
- "List all Cisco switches in our network"
- "What's the IP address of the core router in Atlanta?"
Developer Guide
Testing
# Install development dependencies
uv pip install -e ".[dev]"
# Run tests
pytest
# Run tests with coverage
pytest --cov=mcp_nautobot
Code Style and Linting
This project follows PEP 8 guidelines and uses Black and isort for formatting.
# Format code
black mcp_nautobot tests
isort mcp_nautobot tests
# Lint code
flake8 mcp_nautobot tests
mypy mcp_nautobot
Roadmap
- Device Configuration Retrieval: Access running device configurations
- Topology Visualization: Generate network maps and diagrams
- Multi-tenant Support: Enhanced role-based access control
- Circuit Information: Data about WAN circuits and providers
- Performance Data: Historical performance metrics integration
Contributing
Contributions are welcome! Please check out our Contributing Guide to get started.
If you encounter any issues or have feature requests, please open an issue.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgements
- This project implements the Model Context Protocol
- Built for integration with Nautobot
- Not officially affiliated with Anthropic or Claude
## Troubleshooting
If you encounter issues, check the [Troubleshooting Guide](docs/TROUBLESHOOTING.md) or open an issue on GitHub.