{-# LANGUAGE OverloadedStrings #-}
module Network.MCP.Server.Types where
import Control.Exception (SomeException)
import Data.Aeson
import Data.Map.Strict (Map)
import Control.Concurrent.STM
import Data.Text (Text)
import Network.MCP.Types
data Server = Server
{ Server -> ServerInfo
serverInfo :: ServerInfo
, Server -> ServerCapabilities
serverCapabilities :: ServerCapabilities
, Server -> TVar [Resource]
serverResources :: TVar [Resource]
, Server -> TVar [Tool]
serverTools :: TVar [Tool]
, Server -> TVar [Prompt]
serverPrompts :: TVar [Prompt]
, Server -> Text
serverInstructions :: Text
, Server -> TVar (Maybe ResourceReadHandler)
serverResourceReadHandler :: TVar (Maybe ResourceReadHandler)
, Server -> TVar (Maybe ToolCallHandler)
serverToolCallHandler :: TVar (Maybe ToolCallHandler)
, Server -> TVar (Maybe PromptHandler)
serverPromptHandler :: TVar (Maybe PromptHandler)
, Server
-> TVar
(Map Text (Value -> Server -> IO (Either SomeException Value)))
serverMessageHandlers :: TVar (Map Text (Value -> Server -> IO (Either SomeException Value)))
}
type ServerHandler = Server -> Value -> IO Value
type ResourceReadHandler = ReadResourceRequest -> IO ReadResourceResult
type ToolCallHandler = CallToolRequest -> IO CallToolResult
type PromptHandler = GetPromptRequest -> IO GetPromptResult