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/readmise://toolsmise://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.tomlgreetタスクを定義していれば、その定義内容が返る。

[
  {
    "name": "greet",
    "description": "",
    "aliases": [],
    "source": "/path/to/mise.toml",
    "run": [
      "echo hello"
    ]
  }
]

ほかにもmise://envで環境変数、mise://configで設定ファイルの情報を取得できる。

tools/callでタスクを実行する

tools/callrun_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月時点ではまだ未実装である。