Add "API-Coverage"
92
API-Coverage.-.md
Normal file
92
API-Coverage.-.md
Normal file
@@ -0,0 +1,92 @@
|
||||
# API Coverage
|
||||
|
||||
The VirtFusion MCP server currently covers **all 84 endpoints** defined in the VirtFusion Admin API OpenAPI specification. This page documents the coverage status and the tooling used to track it.
|
||||
|
||||
## Coverage Summary
|
||||
|
||||
| API Tag | Endpoints | MCP Module | Tools |
|
||||
|---|---|---|---|
|
||||
| General | 1 | `general.ts` | 1 |
|
||||
| Servers | 18 | `servers.ts` | 18 |
|
||||
| Servers/Power | 4 | `servers-power.ts` | 4 |
|
||||
| Servers/Network | 5 | `servers-network.ts` | 5 |
|
||||
| Servers/Network/Firewall | 4 | `servers-firewall.ts` | 4 |
|
||||
| Servers/Network/Traffic | 4 | `servers-traffic.ts` | 4 |
|
||||
| Hypervisors | 2 | `hypervisors.ts` | 2 |
|
||||
| Hypervisor Groups | 3 | `hypervisor-groups.ts` | 3 |
|
||||
| IP Blocks | 3 | `ip-blocks.ts` | 3 |
|
||||
| Packages | 2 | `packages.ts` | 2 |
|
||||
| Queue & Tasks | 1 | `queue.ts` | 1 |
|
||||
| Backups | 1 | `backups.ts` | 1 |
|
||||
| DNS | 1 | `dns.ts` | 1 |
|
||||
| Media | 2 | `media.ts` | 2 |
|
||||
| SSH Keys | 4 | `ssh-keys.ts` | 4 |
|
||||
| Users / External Rel ID | 7 | `users.ts` | 7 |
|
||||
| Self Service / External Relational ID | 19 | `self-service.ts` | 19 |
|
||||
| **Total** | **84** | **17 modules** | **84** |
|
||||
|
||||
## Endpoint Manifest
|
||||
|
||||
The file `endpoint-manifest.json` in the repository root contains a machine-readable list of all 84 endpoints extracted from `openapi.yaml`. Each entry includes:
|
||||
|
||||
```json
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/servers/{serverId}/build",
|
||||
"summary": "Build a server",
|
||||
"tag": "Servers"
|
||||
}
|
||||
```
|
||||
|
||||
## Drift Detection
|
||||
|
||||
Two mechanisms keep the MCP server in sync with the VirtFusion API:
|
||||
|
||||
### Manual Check
|
||||
|
||||
```bash
|
||||
npm run check-endpoint-drift
|
||||
```
|
||||
|
||||
This script:
|
||||
1. Parses the current `openapi.yaml` to extract all endpoints
|
||||
2. Loads `endpoint-manifest.json` as the known baseline
|
||||
3. Compares the two sets by `METHOD path` key
|
||||
4. Reports any new or removed endpoints
|
||||
5. Exits with code 0 if no drift, code 1 if drift detected
|
||||
|
||||
### Automated CI Check
|
||||
|
||||
The `endpoint-sync` Gitea Actions workflow runs:
|
||||
- **Weekly** on a cron schedule
|
||||
- **On any push** that modifies `openapi.yaml`
|
||||
|
||||
If drift is detected, it automatically creates a Gitea issue with the details of new/removed endpoints.
|
||||
|
||||
## Updating When VirtFusion Adds New Endpoints
|
||||
|
||||
1. Download the updated `openapi.yaml` from VirtFusion documentation
|
||||
2. Replace the existing `openapi.yaml` in the repo root
|
||||
3. Run drift detection to see what changed:
|
||||
```bash
|
||||
npm run check-endpoint-drift
|
||||
```
|
||||
4. Implement new tools in the appropriate `src/tools/*.ts` module (see [[Contributing]])
|
||||
5. Update the manifest:
|
||||
```bash
|
||||
npm run extract-endpoints > endpoint-manifest.json
|
||||
```
|
||||
6. Update the tool count in `README.md`
|
||||
7. Commit all changes together
|
||||
|
||||
## OpenAPI Specification
|
||||
|
||||
The full VirtFusion Admin API specification is stored at `openapi.yaml` in the repository root. This file is the source of truth for endpoint extraction. The extraction script (`scripts/extract-endpoints.ts`) parses it using the `yaml` package and outputs sorted JSON.
|
||||
|
||||
## Not Yet Implemented
|
||||
|
||||
As of v1.0.1, there are **no unimplemented endpoints** -- all 84 endpoints in the OpenAPI spec have corresponding MCP tools. Future VirtFusion API releases may introduce new endpoints, which will be caught by the drift detection system.
|
||||
|
||||
For a detailed per-tool reference, see [[Tool-Reference]].
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user