プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。レビューとアカウント機能は今後のステップで始まります。
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

podkop-mcp

作者:mikel38487バージョン 0.2.2i★ –iパソコンで動く
レジストリ名io.github.mikel38487/podkop-mcp

インストール

概要

作者による説明(英語の原文)

MCP server for managing Podkop and Forkop on OpenWrt over SSH

PopNx MCPの3つの柱

この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。

できること

このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。

  • 接続方法: パソコンで動く
  • トランスポート: stdio
  • カテゴリ: 開発者ツール
  • 入力が必要なもの:PODKOP_MCP_SSH_HOST

インストール

使っているAIアプリを選んで、設定をコピーしてください。

インストールの前に

  • 基本チェック:1項目中1項目に合格
  • あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
  • 自分で入力するもの: PODKOP_MCP_SSH_HOST, PODKOP_MCP_SSH_USER, PODKOP_MCP_SSH_KEY_PATH, PODKOP_MCP_HOST_KEY_POLICY, PODKOP_MCP_READ_ONLY

必要なもの

  • PyPIPythonのuvのインストール(uvxコマンドに必要)

どのアプリを使っていますか?

上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。

Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます

{
  "mcpServers": {
    "podkop": {
      "command": "uvx",
      "args": [
        "podkop-mcp"
      ],
      "env": {
        "PODKOP_MCP_SSH_HOST": "your-value",
        "PODKOP_MCP_SSH_USER": "your-value",
        "PODKOP_MCP_SSH_KEY_PATH": "your-value",
        "PODKOP_MCP_HOST_KEY_POLICY": "your-value",
        "PODKOP_MCP_READ_ONLY": "your-value"
      }
    }
  }
}

ターミナルでこれを実行します

claude mcp add podkop --env PODKOP_MCP_SSH_HOST=your-value --env PODKOP_MCP_SSH_USER=your-value --env PODKOP_MCP_SSH_KEY_PATH=your-value --env PODKOP_MCP_HOST_KEY_POLICY=your-value --env PODKOP_MCP_READ_ONLY=your-value -- uvx podkop-mcp

動かす前に、空欄の値を入力してください。

Cursorで開く

または、設定を自分でコピーする

プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます

{
  "mcpServers": {
    "podkop": {
      "command": "uvx",
      "args": [
        "podkop-mcp"
      ],
      "env": {
        "PODKOP_MCP_SSH_HOST": "your-value",
        "PODKOP_MCP_SSH_USER": "your-value",
        "PODKOP_MCP_SSH_KEY_PATH": "your-value",
        "PODKOP_MCP_HOST_KEY_POLICY": "your-value",
        "PODKOP_MCP_READ_ONLY": "your-value"
      }
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

VS Codeで開く

または、設定を自分でコピーする

プロジェクトの .vscode/mcp.json に貼り付けます

{
  "servers": {
    "podkop": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "podkop-mcp"
      ],
      "env": {
        "PODKOP_MCP_SSH_HOST": "your-value",
        "PODKOP_MCP_SSH_USER": "your-value",
        "PODKOP_MCP_SSH_KEY_PATH": "your-value",
        "PODKOP_MCP_HOST_KEY_POLICY": "your-value",
        "PODKOP_MCP_READ_ONLY": "your-value"
      }
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。

選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。

自分で入力する値

  • PODKOP_MCP_SSH_HOST 必須 env
    Router address
  • PODKOP_MCP_SSH_USER env
    SSH user (root on OpenWrt)
  • PODKOP_MCP_SSH_KEY_PATH env
    Path to the private SSH key
  • PODKOP_MCP_HOST_KEY_POLICY env
    reject (default), accept-new or ignore
  • PODKOP_MCP_READ_ONLY env
    1 blocks all writes

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

できること

パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月9日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名は、リポジトリを所有するGitHubアカウント mikel38487 で確認済みです

  • … 未チェック

    今もメンテナンスされている

    このリポジトリはまだGitHubから読み取っていません

  • … 未チェック

    ライセンスがある

    このリポジトリはまだGitHubから読み取っていません

  • – 対象外

    エンドポイントが応答する

    これはパソコンで動くため、インターネット上のエンドポイントはありません

  • – 対象外

    OAuthでサインイン

    パソコンで動き、代わりにローカルの設定を使います

  • … 未チェック

    ツールの説明に隠れた指示がない

    パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです

開発者ツールのほかのサーバーとの比較i

  • このカテゴリのほかの5570件のうち0%よりスターが多い
  • このカテゴリのほかの5570件のうち73%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの5570件のうち100%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

podkop-mcpは安全ですか?

当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

入力が必要なもの:PODKOP_MCP_SSH_HOST

パソコンで動きますか、それともクラウドですか?

あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は–、最新バージョン(0.2.2)がレジストリに届いたのは8 日前です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。

代わりに使えるものは?

同じカテゴリには:GitHub, Desktop Commander, Cloudflare MCP

代わりの候補

同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。

カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

GitHub

Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.

作者:github広く使われている★ 3.4万6 日前更新

パソコンでもクラウドでも

Desktop Commander

MCP server for terminal commands, file operations, and process management

作者:wonderwhy-er広く使われている↓ 71万/週★ 1万18 日前更新

パソコンで動く

Cloudflare MCP

Cloudflare MCP servers

作者:cloudflare広く使われている★ 444614 か月前更新

クラウドで動く✓ mcp.cloudflare.com

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

podkop-mcp

Languages: English · Русский

MCP server for managing [Podkop](https://github.com/itdoginfo/podkop) and [Forkop](https://github.com/ushan0v/forkop) on OpenWrt over SSH.

Stop editing UCI by hand, remembering the uci add_list trap and passing base64-wrapped scripts to PowerShell. Ask your MCP client to add domains, list sections, inspect live connections, reload the service and roll back a bad change — with dry-run, backups and redaction built in.

Status: alpha. Live read-only tested against Forkop 1.0.5 and Forkop 2.0.0

(OpenWrt 25.12.6). Write/apply paths were verified in disposable OpenWrt

Docker containers with real Forkop 2.0.0 and Podkop 0.7.24. Backend schema is

revalidated every PODKOP_MCP_PROFILE_TTL seconds (default 30).

Why

Managing Podkop/Forkop by hand is error-prone:

  • Forkop 1.x stores domains in one space-separated string (section.domain). One uci add_list turns it into an exact-match domain list and subdomains silently stop being routed.
  • Forkop 2.x uses a multi-line section.destinations text with # comments.
  • Podkop uses a real UCI list (section.user_domains).
  • Forkop reloads asynchronously; a failed reload must be detected and rolled back.
  • Subscription URLs and proxy strings are secrets and end up in logs.

Unlike MCP servers that run on the router itself, podkop-mcp runs on the administrator's machine, talks to OpenWrt over SSH and understands Podkop/Forkop semantics: dry-run, backups, rollback and secret redaction. All of that is hidden behind typed MCP tools.

Features

  • SSH transport with a key from MCP parameters: key file, inline base64/PEM, or ~/.ssh/config alias. Host key verification, keepalive, timeouts.
  • Backend detection: Forkop 1.x, Forkop 2.x, Podkop; capabilities derived from the installed CLI.
  • Full UCI access via ubus call uci get JSON and uci for writes. Any option can be read or changed; the package is restricted to forkop/podkop.
  • Domain operations that preserve the backend format: add/remove/replace, search coverage, suggest uncovered hosts from live connections, check FakeIP.
  • Sections: list, inspect, create, update, enable/disable, delete with cascade of child subscriptions/URLTest items.
  • Subscriptions and proxy groups: list, add, delete, update, test latency, select a proxy (Forkop 2.x).
  • Monitoring: service/system status, health checks, logs, live connections, traffic rates, proxy delays.
  • Safety: mutating tools are dry-run by default; apply=true creates a router-side backup, commits UCI, reloads and verifies. On failure the backup is restored automatically. PODKOP_MCP_READ_ONLY=1 blocks all writes.
  • Secrets redacted by default: subscription URLs, proxy_string, keys, tokens. Raw export requires reveal_secrets=true.
  • Bilingual docs (English / Russian) and CI.

Support matrix

CapabilityForkop 1.xForkop 2.xPodkop
UCI packageforkopforkoppodkop
Domain optiondomain (string)destinations (multiline)user_domains (list)
Community listsyesyesyes
Rule setsnoyesyes
Clash APIaction CLIHTTP CLIaction CLI
Proxy runtime select—yes—
Read-only monitoringyesyesyes

Install

Requirements:

  • Python 3.10+ (CI tests 3.10 through 3.14)
  • OpenWrt router with Forkop or Podkop installed
  • SSH key access to the router

Install from PyPI:

pip install podkop-mcp

or run without installing

uvx podkop-mcp

Install from source:

git clone https://github.com/mikel38487/podkop-mcp.git

cd podkop-mcp python -m venv .venv . .venv/bin/activate # Windows: .venv\Scripts\activate pip install -e .

Configure your MCP client (Claude Desktop, Cursor, DSH, etc.):

{

"mcpServers": { "podkop": { "command": "podkop-mcp", "env": { "PODKOP_MCP_SSH_HOST": "192.168.1.1", "PODKOP_MCP_SSH_USER": "root", "PODKOP_MCP_SSH_KEY_PATH": "C:/Users/ /.ssh/router_key", "PODKOP_MCP_KNOWN_HOSTS": "C:/Users/ /.ssh/known_hosts", "PODKOP_MCP_HOST_KEY_POLICY": "reject" } } } }

Or use an existing ~/.ssh/config alias:

"env": {

"PODKOP_MCP_SSH_CONFIG_HOST": "router-home", "PODKOP_MCP_SSH_KEY_PATH": "C:/Users/ /.ssh/router_key", "PODKOP_MCP_HOST_KEY_POLICY": "reject" }

Host key policy defaults to reject. Add the router key to known_hosts first (for example with a normal ssh login). accept-new is a one-time TOFU convenience for a new router; it does not protect against a MITM on the first connection.

Ask the model:

  • “Run podkop_doctor and show the backend version.”
  • “Add example.com and cdn.example.com to main; show me the diff first.”
  • “List sections with domain counts.”
  • “Which hosts in live connections are not covered by any section?”
  • “Show traffic for the last 2 seconds and the top clients.”
  • “Disable the youtube section and reload.”

Documentation

How write operations work

dry-run (default)

→ read config, compute normalized diff, show uci commands

apply=true → cp /etc/config/ /etc/podkop-mcp/backups/ - .uci → uci set/add_list/delete (package restricted to forkop/podkop) → uci commit → /etc/init.d/ reload → poll get_status up to ~35 s → on failure: restore backup, commit, reload → return diff, backup id, health summary

No command is executed through a shell string built from user input; values are shell-quoted with shlex and the script is sent to sh via stdin. Paths are validated; no base64 applet is required on the router.

Tool overview

GroupTools
Systempodkop_doctor, podkop_status, podkop_system_info, podkop_health, podkop_logs, podkop_cli, podkop_core_features, podkop_import_check, podkop_installer_status, podkop_installer_log
Configpodkop_config_get, podkop_config_export, podkop_option_get/set/delete, podkop_backup_create/list/restore
Sectionspodkop_sections_list, podkop_section_get/create/update/delete/enable, podkop_tunnel_create, podkop_child_create
Domainspodkop_domains_list/add/remove/replace/find/suggest, podkop_domain_check
Listspodkop_community_lists_get/update
Connectionspodkop_connections_config, podkop_subscription_add/delete/update, podkop_proxies_list, podkop_proxy_select/test
Monitoringpodkop_monitor_snapshot, podkop_connections_live, podkop_traffic
Servicepodkop_service_action, podkop_lists_update

Full reference: docs/tools.md.

Configuration reference

VariableDefaultMeaning
PODKOP_MCP_SSH_HOST—Router address
PODKOP_MCP_SSH_PORT22SSH port
PODKOP_MCP_SSH_USERrootSSH user
PODKOP_MCP_SSH_KEY_PATH—Private key path
PODKOP_MCP_SSH_KEY—Inline private key (PEM)
PODKOP_MCP_SSH_KEY_B64—Inline key, base64
PODKOP_MCP_SSH_KEY_PASSPHRASE—Key passphrase
PODKOP_MCP_SSH_PASSWORD—Password instead of a key (secret: pass it through the environment, never commit it)
PODKOP_MCP_SSH_CONFIG_HOST—Alias from ~/.ssh/config
PODKOP_MCP_KNOWN_HOSTS~/.ssh/known_hostsHost key file
PODKOP_MCP_HOST_KEY_POLICYrejectreject, accept-new, ignore
PODKOP_MCP_CONNECT_TIMEOUT8SSH connect timeout, seconds
PODKOP_MCP_COMMAND_TIMEOUT45Command timeout, seconds
PODKOP_MCP_BACKENDautoauto, forkop or podkop; the requested CLI must be installed
PODKOP_MCP_READ_ONLY0Block all writes
PODKOP_MCP_BACKUP_DIR/etc/podkop-mcp/backupsRouter-side backups
PODKOP_MCP_BACKUP_KEEP30Number of backups to keep
PODKOP_MCP_MAX_OUTPUT_BYTES200000Cap on captured command output, bytes
PODKOP_MCP_LOG_LEVELINFOServer log level on stderr (DEBUG, INFO, WARNING, ERROR, CRITICAL)
PODKOP_MCP_PROFILE_TTL30Seconds before the backend profile is revalidated against the router
PODKOP_MCP_TARGETS—JSON with multiple routers
PODKOP_MCP_CONFIG—Path to a JSON file with multiple routers; takes precedence over PODKOP_MCP_TARGETS and the single-router variables
PODKOP_MCP_TARGET_NAMErouterName of the single router defined by PODKOP_MCP_SSH_HOST / PODKOP_MCP_SSH_CONFIG_HOST; ignored when a JSON target list is used

To manage several routers, put them in a JSON file and point PODKOP_MCP_CONFIG at it:

{

"targets": { "home": {"host": "192.0.2.10"}, "office": {"host": "192.0.2.11", "port": 2222} }, "default_target": "home" }

"env": {

"PODKOP_MCP_CONFIG": "~/.config/podkop-mcp/targets.json" }

The default_target router (or the first one when it is omitted) is used when a tool call does not pass target; pass "target": "office" to use the other router. PODKOP_MCP_TARGET_NAME does not select a target from this file — it only names the single router defined by PODKOP_MCP_SSH_HOST / PODKOP_MCP_SSH_CONFIG_HOST.

Testing

python -m pytest -q                 # unit + fake router + live/docker skipped

python scripts/smoke_mcp.py # MCP stdio handshake PODKOP_MCP_LIVE=1 python -m pytest -q -m live # read-only, real router

For the real SSH/UCI/apply path there is an OpenWrt Docker container: real openwrt/rootfs userland, real ubus/rpcd/dropbear/uci, with stubs for the Forkop CLI/init (no sing-box/nft).

.\scripts\openwrt-docker.ps1

. .\.tmp\openwrt-env.ps1 .\.venv\Scripts\python.exe -m pytest -q -m docker_ssh .\scripts\openwrt-docker.ps1 -Stop

This is a contai

冒頭だけを表示しています。続きはリポジトリで読めます

PopNxに聞く