Copyright | (C) 2025 Matthias Pall Gissurarson |
---|---|
License | MIT |
Maintainer | mpg@mpg.is |
Stability | experimental |
Portability | GHC |
Safe Haskell | Safe-Inferred |
Language | GHC2021 |
MCP.Types
Description
This module defines the core types used in the Model Context Protocol (MCP) version 2025-06-18, including JSON-RPC message types, client/server capabilities, resources, tools, prompts, content blocks, sampling messages, elicitation forms, and various request/response types.
Key features of the 2025-06-18 implementation: - BaseMetadata interface with name/title distinction - ContentBlock type supporting text, image, audio, embedded resources, and resource links - Enhanced metadata with _meta fields and lastModified timestamps - Restricted SamplingContent type for LLM sampling (text, image, audio only) - Resource link support for referencing without embedding - Comprehensive schema validation support for tools and elicitation
Synopsis
- mcpProtocolVersion :: Text
- newtype RequestId = RequestId Value
- data Role
- newtype Cursor = Cursor Text
- newtype ProgressToken = ProgressToken Value
- data LoggingLevel
- data Annotations = Annotations {}
- data TextContent = TextContent {
- textType :: Text
- text :: Text
- annotations :: Maybe Annotations
- _meta :: Maybe Metadata
- data ImageContent = ImageContent {}
- data AudioContent = AudioContent {}
- data EmbeddedResource = EmbeddedResource {}
- data ResourceLink = ResourceLink {}
- data ContentBlock
- type Content = ContentBlock
- data ResourceContents
- data TextResourceContents = TextResourceContents {}
- data BlobResourceContents = BlobResourceContents {}
- data Resource = Resource {}
- data ResourceTemplate = ResourceTemplate {
- name :: Text
- title :: Maybe Text
- uriTemplate :: Text
- description :: Maybe Text
- mimeType :: Maybe Text
- annotations :: Maybe Annotations
- _meta :: Maybe Metadata
- data ResourceReference = ResourceReference {}
- data ResourceTemplateReference = ResourceTemplateReference {}
- data ToolAnnotations = ToolAnnotations {}
- data Tool = Tool {}
- data InputSchema = InputSchema {
- schemaType :: Text
- properties :: Maybe (Map Text Value)
- required :: Maybe [Text]
- data PromptArgument = PromptArgument {}
- data Prompt = Prompt {}
- data PromptMessage = PromptMessage {
- role :: Role
- content :: ContentBlock
- data PromptReference = PromptReference {}
- data ModelHint where
- data ModelPreferences = ModelPreferences {}
- data IncludeContext
- = AllServers
- | None
- | ThisServer
- data SamplingContent
- data SamplingMessage = SamplingMessage {
- role :: Role
- content :: SamplingContent
- data ClientCapabilities = ClientCapabilities {}
- data ServerCapabilities = ServerCapabilities {}
- data RootsCapability where
- RootsCapability :: {..} -> RootsCapability
- data PromptsCapability where
- PromptsCapability :: {..} -> PromptsCapability
- data ResourcesCapability = ResourcesCapability {}
- data ToolsCapability where
- ToolsCapability :: {..} -> ToolsCapability
- data CompletionsCapability = CompletionsCapability
- data LoggingCapability = LoggingCapability
- data SamplingCapability = SamplingCapability
- data ElicitationCapability = ElicitationCapability
- newtype ExperimentalCapability = ExperimentalCapability (Map Text Value)
- data BaseMetadata = BaseMetadata {}
- data Implementation = Implementation {}
- data Root = Root {}
- data Result where
- newtype Metadata = Metadata (Map Text Value)
Constants
mcpProtocolVersion :: Text Source #
The current MCP protocol version
Basic Types
A uniquely identifying ID for a request in JSON-RPC
The sender or recipient of messages and data in a conversation
An opaque token used to represent a cursor for pagination
newtype ProgressToken Source #
A progress token, used to associate progress notifications with the original request
Constructors
ProgressToken Value |
Instances
FromJSON ProgressToken Source # | |
Defined in MCP.Types Methods parseJSON :: Value -> Parser ProgressToken # parseJSONList :: Value -> Parser [ProgressToken] # | |
ToJSON ProgressToken Source # | |
Defined in MCP.Types Methods toJSON :: ProgressToken -> Value # toEncoding :: ProgressToken -> Encoding # toJSONList :: [ProgressToken] -> Value # toEncodingList :: [ProgressToken] -> Encoding # omitField :: ProgressToken -> Bool # | |
Show ProgressToken Source # | |
Defined in MCP.Types Methods showsPrec :: Int -> ProgressToken -> ShowS # show :: ProgressToken -> String # showList :: [ProgressToken] -> ShowS # | |
Eq ProgressToken Source # | |
Defined in MCP.Types Methods (==) :: ProgressToken -> ProgressToken -> Bool # (/=) :: ProgressToken -> ProgressToken -> Bool # |
data LoggingLevel Source #
The severity of a log message
Instances
Content Types
data Annotations Source #
Optional annotations for the client
Constructors
Annotations | |
Instances
data TextContent Source #
Text provided to or from an LLM
Constructors
TextContent | |
Fields
|
Instances
data ImageContent Source #
An image provided to or from an LLM
Constructors
ImageContent | |
Instances
data AudioContent Source #
Audio provided to or from an LLM
Constructors
AudioContent | |
Instances
data EmbeddedResource Source #
The contents of a resource, embedded into a prompt or tool call result
Constructors
EmbeddedResource | |
Fields |
Instances
data ResourceLink Source #
A resource that the server is capable of reading, included in a prompt or tool call result
Constructors
ResourceLink | |
Instances
data ContentBlock Source #
Content blocks that can be text, image, audio, embedded resource, or resource link
Constructors
TextContentType TextContent | |
ImageContentType ImageContent | |
AudioContentType AudioContent | |
EmbeddedResourceType EmbeddedResource | |
ResourceLinkType ResourceLink |
Instances
type Content = ContentBlock Source #
Legacy alias for ContentBlock (for backward compatibility)
Resource Types
data ResourceContents Source #
Resource contents (text or blob)
Instances
data TextResourceContents Source #
Text resource contents
Constructors
TextResourceContents | |
Instances
data BlobResourceContents Source #
Blob resource contents
Constructors
BlobResourceContents | |
Instances
A known resource that the server is capable of reading
Constructors
Resource | |
Instances
data ResourceTemplate Source #
A template description for resources available on the server
Constructors
ResourceTemplate | |
Fields
|
Instances
data ResourceReference Source #
A reference to a resource or resource template definition
Constructors
ResourceReference | |
Instances
data ResourceTemplateReference Source #
A reference to a resource template definition
Constructors
ResourceTemplateReference | |
Instances
Tool Types
data ToolAnnotations Source #
Additional properties describing a Tool to clients
Constructors
ToolAnnotations | |
Fields
|
Instances
Definition for a tool the client can call
Constructors
Tool | |
Fields
|
Instances
data InputSchema Source #
Input schema for a tool
Constructors
InputSchema | |
Fields
|
Instances
Prompt Types
data PromptArgument Source #
Describes an argument that a prompt can accept
Constructors
PromptArgument | |
Instances
A prompt or prompt template that the server offers
Constructors
Prompt | |
Instances
FromJSON Prompt Source # | |
ToJSON Prompt Source # | |
Generic Prompt Source # | |
Show Prompt Source # | |
Eq Prompt Source # | |
type Rep Prompt Source # | |
Defined in MCP.Types type Rep Prompt = D1 ('MetaData "Prompt" "MCP.Types" "mcp-0.3.0.0-inplace" 'False) (C1 ('MetaCons "Prompt" 'PrefixI 'True) ((S1 ('MetaSel ('Just "name") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "title") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text))) :*: (S1 ('MetaSel ('Just "description") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: (S1 ('MetaSel ('Just "arguments") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [PromptArgument])) :*: S1 ('MetaSel ('Just "_meta") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Metadata)))))) |
data PromptMessage Source #
Describes a message returned as part of a prompt
Constructors
PromptMessage | |
Fields
|
Instances
data PromptReference Source #
Identifies a prompt
Instances
Model Types
Hints to use for model selection
data ModelPreferences Source #
The server's preferences for model selection
Constructors
ModelPreferences | |
Fields
|
Instances
data IncludeContext Source #
Include context options for sampling
Constructors
AllServers | |
None | |
ThisServer |
Instances
data SamplingContent Source #
Restricted content type for sampling messages (text, image, audio only)
Constructors
SamplingTextContent TextContent | |
SamplingImageContent ImageContent | |
SamplingAudioContent AudioContent |
Instances
data SamplingMessage Source #
Describes a message issued to or received from an LLM API
Constructors
SamplingMessage | |
Fields
|
Instances
Capability Types
data ClientCapabilities Source #
Capabilities a client may support
Constructors
ClientCapabilities | |
Instances
data ServerCapabilities Source #
Capabilities that a server may support
Constructors
ServerCapabilities | |
Instances
data RootsCapability where Source #
Roots capability
Constructors
RootsCapability | |
Fields
|
Instances
data PromptsCapability where Source #
Prompts capability
Constructors
PromptsCapability | |
Fields
|
Instances
data ResourcesCapability Source #
Resources capability
Constructors
ResourcesCapability | |
Instances
data ToolsCapability where Source #
Tools capability
Constructors
ToolsCapability | |
Fields
|
Instances
data CompletionsCapability Source #
Completions capability
Constructors
CompletionsCapability |
Instances
data LoggingCapability Source #
Logging capability
Constructors
LoggingCapability |
Instances
data SamplingCapability Source #
Sampling capability
Constructors
SamplingCapability |
Instances
data ElicitationCapability Source #
Elicitation capability
Constructors
ElicitationCapability |
Instances
newtype ExperimentalCapability Source #
Experimental capability
Constructors
ExperimentalCapability (Map Text Value) |
Instances
Base Types
data BaseMetadata Source #
Base interface for metadata with name and optional title
Instances
FromJSON BaseMetadata Source # | |
Defined in MCP.Types | |
ToJSON BaseMetadata Source # | |
Defined in MCP.Types Methods toJSON :: BaseMetadata -> Value # toEncoding :: BaseMetadata -> Encoding # toJSONList :: [BaseMetadata] -> Value # toEncodingList :: [BaseMetadata] -> Encoding # omitField :: BaseMetadata -> Bool # | |
Generic BaseMetadata Source # | |
Show BaseMetadata Source # | |
Defined in MCP.Types Methods showsPrec :: Int -> BaseMetadata -> ShowS # show :: BaseMetadata -> String # showList :: [BaseMetadata] -> ShowS # | |
Eq BaseMetadata Source # | |
Defined in MCP.Types | |
type Rep BaseMetadata Source # | |
Defined in MCP.Types type Rep BaseMetadata = D1 ('MetaData "BaseMetadata" "MCP.Types" "mcp-0.3.0.0-inplace" 'False) (C1 ('MetaCons "BaseMetadata" 'PrefixI 'True) (S1 ('MetaSel ('Just "name") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "title") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)))) |
Implementation Info
data Implementation Source #
Describes the name and version of an MCP implementation
Instances
Roots
Represents a root directory or file that the server can operate on
Instances
FromJSON Root Source # | |
ToJSON Root Source # | |
Generic Root Source # | |
Show Root Source # | |
Eq Root Source # | |
type Rep Root Source # | |
Defined in MCP.Types type Rep Root = D1 ('MetaData "Root" "MCP.Types" "mcp-0.3.0.0-inplace" 'False) (C1 ('MetaCons "Root" 'PrefixI 'True) (S1 ('MetaSel ('Just "uri") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: (S1 ('MetaSel ('Just "name") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "_meta") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Metadata))))) |
Result Types
Base result type