diff --git a/.cursor/mcp.json b/.cursor/mcp.json new file mode 100644 index 00000000..ddc324c0 --- /dev/null +++ b/.cursor/mcp.json @@ -0,0 +1,8 @@ +{ + "mcpServers": { + "tidewave": { + "command": "/Users/cloud/tools/mcp-proxy", + "args": ["http://localhost:4000/tidewave/mcp"] + } + } +} diff --git a/lib/music_library_web/endpoint.ex b/lib/music_library_web/endpoint.ex index ca75e953..32ead83f 100644 --- a/lib/music_library_web/endpoint.ex +++ b/lib/music_library_web/endpoint.ex @@ -31,6 +31,10 @@ defmodule MusicLibraryWeb.Endpoint do gzip: false, only: MusicLibraryWeb.static_paths() + if Code.ensure_loaded?(Tidewave) do + plug Tidewave + end + # Code reloading can be explicitly enabled under the # :code_reloader configuration of your endpoint. if code_reloading? do diff --git a/mix.exs b/mix.exs index 063c11e6..ccc83884 100644 --- a/mix.exs +++ b/mix.exs @@ -72,6 +72,7 @@ defmodule MusicLibrary.MixProject do {:tailwind, "~> 0.3", runtime: Mix.env() == :dev}, {:credo, "~> 1.7", only: [:dev, :test], runtime: false}, {:live_debugger, "~> 0.2.0", only: :dev}, + {:tidewave, "~> 0.1", only: :dev}, # HTTP Clients {:finch, "~> 0.19.0"}, diff --git a/mix.lock b/mix.lock index 050f35ac..3f4350cd 100644 --- a/mix.lock +++ b/mix.lock @@ -58,6 +58,7 @@ "telemetry_metrics_prometheus_core": {:hex, :telemetry_metrics_prometheus_core, "1.2.1", "c9755987d7b959b557084e6990990cb96a50d6482c683fb9622a63837f3cd3d8", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6 or ~> 1.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "5e2c599da4983c4f88a33e9571f1458bf98b0cf6ba930f1dc3a6e8cf45d5afb6"}, "telemetry_poller": {:hex, :telemetry_poller, "1.2.0", "ba82e333215aed9dd2096f93bd1d13ae89d249f82760fcada0850ba33bac154b", [:rebar3], [{:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7216e21a6c326eb9aa44328028c34e9fd348fb53667ca837be59d0aa2a0156e8"}, "thousand_island": {:hex, :thousand_island, "1.3.13", "d598c609172275f7b1648c9f6eddf900e42312b09bfc2f2020358f926ee00d39", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "5a34bdf24ae2f965ddf7ba1a416f3111cfe7df50de8d66f6310e01fc2e80b02a"}, + "tidewave": {:hex, :tidewave, "0.1.6", "f07514ee2c348c2e682a2632309ac6d8ec425392bfb803955a6bb19ca5508e2f", [:mix], [{:circular_buffer, "~> 0.4", [hex: :circular_buffer, repo: "hexpm", optional: false]}, {:igniter, ">= 0.5.47 and < 1.0.0-0", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:plug, "~> 1.17", [hex: :plug, repo: "hexpm", optional: false]}, {:req, "~> 0.5", [hex: :req, repo: "hexpm", optional: false]}], "hexpm", "3708592f325e1f54b99b215cd8c38f726732451bf5cfa16d73584793f99d9da4"}, "time_zone_info": {:hex, :time_zone_info, "0.7.8", "5b0e2b6b4af7b7526ef519dfd919d9d89d493a7b5e12a07434f2760dd5fe8be0", [:mix], [{:castore, "~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:mint, "~> 1.0", [hex: :mint, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "307d3fab87679e80888ce39fdfcf44a8fd6189cefc2fca3a83fb5c1097efa40e"}, "vix": {:hex, :vix, "0.33.1", "72717f9b7a2ccd314c0b320a91d8cae67f100c0df378251acea19151fbf6e4b6", [:make, :mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: false]}, {:cc_precompiler, "~> 0.1.4 or ~> 0.2", [hex: :cc_precompiler, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.7.3 or ~> 0.8", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:kino, "~> 0.7", [hex: :kino, repo: "hexpm", optional: true]}], "hexpm", "d9143e03fcd7f2f0e4db9a86d4b64aca0e39e99c303059d5841450cc4481b29c"}, "websock": {:hex, :websock, "0.5.3", "2f69a6ebe810328555b6fe5c831a851f485e303a7c8ce6c5f675abeb20ebdadc", [:mix], [], "hexpm", "6105453d7fac22c712ad66fab1d45abdf049868f253cf719b625151460b8b453"},