AIアシスタントにmiseの情報を渡したい
Claude DesktopやCursorのようなMCP(Model Context Protocol)対応のAIアシスタントに、プロジェクトで使っているツールやタスクの情報を渡したい場合がある。mise mcpを使うと、mise自体をMCPサーバーとして起動し、標準入出力を経由したJSON-RPCでmiseの情報を扱えるようにできる。
mise mcpでMCPサーバーを起動する
mise mcpを実行すると、標準入力からJSON-RPCリクエストを受け付けるサーバーが起動する。単体で実行して待ち受けさせるのではなく、AIアシスタント側の設定ファイルにコマンドとして登録して使う。Claude Desktopの場合、claude_desktop_config.jsonに以下のように登録する。
{
"mcpServers": {
"mise": {
"command": "mise",
"args": ["mcp"],
"env": {}
}
}
}
JSON-RPCで直接動作を確認する
mise mcpはAIアシスタントを経由せず、JSON-RPCリクエストを標準入力に直接渡しても動作を確認できる。まずMCPのinitializeリクエストを送る。
$ echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' | mise mcp
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"protocolVersion": "2024-11-05",
"capabilities": {
"resources": {},
"tools": {}
},
"serverInfo": {
"name": "mise",
"version": "2026.9.1"
},
"instructions": "Mise MCP server provides access to tools, tasks, environment variables, and configuration. Call list_commands before running an unfamiliar mise command: every command declares its effect on the world (`read`, `write`, `destructive`), and a command with no effect listed is unclassified rather than safe."
}
}
instructionsフィールドには、コマンドを実行する前にlist_commandsでその副作用(read/write/destructive)を確認するよう、AIアシスタント向けの注意書きが含まれている。initializeを送らずに他のリクエストだけを送るとエラーになるため、以降のリクエストはinitializeとまとめて送る。
resourcesでツール・タスクの情報を取得する
resources/readでmise://toolsやmise://tasksのようなURIを指定すると、mise.tomlに定義したツールやタスクの情報をJSONで取得できる。
$ { echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'
echo '{"jsonrpc":"2.0","id":2,"method":"resources/read","params":{"uri":"mise://tasks"}}'
} | mise mcp
レスポンスのcontents[].textにはJSON文字列がそのまま入っているため、jqでパースすると内容を確認しやすい。mise.tomlにgreetタスクを定義していれば、その定義内容が返る。
[
{
"name": "greet",
"description": "",
"aliases": [],
"source": "/path/to/mise.toml",
"run": [
"echo hello"
]
}
]
ほかにもmise://envで環境変数、mise://configで設定ファイルの情報を取得できる。
tools/callでタスクを実行する
tools/callでrun_taskを呼び出すと、AIアシスタントからmise runと同じようにタスクを実行できる。
$ { echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"run_task","arguments":{"task":"greet"}}}'
} | mise mcp
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"content": [
{
"type": "text",
"text": "mise jq@1.7.1 [1/2] install\nmise jq@1.7.1 [1/2] download jq-macos-arm64\nmise jq@1.7.1 [2/2] checksum jq-macos-arm64\nmise jq@1.7.1 [2/2] extract jq-macos-arm64\nmise jq@1.7.1 ✓ installed\n[greet] $ echo hello\n\nhello\n"
}
],
"isError": false
}
}
タスクの実行に必要なjqが未インストールだったため、実行前に自動でインストールされてからタスクが実行されている。ローカルでmise runを実行するのと同じ動作である。
run_task以外にも、mise全コマンドの一覧と副作用を取得するlist_commandsツールがある。ツールのインストールを行うinstall_toolは、2026年9月時点ではまだ未実装である。
