Skip to main content
Glama
rajuatmakuri5

vcf-mcp-sddc-vc

README.md
# OpenAPI MCP Assistant for VMware

An MCP-backed AI assistant framework for VMware APIs such as VMware Cloud Foundation / SDDC Manager and vCenter.

It can expose OpenAPI-backed operations as MCP tools for Claude Desktop, FastMCP clients, or the included CLI assistant. The default tool set is intentionally small and operator-friendly so users can ask natural questions such as:

```text
List the workload domains in SDDC Manager.
```

## Features

- FastMCP server for SDDC Manager, vCenter, or generic OpenAPI profiles
- Claude Desktop support through stdio MCP
- HTTP and SSE MCP hosting for other clients
- SDDC token, vCenter session, Basic, and bearer-token auth modes
- Optional OpenAPI-generated tool exposure
- Local LLM support through Ollama-compatible `/v1/chat/completions`
- Setup validator through `sddc-doctor`

## Connector Profiles

Use one `.env` file per connector:

```text
.env.sddc
.env.vcenter
```

The same server executable can launch either profile:

```powershell
sddc-mcp-server --transport stdio --env-file .env.vcenter
```

## Curated MCP Tools

For SDDC Manager, the server exposes:

- `list_workload_domains`
- `get_sddc_manager_health`
- `list_hosts`
- `list_clusters`
- `sddc_inventory_snapshot`
- `sddc_api_get`
- `sddc_recent_failed_tasks`

For vCenter, the server exposes:

- `list_vcenter_vms`
- `list_vcenter_hosts`
- `list_vcenter_clusters`
- `list_vcenter_datacenters`
- `api_get`

Set `EXPOSE_OPENAPI_TOOLS=true` only if your MCP client can handle a very large generated tool list.

## Quick Start

```powershell
git clone <your-repo-url>
cd sddc-ai-assistant
.\scripts\install.ps1 -CopyEnv
.\.venv\Scripts\Activate.ps1
```

For SDDC Manager:

```powershell
copy .env.sddc.example .env.sddc
```

For vCenter:

```powershell
copy .env.vcenter.example .env.vcenter
```

Edit the profile with FQDN, credentials, TLS setting, and OpenAPI spec path.

Validate:

```powershell
sddc-doctor --env-file .env.sddc
sddc-doctor --env-file .env.sddc --check-api
sddc-doctor --env-file .env.vcenter --check-api
```

## Claude Desktop

Generate the Claude Desktop config:

```powershell
.\scripts\write-claude-config.ps1 -ServerName sddc-manager -EnvFile .env.sddc
.\scripts\write-claude-config.ps1 -ServerName vcenter -EnvFile .env.vcenter
```

Restart Claude Desktop completely, then ask:

```text
List the workload domains in SDDC Manager.
```

or:

```text
List vCenter virtual machines.
```

Manual config example:

```json
{
  "mcpServers": {
    "sddc-manager": {
      "command": "C:\\path\\to\\sddc-ai-assistant\\.venv\\Scripts\\sddc-mcp-server.exe",
      "args": ["--transport", "stdio", "--env-file", "C:\\path\\to\\sddc-ai-assistant\\.env.sddc"]
    },
    "vcenter": {
      "command": "C:\\path\\to\\sddc-ai-assistant\\.venv\\Scripts\\sddc-mcp-server.exe",
      "args": ["--transport", "stdio", "--env-file", "C:\\path\\to\\sddc-ai-assistant\\.env.vcenter"]
    }
  }
}
```

## HTTP MCP Server

```powershell
sddc-mcp-server --transport http --host 0.0.0.0 --port 8000
```

For vCenter:

```powershell
sddc-mcp-server --transport http --host 0.0.0.0 --port 8001 --env-file .env.vcenter
```

Useful URLs:

```text
http://localhost:8000/
http://localhost:8000/health
http://localhost:8000/mcp
```

`0.0.0.0` is only the bind address. Browse to `localhost`, `127.0.0.1`, or the machine's real IP address.

## CLI Assistant

The CLI assistant can call the MCP server and summarize with an OpenAI-compatible LLM.

For Ollama:

```env
LLM_BASE_URL=http://localhost:11434/v1
OPENAI_API_KEY=ollama
LLM_MODEL=llama3.1:8b
LLM_TIMEOUT_SECONDS=300
LLM_CONTEXT_MAX_CHARS=20000
```

Run:

```powershell
sddc-ai --mcp-url http://localhost:8000/mcp "Summarize this SDDC Manager environment and highlight anything unhealthy"
```

## Documentation

- [Configuration](docs/configuration.md)
- [Claude Desktop Setup](docs/claude-desktop.md)
- [Team Onboarding](docs/team-onboarding.md)

## Security Notes

- Never commit `.env`; it contains SDDC credentials.
- Prefer `SDDC_AUTH_MODE=token`.
- Use `SDDC_VERIFY_TLS=true` with trusted certificates in production.
- Keep `EXPOSE_OPENAPI_TOOLS=false` for Claude Desktop unless you really need the full generated API surface.

## License

MIT