https://github.com/thunderboltsid/mcp-nutanix
MCP Server for Nutanix
https://github.com/thunderboltsid/mcp-nutanix
Last synced: 4 months ago
JSON representation
MCP Server for Nutanix
- Host: GitHub
- URL: https://github.com/thunderboltsid/mcp-nutanix
- Owner: thunderboltsid
- License: mit
- Created: 2025-03-27T18:51:17.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-08-13T18:19:23.000Z (4 months ago)
- Last Synced: 2025-08-13T20:42:52.187Z (4 months ago)
- Language: Go
- Size: 91.8 KB
- Stars: 10
- Watchers: 2
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-mcp-servers - thunderboltsid/mcp-nutanix - Go-based MCP server for interfacing with Nutanix Prism Central resources, enabling cloud and on-premises management via MCP. ([Read more](/details/thunderboltsidmcp-nutanix.md)) `mcp` `nutanix` `cloud` `golang` (Cloud & DevOps MCP Servers)
- awesome-devops-mcp-servers - thunderboltsid/mcp-nutanix - Go-based MCP Server for interfacing with Nutanix Prism Central resources. (Cloud Infrastructure / ☁️ Cloud Providers)
- awesome-mcp-servers - **mcp-nutanix** - MCP Server for Nutanix `go` `mcp` `server` `http` `git` `go install thunderboltsid/mcp-nutanix@latest` (⚙️ DevOps)
- awesome-mcp-servers - thunderboltsid/mcp-nutanix - Nutanix Prism CentralリソースとインターフェースするためのGoベースのMCPサーバー。 (サーバー実装 / ☁️ <a name="cloud-platforms"></a>クラウドプラットフォーム)
- awesome-mcp-zh - thunderboltsid/mcp-nutanix
- toolsdk-mcp-registry - ❌ nutanix-prism-central
- metorial-index - Nutanix MCP Server - Interact with Nutanix Prism Central APIs to retrieve and analyze resources such as VMs, clusters, and hosts using Large Language Models. Facilitate exploration and management of a Nutanix environment through a standardized protocol. (Cloud Services)
- awesome-mcp-servers - PrismLLM - Enables Large Language Models to interact with Nutanix Prism Central APIs via the Model Context Protocol (Table of Contents / AI Services)
README
# MCP Nutanix
A Model Context Protocol (MCP) server for interacting with Nutanix Prism Central APIs through Large Language Models (LLMs).
## ⚠️ Disclaimer
**THIS IS AN EXPERIMENTAL PROJECT**
This project was created as a personal project to explore the capabilities of the Model Context Protocol frameworks in Go. It is:
- **NOT** an official Nutanix product or tool
- **NOT** supported, endorsed, or maintained by Nutanix
- **NOT** suitable for production environments
- **PROVIDED AS-IS** with no warranties or guarantees
**USE AT YOUR OWN RISK**: The author takes no responsibility for any issues, damages, or outages that may result from using this code.
## Overview
This MCP server allows LLMs to interact with Nutanix Prism Central by:
1. Connecting to a Prism Central instance with user credentials
2. Listing various resources (VMs, Clusters, Hosts, etc.)
3. Retrieving specific resource details via URI-based access
The implementation uses the [Prism Go Client](https://github.com/nutanix-cloud-native/prism-go-client) to communicate with Prism Central and the [MCP Go library](https://github.com/mark3labs/mcp-go) to implement the Model Context Protocol.
## Getting Started
### Prerequisites
- Go 1.23 or higher
- Access to a Nutanix Prism Central instance
- Tools like `make` and `go fmt` for building
### Building
```bash
# Clone the repository
git clone https://github.com/thunderboltsid/mcp-nutanix.git
cd mcp-nutanix
# Build the MCP server
make build
```
## Credential Configuration
The server supports two credential methods:
1. **Interactive credentials** (default) - Works with Claude via MCP prompts
2. **Static credentials** - Required for tools like Cursor that don't support interactive prompts
## MCP Client Configuration
To use this server with MCP clients, you need to configure the client to connect to the server.
### Claude Desktop/Code
Create or update `~/.anthropic/claude_desktop.json`:
```json
{
"mcpServers": {
"nutanix": {
"command": "/path/to/mcp-nutanix"
}
}
}
```
Claude will prompt you for credentials when first using the server.
### Cursor
For Cursor, you need to provide static credentials via environment variables since it doesn't support interactive prompts.
Create or update `~/.cursor/mcp.json`:
```json
{
"mcpServers": {
"nutanix": {
"command": "/path/to/mcp-nutanix",
"env": {
"NUTANIX_ENDPOINT": "your-prism-central-ip-or-hostname",
"NUTANIX_USERNAME": "your-username",
"NUTANIX_PASSWORD": "your-password",
"NUTANIX_INSECURE": "true"
}
}
}
}
```
**Environment Variables:**
- `NUTANIX_ENDPOINT` - Prism Central IP or hostname (required)
- `NUTANIX_USERNAME` - API username (required)
- `NUTANIX_PASSWORD` - API password (required)
- `NUTANIX_INSECURE` - Set to "true" for self-signed certificates (optional)
### Other MCP Clients
This server follows the standard MCP protocol and should work with any MCP client that supports stdio transport. Refer to your client's documentation for configuration instructions.
## Usage
Once the MCP server is configured with your client and connected to your Prism Central instance, LLMs can interact with it through the MCP protocol.
### Resource Listing
To list resources, use the appropriate tool:
```
vms
clusters
hosts
images
subnets
```
The LLM will receive a JSON list of resources that it can parse and analyze.
### Resource Access
To access a specific resource, use a resource URI:
```
vm://{uuid}
cluster://{uuid}
host://{uuid}
```
The LLM will receive detailed JSON information about the specific resource.
## Development
### Project Structure
```
mcp-nutanix/
├── bin/ # Compiled binaries
├── internal/ # Internal packages
│ ├── client/ # Prism Central client handling
│ ├── codegen/ # Code generation utilities
│ └── json/ # JSON helpers
├── pkg/ # components
│ ├── prompts/ # MCP prompt implementations
│ ├── resources/ # Resource handlers
│ └── tools/ # Tool handlers
└── Makefile # Build and utility commands
```
### Code Generation
The project uses code generation to create resource and tool handlers. To update these:
```bash
make generate
```
## Limitations
- Response size is limited by the MCP protocol
- Some resources with large response sizes may cause errors
- No pagination support in the current implementation
- Only supports read operations, no create/update/delete
## License
This project is licensed under the MIT License - see the LICENSE file for details.
## Acknowledgments
- [Nutanix](https://www.nutanix.com/) for creating the Prism API
- [Mark3Labs](https://github.com/mark3labs) for the MCP Go library
- [Nutanix Cloud Native](https://github.com/nutanix-cloud-native) for the Prism Go Client
## Contributing
This is an experimental project with no formal contribution process. Feel free to create issues or pull requests.