GitHub
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
作者による説明(英語の原文)
System-automation agent MCP server for opencode/claude/pi: guarded shell, dry-run-first, audited.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"vtai-agent": {
"command": "uvx",
"args": [
"vtai-agent"
]
}
}
}ターミナルでこれを実行します
claude mcp add vtai-agent -- uvx vtai-agentプロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"vtai-agent": {
"command": "uvx",
"args": [
"vtai-agent"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"vtai-agent": {
"type": "stdio",
"command": "uvx",
"args": [
"vtai-agent"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月8日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント velsrocky で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.7.0)がレジストリに届いたのは16 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。
同じカテゴリには:GitHub, Desktop Commander, Cloudflare MCP
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
MCP server for terminal commands, file operations, and process management
Cloudflare MCP servers
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
System-automation agent for your machine, exposed as an MCP server for opencode / Claude Code / pi — and drivable directly via the vtai CLI.
| Tool | What it does |
|---|---|
system_info | Read-only machine snapshot (CPU, RAM, disks, load, GPU) plus the config and guardrails in effect |
run_shell | Allowlisted shell commands, sandboxed (see below) |
organize_files | Content-aware directory cleanup inside writable roots |
backup_sync | rsync incremental backup with verification; --delete is opt-in |
transcode_media | VAAPI-accelerated batch video transcode; never touches originals |
disk_audit | Read-only scan for reclaimable disk space |
delegate_coding | Hand tasks to opencode/claude/pi; git snapshot + verify + rollback; require human approval by default |
auto_mode | Autonomous loop: hand a goal to a coding CLI, review the reply, iterate until it matches |
inspect_application | REA-powered static analysis of an app under guardrails: deny-glob check → quarantine copy → minimal-env run → evidence digest in the audit trail → optional judge pass (off until enabled in config) |
guardrails.dry_run_default) — previews never touch disk.paths.writable_roots, resolved paths defeat ../symlink escapes; guardrails.deny_globs protect secrets.trusted_bin_dirs, carry no exec-enabling flags, and every path argument passes the same checks.KILL file in data_dir to abort executing tools.CIRCUIT BREAKER instruction the looping model can't miss.budget_usd_per_run aborts an orchestrated run when accrued token cost exceeds it; spend is recorded per run.data_dir, each invocation (orchestrated, MCP, or CLI) attributed to a run row.| Requirement | Notes | ||
|---|---|---|---|
| OS | Linux, macOS, or Windows | all three run in CI (blocking since 0.6.0) | |
| Python | 3.14+ | pinned by .python-version; uv fetches it for you | |
| uv | >= 0.13.1 | `curl -LsSf https://astral.sh/uv/install.sh \ | sh` |
| Planner LLM | one of: Ollama, any OpenAI-compatible endpoint, or a cloud key | see Choosing a model | |
| *rsync* | optional | required by backup_sync; without it the tool fails closed | |
| *ffmpeg* | optional | required by transcode_media and the voice helpers | |
| *Lemonade Server* | optional | speech in/out for agent-listen / agent-speak |
git clone https://github.com/velsrocky/vtai-agent.git
cd vtai-agent uv sync --dev
uv sync needs uv >= 0.13.1 (the lockfile is revision = 5; the floor is declared as [tool.uv] required-version, so an older uv says so plainly instead of failing on a lockfile parse).
The agent reads one TOML file. Which one is resolved in this order:
$VT_CONFIG — explicit overrideconfig/settings.toml next to the package (i.e. the clone you just made)~/.vtaiagent/settings.toml — the per-user fileA machine with no config file anywhere fails loudly on first use — the built-in defaults leave nothing protected (shell_allowlist empty) so nothing runs, and vtai info says so plainly ("no config file there"). vtai init writes a starter config; vtai init --doctor runs the full preflight right after it.
A fresh clone contains the maintainer's config (their provider, their writable roots), so point the agent at your own file instead of editing the tracked one:
export VT_CONFIG="$HOME/.vtaiagent/settings.toml"
uv run vtai init # writes a starter config there + creates the dirs
Put that export in your shell profile so every later command (and the MCP server) picks it up.
vtai init creates ~/.vtaiagent (audit DB + data dir), ~/Downloads, and ~/Documents/vt-data, and writes a starter config with safe defaults: dry_run_default = true, deny_globs for ~/.ssh, ~/.gnupg, ~/.aws and **/.env, and writable roots limited to ~/Downloads, ~/Documents/vt-data and ~/.vtaiagent/tmp. Use vtai init --doctor to run the preflight immediately after writing. It is safe to re-run.
Check which config you ended up with — vtai info names the file and its origin:
uv run vtai info
Alternative: keep the checkout's config and override with env vars
A .env file (gitignored; copy .env.example) in the working directory overrides any setting, using the VT_ prefix with __ for nesting:
VT_LOCAL__BASE_URL=http://localhost:13305/api/v1
VT_LOCAL__MODEL= VT_ACTIVE_PROVIDER=local
This is how a machine with no Ollama points the agent at a Lemonade server instead. The .env is read from the current working directory, so run the CLI from the checkout, or export the variables in your shell.
The planner/judge model comes from active_provider:
local — any OpenAI-compatible endpoint: Ollama (http://localhost:11434/v1), llama.cpp, vLLM, LM Studio, Lemonade. No API key.anthropic / openai — cloud models; put ANTHROPIC_API_KEY or OPENAI_API_KEY in .env.Set cost_per_1k_input / cost_per_1k_output in the provider block to make budget_usd_per_run meaningful; without them the agent falls back to the model's native price table.
Start with the preflight — it checks uv, your config, the writable roots, what is protected, the optional tools, the model endpoint, the MCP registration and any delegate waiting for review:
uv run vtai doctor
VT-AIAgent doctor — v0.6.2
✓ agent version 0.6.2 ✓ uv 0.13.1 ✓ config file /Users/you/.vtaiagent/settings.toml (user-level) ✓ config valid no issues ✓ writable roots 3 present ✓ protected paths 4 deny globs ✓ shell allowlist 22 binaries ✓ model endpoint http://localhost:11434/v1 ! optional tools not installed: ffmpeg (for transcode_media, voice helpers) ✓ mcp registration opencode (global) ✓ pending approvals none
It exits non-zero if something needs fixing. Then, to try the pieces:
uv run vtai info # config, provider, guardrails
uv run vtai tools # the registered tools uv run vtai run system_info # a read-only call, no LLM involved uv run vtai goal --dry-run "list my Downloads" # full loop with the model
scripts/register-mcp.sh # opencode (global), claude (user), pi (CLI)
opencode's registration lands in ~/.config/opencode/opencode.jsonc and merges with your existing providers. The script registers an absolute uv path on purpose: a bare uv fails with NotFound: ChildProcess.spawn (uv ...) when the client spawns the server from a daemon with a minimal PATH.
uv sync # install
uv run vtai init # create/validate config, dirs, writable roots uv run vtai info # show config uv run vtai tools # list tools uv run vtai run system_info # invoke a tool uv run vtai run run_shell --params '{"command":"ls ~/Downloads","dry_run":true}' scripts/register-mcp.sh # register with opencode / claude
To get the vtai CLI outside the checkout, install it as an editable tool so it tracks your working copy:
uv tool install --editable /path/to/vtai-agent # -> ~/.local/bin/vtai
Install into another project as a dependency with uv add git+https://github.com/velsrocky/vtai-agent@v0.7.0, or pull the image with docker build -t vtai-agent ..
PyPI: uv tool install vtai-agent (or pipx install vtai-agent) — publishes on v* tags via Trusted Publishing with build attestations (see .github/workflows/publish.yml). The comment above is the PyPI-package proof the official MCP registry expects; server.json carries the registry manifest (io.github.velsrocky/vtai-agent, stdio) alongside a metadata-consistency gate in the publish workflow. Only install from these sources; a similar repository name does not establish provenance.
Register with the official MCP registry after a PyPI release:
mcp-publisher auth --oauth2-github
mcp-publisher publish server.json
Safety claims are probes, not prose: vtai certify runs the executable guardrail-compliance suite (deny-glob containment, dotdot/symlink escapes, fail-closed shell, injected-argv resistance, dry-run-first, kill switch, audit exactness, echo-loop breaker, and the delegate's verify-then-trust loop with scripted-fake rollback + approval-gate probes) and emits a digest-stamped certificate; exit 0 gates the release in CI. See docs/certification.md.
vtai serve --transport http --port 8765 --token $VT_HTTP_TOKEN exposes the same guarded tools over MCP StreamableHTTP at /mcp. The bearer token is required when binding anything other than localhost; the server refuses to bind externally without one.
uv sync --dev
uv run pytest tests/ -v uv run ruff check src/ tests/ uv run python scripts/generate_tool_catalog.py --check # tool-catalog doc drift
The config file is resolved as described in Configure: $VT_CONFIG → the checkout's config/settings.toml → ~/.vtaiagent/settings.toml. Env overrides use the VT_ prefix with __ nesting (e.g. VT_GUARDRAILS__DRY_RUN_DEFAULT=false). Config is validated at startup (validate_settings) — a bad deny_globs pattern or a missing writable root fails fast, not mid-run.
Windows: the shell sandbox needs the allowlisted binaries to resolve, and a fresh Windows runner does not put Git for Windows' coreutils on PATH. Install Git for Windows and prepend its usr\bin (this is what CI does):
Add-Content $env:GITHUB_PATH "C:\Program Files\Git\usr\bin" # CI
Everything else (install, config, MCP registration) is the same on all three platforms.
vtai goal runs a bounded ReAct-style agent loop. Each step the model either emits one fenced-JSON tool call (parsed, guarded, executed, result fed back) or a final natural-language answer. Bounds enforced every step: max_steps, kill switch, and budget_usd_per_run. A lonely dry_run: true text blob that fails to parse or misses its tool key is retried with a corrective note instead of ending the run as "success"; the run mode is authoritative — the model cannot override it — and every tool call is persisted as a Step row and audit entry. If a paid provider's spend can't be determined (no cost_per_1k_* config and no native cost), the run fails closed rather than reporting free. The system prompt describes the machine's actual OS.
We use a text protocol rather than native function-calling on purpose: the local Ollama models on this box emit tool calls as raw JSON text even when native tool schemas are provided (verified 2026-10-03 with qwen2.5-coder:7b), so the text p
冒頭だけを表示しています。続きはリポジトリで読めます