KubeStellar A2A MCP Server
Enables AI-powered management of multi-cluster Kubernetes environments through natural language, supporting kubectl operations, function execution, and agent interactions with multiple AI providers.
README
KubeStellar A2A / MCP
╭─────────────────────────────────────────────────────────────────────────────────────────────╮
│ ██╗ ██╗██╗ ██╗██████╗ ███████╗███████╗████████╗███████╗██╗ ██╗ █████╗ ██████╗ │
│ ██║ ██╔╝██║ ██║██╔══██╗██╔════╝██╔════╝╚══██╔══╝██╔════╝██║ ██║ ██╔══██╗██╔══██╗ │
│ █████╔╝ ██║ ██║██████╔╝█████╗ ███████╗ ██║ █████╗ ██║ ██║ ███████║██████╔╝ │
│ ██╔═██╗ ██║ ██║██╔══██╗██╔══╝ ╚════██║ ██║ ██╔══╝ ██║ ██║ ██╔══██║██╔══██╗ │
│ ██║ ██╗╚██████╔╝██████╔╝███████╗███████║ ██║ ███████╗███████╗███████╗██║ ██║██║ ██║ │
│ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚══════╝╚══════╝ ╚═╝ ╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ │
│ Multi-Cluster Kubernetes Management Agent │
╰─────────────────────────────────────────────────────────────────────────────────────────────╯
https://github.com/user-attachments/assets/fd5746f9-6620-4aeb-8150-dd9bf9eab694
CLI Setup (uv)
# Enable virtual environment
uv venv
# Install with uv
uv pip install -e ".[dev]"
# Run commands
uv run kubestellar --help
uv run kubestellar list-functions
uv run kubestellar execute <function_name>
uv run kubestellar agent # Start interactive AI agent
kubectl Plugin Installation
You can install and use this project as a kubectl plugin. Primary plugin name is kubestellar (for Krew and release binaries). We also ship a Python-installed alias a2a for convenience. kubectl discovers plugins via executables named kubectl-<name> on your PATH.
Installation options:
# Using uv tool (recommended for per-user install)
uv tool install .
# Using pipx (isolated virtualenv)
pipx install .
# Or directly from GitHub
pipx install 'git+https://github.com/kubestellar/a2a'
# Using pip (installs into current Python environment)
python -m pip install .
Usage:
# kubectl will find the plugin as long as the executable is on PATH
# Python-installed alias (uv/pipx/pip):
kubectl a2a --help
kubectl a2a list-functions
kubectl a2a execute <function_name> -P key=value
kubectl a2a agent
# Krew or release binary name:
kubectl kubestellar --help
kubectl kubestellar list-functions
kubectl kubestellar execute <function_name> -P key=value
kubectl kubestellar agent
Notes:
- The plugin entrypoint is provided by the executable
kubectl-a2a, which is installed via the Python package entry points. This makeskubectl a2abehave the same as running thekubestellarCLI directly. - With
uv tool install, executables are placed under~/.local/binby default. Ensure it is on yourPATH.
Install via Krew
Once a release is published, you can use the generated Krew manifest to install:
# Install from the generated manifest attached to a release (name: kubestellar.yaml)
kubectl krew install --manifest=kubestellar.yaml
# Use the plugin
kubectl kubestellar --help
To make installation available via the central krew-index and install like kubectl krew install kubestellar, submit a PR to https://github.com/kubernetes-sigs/krew-index with the kubestellar.yaml manifest from your release.
Direct install (no package manager)
You can install the plugin by placing a binary named kubectl-kubestellar (or kubectl-kubestellar.exe on Windows) on your PATH. Alternatively, the Python package installs kubectl-a2a which kubectl also discovers.
Option A — use a release binary (kubectl-kubestellar):
# Download the tarball for your OS/arch from the latest Release
tar -xzf kubectl-kubestellar-<os>-<arch>.tar.gz
chmod +x kubectl-kubestellar
mv kubectl-kubestellar ~/.local/bin/ # or any dir on your PATH
# verify
which kubectl-kubestellar
kubectl plugin list | grep kubestellar || true
kubectl kubestellar --help
Option B — build locally and copy to PATH (kubectl-kubestellar):
uv sync --dev
uv pip install pyinstaller
uv run pyinstaller --onefile --name kubectl-kubestellar --distpath dist --workpath build packaging/entry_kubectl_a2a.py
install -m 0755 dist/kubectl-kubestellar ~/.local/bin/kubectl-kubestellar
Option C — reuse the Python entrypoint by symlink (alias a2a):
# If you've installed the package via uv tool/pipx and have `kubestellar` on PATH,
# create a symlink named kubectl-kubestellar pointing to it
ln -sf "$(command -v kubestellar)" ~/.local/bin/kubectl-kubestellar
kubectl kubestellar --help
Windows:
- Use the
.exefrom the Windows release archive and place it in a directory on your%PATH%. - Or create
kubectl-a2a.batforwarding tokubestellar.exeif using a symlink alternative isn’t convenient.
How kubectl plugin discovery works (Kubectl Plugins)
- kubectl discovers plugins by searching your
PATHfor executables namedkubectl-<name>(per the official docs). Examples:kubectl-kubestellar,kubectl-a2a. - When you run
kubectl <name> ..., kubectl executes the firstkubectl-<name>found onPATHand passes through the arguments. - List discovered plugins with
kubectl plugin list. - Krew is a plugin manager that installs such binaries under its own path;
kubectl krew install <name>makes<name>available askubectl <name>. - This project provides
kubectl-kubestellar(for Krew and binary releases) andkubectl-a2a(Python entrypoint). Once on your PATH, usekubectl kubestellar ...orkubectl a2a ....
Reference: https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/
Get the latest version
For users who installed via uv tool from GitHub:
# Install latest from main
uv tool install --upgrade 'git+https://github.com/kubestellar/a2a@main'
# Or upgrade an existing install (uses original source spec)
uv tool upgrade kubestellar
For pipx installs:
pipx upgrade kubestellar
# or reinstall from GitHub
pipx install --force 'git+https://github.com/kubestellar/a2a@main'
Releasing
This repo includes an automated release workflow that builds platform-specific plugin binaries and publishes a Krew manifest.
Steps:
- Create a version tag and push, e.g.:
git tag v0.1.0 && git push origin v0.1.0 - Or run manually via Actions → Release → Run workflow (optional tag input).
- Or publish a GitHub Release with tag
vX.Y.Zto trigger the workflow. - GitHub Actions workflow
.github/workflows/release.ymlruns and produces:- Tarballs for
kubectl-kubestellaron Linux amd64, macOS amd64/arm64, Windows amd64 - SHA256 checksums
kubestellar.yamlKrew manifest with versioned asset URLs and checksums- A GitHub Release containing the above assets
- Tarballs for
Users can then install via Krew using the attached manifest, or you can submit it to the central krew-index.
Troubleshooting release CI
- If the workflow didn’t run: ensure tag matches
v*.*.*, Actions are enabled, and branch protections allow workflows. - For manual runs: use the
workflow_dispatchentry. Optionally provide thetaginput. - For Release events: make sure the release is “published” (not draft/prerelease) and has a tag like
vX.Y.Z.
Local Plugin Testing
You can test kubectl a2a locally in two ways.
- Using uv tool (recommended):
# From the repo root
uv tool uninstall kubectl-a2a || true
uv tool uninstall kubestellar || true
uv tool install .
# Ensure ~/.local/bin is on PATH, then verify
which kubectl-a2a
kubectl plugin list | grep a2a || true
kubectl a2a --help
kubectl a2a list-functions
# Debug kubectl plugin discovery if needed
kubectl -v=6 a2a --help
- Using a locally built single-file binary (optional):
# Build the binary
uv sync --dev
uv pip install pyinstaller
uv run pyinstaller --onefile --name kubectl-a2a --distpath dist --workpath build packaging/entry_kubectl_a2a.py
# Put it on PATH for this shell and test
export PATH="$PWD/dist:$PATH"
kubectl plugin list | grep a2a || true
kubectl a2a --help
Notes:
- If your shell caches command paths, run
hash -r(bash/zsh) after replacing the binary. - On Windows, ensure
dist/kubectl-a2a.exeis on your PATH. - If you use
piprather thanpipx, ensure the Python scripts directory is on yourPATH(e.g.,~/.local/binon Linux,~/Library/Python/<version>/binon macOS, or the virtual environment'sbin). - For isolated installs,
pipxis the simplest way to getkubectl-a2aonto yourPATH.
AI Provider Configuration
The agent supports multiple AI providers:
Available Providers
- OpenAI (GPT-4, GPT-4o, etc.)
- Google Gemini (gemini-1.5-flash, gemini-1.5-pro, etc.)
Setting Up API Keys
# Set OpenAI API key
uv run kubestellar config set-key openai YOUR_OPENAI_API_KEY
# Set Gemini API key
uv run kubestellar config set-key gemini YOUR_GEMINI_API_KEY
# Set default provider
uv run kubestellar config set-default gemini
# List configured providers
uv run kubestellar config list-keys
# Show current configuration
uv run kubestellar config show
Using Different Providers
# Use default provider
uv run kubestellar agent
# Use specific provider
uv run kubestellar agent --provider gemini
uv run kubestellar agent --provider openai
MCP Server Setup
Add to MCP server (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"kubestellar": {
"command": "uv",
"args": ["run", "kubestellar-mcp"],
"cwd": "/path/to/a2a"
}
}
}
Documentation
📖 Complete Documentation: https://kubestellar.io/docs/a2a
License
This project is licensed under the Apache 2.0 License - see the LICENSE file for details.
Acknowledgments
- Built with MCP SDK
- Inspired by the KubeStellar project for multi-cluster Kubernetes management
- Thanks to all contributors and the open-source community
Made with ❤️ by the KubeStellar community
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。