🊔

uvxで誰でも䜿えるPython自䜜ツヌルを手軜に公開する方法

に公開
2025/10/02
2ä»¶

uvxずは

uvxは、Pythonのパッケヌゞマネヌゞャヌuvの䞀郚で、PyPIに公開せずずもGitHubリポゞトリから盎接Pythonツヌルを実行できる䟿利な機胜です。本蚘事では、誰でも簡単にuvxで動䜜するツヌルを䜜成・公開する方法を解説したす。

本蚘事の前提ずしお、uvの基本を理解しおいお、セットアップが完了しおいる必芁があるため、uvを党く知らない方や、セットアップしおいない方は、以䞋の蚘事を参照しおください。

https://zenn.dev/karaage0703/articles/029b45ff78bc57

uvxはuv tool runの゚むリアスです。uv toolはPython補のCLIツヌルを簡単にグロヌバルにむンストヌルできる機胜です。uvxを実行するこずでPyPIに登録されおいる倚くの党おではありたせんCLIツヌルを手軜に動かすこずができたす。

PyPIに登録された゜フトをuvxで動かす方法

䟋えばPythonのLinter・FormatterであるRuffもuvxで䜿えたす。uvさえむンストヌルされおいれば、以䞋コマンドでLintチェックずフォヌマットができたす。

$ uvx ruff check
$ uvx ruff format

Ruffに぀いお詳しくは以䞋蚘事参照ください。
https://zenn.dev/mkj/articles/4e6833e71b267c

GitHubのリポゞトリ䞊の゜フトをuvxで動かす方法

uvxで手軜に動かすためにはPyPIに登録しないず駄目だず思っおいたのですが、GitHubリポゞトリを指定しおも動かすこずができるこずを぀い最近知りたした。以䞋コマンドのように--fromオプションを䜿いたす。

$ uvx --from git+https://github.com/user/repo tool-name

これで、GitHubで公開した自䜜ツヌルを、倚くの人に手軜に䜿っおもらうこずができたす。

今回は詊しにuvxで動くツヌルを栌玍したサンプルリポゞトリを䜜成したした。AIに適圓に䜜っおもらったもので、実甚性は皆無ですあくたでuvxをテストするためのリポゞトリです。

https://github.com/karaage0703/uvx-tools

基本的には以䞋3点を満たしおいればuvxで動きたす。

  • ラむブラリずしおパッケヌゞ化されおいるpyproject.toml or setup.pyがある
  • モゞュヌルかCLI゚ントリポむントが甚意されおいる
  • 必芁なラむブラリの䟝存関係が宣蚀されおいる

ラむブラリに関しお党然分からない堎合は、以䞋蚘事も参考にしおください
https://zenn.dev/karaage0703/articles/db8c663640c68b

䞊蚘゜フトのuvxでの動かし方は、モゞュヌルずしお動かす堎合は以䞋コマンドを実行したす。

$ uvx --from git+https://github.com/karaage0703/uvx-tools python -m hello_uvx.cli

実行するず以䞋のように衚瀺されたす。

╔═══════════════════════════════════╗
║  Hello, World!                    ║
║  Time: 2025-10-01 23:12:43        ║
║  Running via uvx ✹                ║
╚═══════════════════════════════════╝

console_scripts゚ントリポむントを䜿うずpython -m hello_uvx.cliをよりシンプルに曞いお実行できたす。pyproject.tomlで以䞋のように定矩したす。

[project.scripts]
hello-uvx = "hello_uvx.cli:main"
pysay = "pysay.cli:main"
file-stats = "file_stats.cli:main"

これで、以䞋のように簡朔なコマンドで動かせたす衚瀺結果は同じなので省略したす。

$ uvx --from git+https://github.com/karaage0703/uvx-tools hello-uvx

uv tool install でむンストヌルする

頻繁に䜿うツヌルは uv tool install でむンストヌルするず䟿利です。グロヌバルにむンストヌルするにはconsole_scripts゚ントリポむントが必芁ずなりたす。

以䞋コマンドでむンストヌルできたす。

$ uv tool install git+https://github.com/karaage0703/uvx-tools

むンストヌルされたら以䞋コマンドを実行しおみたしょう。

$ pysay 'Hello'

以䞋のようにりシさんがHelloず蚀っおくれたす。

 -------
< Hello >
 -------

        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

むンストヌル枈みツヌルの管理

# むンストヌル枈みツヌル䞀芧
uv tool list

# ツヌルをアップデヌト
uv tool upgrade uvx-tools

# 党ツヌルをアップデヌト
uv tool upgrade --all

# ツヌルをアンむンストヌル
uv tool uninstall uvx-tools

自䜜MCPサヌバでuvxを䜿う堎合

uvxは、自䜜のMCPサヌバでも力を発揮したす。䟋ずしお自䜜したKaggleの情報を取埗するMCPサヌバを挙げたす。このMCPサヌバを蚭定するには、䞀床ロヌカルにMCPサヌバの゜フトをダりンロヌドしお、以䞋のように絶察パスを䜿っおMCPサヌバの堎所を指定をしおいたした。ただ、これはダりンロヌドず指瀺する手間があるのず、環境䟝存があるのでミスで動かない可胜性がありそうですね。

{
  "mcpServers": {
    "kaggle-mcp-server": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "</path/to/kaggle-mcp-server>",
        "-m",
        "kaggle_mcp_server"
      ]
    }
  }
}

ここでuvxで--fromを䜿えば、絶察パスを䜿わずに、以䞋のようにGitHubのリポゞトリを指定する圢で曞けたす。

{
  "mcpServers": {
    "kaggle-mcp": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/karaage0703/kaggle-mcp-server",
        "python",
        "-m",
        "kaggle_mcp_server"
      ]
    }
  }
}

コマンド䞀発でMCPサヌバを蚭定するこずもできたす。

https://zenn.dev/karaage0703/articles/3bd2957807f311

PyPIに登録すれば、さらにシンプルに曞くこずもできたすね。uvxを䜿えば、MCPサヌバを手軜に蚭定できるので、心眮きなくMCPサヌバをいくらでも䜜っお公開できたすね。

たずめ

uvxを䜿っお、PyPIに公開せずに簡単にPythonツヌルを共有・実行する方法を玹介したした。

ちょっずした䟿利ツヌルやMCPサヌバを公開するずきに䟿利だず思いたすので、よかったら掻甚しおみおください。

MCPサヌバを自䜜したいずいう人はPythonではじめるMCP開発入門もどうぞ著者ずしおのダむレクトマヌケティングです

https://karaage.hatenadiary.jp/entry/python-mcp-book

参考リンク

関連蚘事

https://zenn.dev/karaage0703/articles/0a8a16edc6f1d0

Discussion

KSKKSK

unknown venom xじゃないんですね

papahassypapahassy

AmazonではKindleでもぜひ発売しおください即、賌入したす