
codexなどのツールのインストールはHomebrewなどでも簡単にできるようになっていますが、 MCPサーバー用のツールは別途管理する必要があります。
多くはPythonやNode.jsのパッケージとしてuvx/npxなどを使って使う方法が 紹介されていますが、 全部まとめてmiseで管理するようにしました。
よくある方法
MCPサーバー用のツールはPythonやNode.jsのパッケージとして公開されていることが多いです。
これらのツールは隔離された開発環境にpip
やnpm
で直接インストールすることはありますが、
グローバルインストールする方法はあまり推奨されていません。
色々なツールをインストールしているとバージョンの競合などが起きやすくなるためです。
そこでよくある方法としてはuvx
やnpx
を使って実行する方法。
codexの設定だと
1 2 3 4 5 6 7 |
|
こんな感じでコマンドにuvx
やnpx
を指定して設定する方法がよく紹介されています。
これらのツールの公式でもこのように紹介されています。
- oraios/serena: A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)
- upstash/context7: Context7 MCP Server – Up-to-date code documentation for LLMs and AI code editors
これらはserena
だったりcontext7-mcp
というCLIツールを使ってMCPサーバーを起動しますが、
それらをuvx
やnpx
で直接実行しています。
1 2 |
|
これらのコマンドを実行すると、もしPATH
の中やNode.jsの場合はnode_modules/.bin
にそのコマンドがあった場合は
そちらを優先して実行します。
無い場合、実際には最初の実行時に、~/.cache/uv/や~/.npm/_npx/にパッケージがインストールされ、それを使ってコマンドが実行されます。
それらのインストール時には各コマンド毎に隔離した環境が作られるため、複数のツールを使ってもバージョンの競合などは起きません。
インストールせずに実行できる、みたいに書いてあるものもありますが、実際には上に書いたように 実態がインストールされてから実行されるので、 初めて実行しようとすると少し時間がかかります。
これを直接codexのMCPサーバーとして実行しようとすると時間がかかりすぎてタイムアウトエラーになることがあります。
startup_timeout_ms = 60000
などしてタイムアウトを長くして回避することも出来ますが、
できれば先に用意しておいたほうが色々とトラブルを避けられます。
miseで全部管理する
mise(ミーズ)は 開発環境の管理ツールです。
結構機能が盛りだくさんで、
- 開発ツールの管理
- プロジェクトごとの開発環境の管理
- 仮想環境の自動認識
- タスクの自動化
などが出来ます。
もともと使い始めたのは仮想環境の自動認識のためでした。
それ以外だとpre-commit
を使うレポジトリに最初に入るときに自動でpre-commit install
を実行する設定
1
をしたりする程度でしたが、
MCPサーバー用のツールもまとめて管理したら便利そうだったのでまとめてみました。
以下の様な設定ファイルを用意します。
1 2 3 4 5 6 7 8 |
|
これを~/config/mise/config.tomlに保存して
1
|
|
すればcodex
コマンドと共に、context7-mcp
とserena
コマンドもインストールされます。
miseのsetup が済んでいれば
1
|
|
などにインストールされているコマンドへのPATH
が通ってcodex
だけで実行できるようになっているはずです。
serena
などもそのまま実行できるようになったので、上の
~/.codex/config.tomlは
1 2 3 4 5 6 7 |
|
このように直接コマンドを使うように書き換えられます。
この方法の利点としては
- 事前に必要なツールが
mise
のみ。 mise install
を実行しておくことでcodex
起動時には即座に各MCPサーバーが起動できる。- バージョン管理が一元化できる
mise upgrade --bump
とすると全てのツールを最新にできる。設定ファイルも自動で更新。
codex
などもバージョンも含めきちんと管理することができる。- HomebrewだとHomebrewに登録された最新バージョンのみ。実際のリリースより遅れることもあり、古いバージョンを(簡単に)使うことは出来ない。
- ~/.config/mise/config.tomlをdotfilesなどで管理しておけば複数の環境で同じ環境を簡単に再現できる。
といった感じ。
miseの設定ファイルについて
miseの設定ファイルについてもう少し捕捉。
tools
今回のファイルだと
tools
セクションのみのファイルになっていますが、
uv
, node
という管理する側のツールもここで管理します。
別途インストールされてPATH
に入っていればPATHの設定次第でそちらが使われる事もあるので、
.bashrcの中などに追加する_mise_hook
などの設定と他のPATH
の設定の順序などちょっと注意が必要です。
基本的に最新のものを使っている状態ならそれ程細かく気にする必要はないかもしれませんが。
後は、npm
やpipx
でインストールするツールを指定しています。
pipx (uvx)
pipx
と書いてありますが、miseでpipx
と書いた場合、uv
が入っていればdefaultではuvx
がコマンド管理ツールとして使われます。
uvx
コマンドがなければpipx
コマンドが使われますが、uvx
があってもpipx
を使痛い場合は
1 2 |
|
と設定すればpipx
が必ず使われます。
ただuvx
の方が高速なので無理にこの設定をすることは無いと思います。
pipx
の形ではPyPIに公開されているパッケージの他にGitHubに公開されているパッケージや
別のGitリポジトリに公開されているパッケージもインストールできます。
また、zipファイルになっているパッケージもインストールできます。
GitHubに関しては、上にあるように
1
|
|
と<user>/<repo>
の形で指定できます。
このserenaの場合、latest
で指定していますが、
現状
1
|
|
などと書いて、指定バージョンをインストールすることは出来ますが、
この状態でmise upgrade --bump
を実行すると
1
|
|
というwarningが出てアップグレードもされません。
latest
にしておくとmise ls
で確認するとちゃんと最新バージョンが入っていて、
新しいバージョンがリリースされるときちんと更新されるのでここはlatest
にしてあります。
PyPIからインストールするような
1
|
|
とかであればバージョンを書いてもmise upgrade --bump
で更新されます。
ここでuvx
などを使ってインストールされる際には
~/.cache/uv/ではなく
~/.local/share/mise/installs
の下にインストールされるようになっていて、
miseのsetupが済んでいればインストールされると
自動的にそのコマンドのあるディレクトリへのPATH
が通るようになっています。
npm
などの場合も同様です。
npm (bun)
npm
の場合は通常npm
コマンドが使われますが、bun
を使うことも出来ます。
1 2 3 4 5 6 |
|
のような感じにsettings.npm.bun
をtrue
にしてbun
をインストールすればbun
が使われます。
この場合はbun
がないとエラーになります。
bun
の方が高速なのでbun
を使うのも良いと思います。
bun
を使う場合はこんな感じになります。
1 2 3 4 5 6 7 8 9 10 11 12 |
|
-
https://github.com/rcmdnk/python-template/blob/main/.mise.toml ↩