module Unison.MCP.Server (mcpServer) where

import Network.MCP.Server qualified as MCP
import Network.MCP.Transport.Types qualified as MCP
import UnliftIO (MonadIO (..))

mcpServer :: (MonadIO m) => MCP.Server -> (MCP.Message -> m (Maybe MCP.Message))
mcpServer :: forall (m :: * -> *).
MonadIO m =>
Server -> Message -> m (Maybe Message)
mcpServer Server
server Message
msg = do
  IO (Maybe Message) -> m (Maybe Message)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe Message) -> m (Maybe Message))
-> IO (Maybe Message) -> m (Maybe Message)
forall a b. (a -> b) -> a -> b
$ Server -> Message -> IO (Maybe Message)
MCP.handleMessage Server
server Message
msg