mcp-netbird
by aantti
Verified
- mcp-netbird
- tools
package tools
import (
"context"
"time"
mcpnetbird "github.com/aantti/mcp-netbird"
"github.com/mark3labs/mcp-go/server"
)
type NetbirdPeerGroup struct {
ID string `json:"id"`
Name string `json:"name"`
PeersCount int `json:"peers_count"`
ResourcesCount int `json:"resources_count"`
}
type NetbirdPeer struct {
AccessiblePeersCount int `json:"accessible_peers_count"`
ApprovalRequired bool `json:"approval_required"`
CityName string `json:"city_name"`
Connected bool `json:"connected"`
ConnectionIP string `json:"connection_ip"`
CountryCode string `json:"country_code"`
DNSLabel string `json:"dns_label"`
ExtraDNSLabels []string `json:"extra_dns_labels"`
GeonameID int `json:"geoname_id"`
Groups []NetbirdPeerGroup `json:"groups"`
Hostname string `json:"hostname"`
ID string `json:"id"`
InactivityExpirationEnabled bool `json:"inactivity_expiration_enabled"`
IP string `json:"ip"`
KernelVersion string `json:"kernel_version"`
LastLogin time.Time `json:"last_login"`
LastSeen time.Time `json:"last_seen"`
LoginExpirationEnabled bool `json:"login_expiration_enabled"`
LoginExpired bool `json:"login_expired"`
Name string `json:"name"`
OS string `json:"os"`
SerialNumber string `json:"serial_number"`
SSHEnabled bool `json:"ssh_enabled"`
UIVersion string `json:"ui_version"`
UserID string `json:"user_id"`
Version string `json:"version"`
}
type ListNetbirdPeersParams struct{}
func listNetbirdPeers(ctx context.Context, args ListNetbirdPeersParams) ([]NetbirdPeer, error) {
client := mcpnetbird.NewNetbirdClient()
var peers []NetbirdPeer
if err := client.Get(ctx, "/peers", &peers); err != nil {
return nil, err
}
return peers, nil
}
var ListNetbirdPeers = mcpnetbird.MustTool(
"list_netbird_peers",
"List all Netbird peers",
listNetbirdPeers,
)
// AddNetbirdTools registers all Netbird tools with the MCP server
func AddNetbirdPeerTools(mcp *server.MCPServer) {
ListNetbirdPeers.Register(mcp)
}