ObjectStackObjectStack

Mcp

Mcp protocol schemas

Model Context Protocol (MCP)

Defines the protocol for connecting AI assistants to external tools, data sources,

and resources. MCP enables AI models to access contextual information, invoke

functions, and interact with external systems in a standardized way.

Architecture Alignment:

  • Anthropic Model Context Protocol (MCP)

  • OpenAI Function Calling / Tools

  • LangChain Tool Interface

  • Microsoft Semantic Kernel Plugins

Use Cases:

  • Connect AI agents to ObjectStack data (Objects, Views, Reports)

  • Expose business logic as callable tools (Workflows, Flows, Actions)

  • Provide dynamic context to AI models (User profile, Recent activity)

  • Enable AI to read and modify data through standardized interfaces

Source: packages/spec/src/ai/mcp.zod.ts

TypeScript Usage

import { MCPCapability, MCPClientConfig, MCPPrompt, MCPPromptArgument, MCPPromptMessage, MCPPromptRequest, MCPPromptResponse, MCPResource, MCPResourceRequest, MCPResourceResponse, MCPResourceTemplate, MCPResourceType, MCPRootEntry, MCPRootsConfig, MCPSamplingConfig, MCPServerConfig, MCPServerInfo, MCPStreamingConfig, MCPTool, MCPToolApproval, MCPToolCallRequest, MCPToolCallResponse, MCPToolParameter, MCPTransportConfig, MCPTransportType } from '@objectstack/spec/ai';
import type { MCPCapability, MCPClientConfig, MCPPrompt, MCPPromptArgument, MCPPromptMessage, MCPPromptRequest, MCPPromptResponse, MCPResource, MCPResourceRequest, MCPResourceResponse, MCPResourceTemplate, MCPResourceType, MCPRootEntry, MCPRootsConfig, MCPSamplingConfig, MCPServerConfig, MCPServerInfo, MCPStreamingConfig, MCPTool, MCPToolApproval, MCPToolCallRequest, MCPToolCallResponse, MCPToolParameter, MCPTransportConfig, MCPTransportType } from '@objectstack/spec/ai';

// Validate data
const result = MCPCapability.parse(data);

MCPCapability

Properties

PropertyTypeRequiredDescription
resourcesbooleanSupports resource listing and retrieval
resourceTemplatesbooleanSupports dynamic resource templates
toolsbooleanSupports tool/function calling
promptsbooleanSupports prompt templates
samplingbooleanSupports sampling from LLMs
loggingbooleanSupports logging and debugging

MCPClientConfig

Properties

PropertyTypeRequiredDescription
serversObject[]MCP servers to connect to
defaultTimeoutintegerDefault timeout for requests
enableCachingbooleanEnable client-side caching
cacheMaxAgeintegerCache max age in seconds
retryAttemptsinteger
retryDelayinteger
enableLoggingboolean
logLevelEnum<'debug' | 'info' | 'warn' | 'error'>
rootsObjectoptionalRoot directories/resources configuration

MCPPrompt

Properties

PropertyTypeRequiredDescription
namestringPrompt template name (snake_case)
descriptionstringoptionalPrompt description
messagesObject[]Prompt message sequence
argumentsObject[]optionalDynamic arguments for the prompt
categorystringoptional
tagsstring[]optional
versionstring

MCPPromptArgument

Properties

PropertyTypeRequiredDescription
namestringArgument name
descriptionstringoptional
typeEnum<'string' | 'number' | 'boolean'>
requiredboolean
defaultanyoptional

MCPPromptMessage

Properties

PropertyTypeRequiredDescription
roleEnum<'system' | 'user' | 'assistant'>Message role
contentstringMessage content (can include {{variable}} placeholders)

MCPPromptRequest

Properties

PropertyTypeRequiredDescription
promptNamestringPrompt template to use
argumentsRecord<string, any>optionalPrompt arguments

MCPPromptResponse

Properties

PropertyTypeRequiredDescription
promptNamestring
messagesObject[]Rendered prompt messages

MCPResource

Properties

PropertyTypeRequiredDescription
uristringUnique resource identifier (e.g., "objectstack://objects/account/ABC123")
namestringHuman-readable resource name
descriptionstringoptionalResource description for AI consumption
mimeTypestringoptionalMIME type (e.g., "application/json", "text/plain")
resourceTypeEnum<'text' | 'json' | 'binary' | 'stream'>
contentanyoptionalResource content (for static resources)
contentUrlstringoptionalURL to fetch content dynamically
sizeintegeroptionalResource size in bytes
lastModifiedstringoptionalLast modification timestamp (ISO 8601)
tagsstring[]optionalTags for resource categorization
permissionsObjectoptional
cacheablebooleanWhether this resource can be cached
cacheMaxAgeintegeroptionalCache max age in seconds

MCPResourceRequest

Properties

PropertyTypeRequiredDescription
uristringResource URI to fetch
parametersRecord<string, any>optionalURI template parameters

MCPResourceResponse

Properties

PropertyTypeRequiredDescription
resourceObject
contentanyResource content

MCPResourceTemplate

Properties

PropertyTypeRequiredDescription
uriPatternstringURI pattern with variables (e.g., "objectstack://objects/{objectName}/{recordId}")
namestringTemplate name
descriptionstringoptional
parametersObject[]URI parameters
handlerstringoptionalHandler function name for dynamic generation
mimeTypestringoptional
resourceTypeEnum<'text' | 'json' | 'binary' | 'stream'>

MCPResourceType

Allowed Values

  • text
  • json
  • binary
  • stream

MCPRootEntry

A single root directory or resource

Properties

PropertyTypeRequiredDescription
uristringRoot URI (e.g., file:///path/to/project)
namestringoptionalHuman-readable root name
readOnlybooleanoptionalWhether the root is read-only

MCPRootsConfig

Roots configuration for MCP client

Properties

PropertyTypeRequiredDescription
rootsObject[]Root directories or resources available to the client
watchForChangesbooleanWatch root directories for filesystem changes
notifyOnChangebooleanNotify server when root contents change

MCPSamplingConfig

Sampling configuration for MCP

Properties

PropertyTypeRequiredDescription
enabledbooleanEnable LLM sampling
maxTokensintegerMaximum tokens to generate
temperaturenumberoptionalSampling temperature
stopSequencesstring[]optionalStop sequences to end generation
modelPreferencesstring[]optionalPreferred model IDs in priority order
systemPromptstringoptionalSystem prompt for sampling context

MCPServerConfig

Properties

PropertyTypeRequiredDescription
namestringServer unique identifier (snake_case)
labelstringDisplay name
descriptionstringoptional
serverInfoObject
transportObject
resourcesObject[]optionalStatic resources
resourceTemplatesObject[]optionalDynamic resource templates
toolsObject[]optionalAvailable tools
promptsObject[]optionalPrompt templates
autoStartbooleanAuto-start server on system boot
restartOnFailurebooleanAuto-restart on failure
healthCheckObjectoptional
permissionsObjectoptional
rateLimitObjectoptional
tagsstring[]optional
statusEnum<'active' | 'inactive' | 'maintenance' | 'deprecated'>
versionstring
createdAtstringoptional
updatedAtstringoptional
streamingObjectoptionalStreaming configuration
toolApprovalObjectoptionalTool approval configuration
samplingObjectoptionalLLM sampling configuration

MCPServerInfo

Properties

PropertyTypeRequiredDescription
namestringServer name
versionstringServer version (semver)
descriptionstringoptional
capabilitiesObject
protocolVersionstringMCP protocol version
vendorstringoptionalServer vendor/provider
homepagestringoptionalServer homepage URL
documentationstringoptionalDocumentation URL

MCPStreamingConfig

Streaming configuration for MCP communication

Properties

PropertyTypeRequiredDescription
enabledbooleanEnable streaming for MCP communication
chunkSizeintegeroptionalSize of each streamed chunk in bytes
heartbeatIntervalMsintegerHeartbeat interval in milliseconds
backpressureEnum<'drop' | 'buffer' | 'block'>optionalBackpressure handling strategy

MCPTool

Properties

PropertyTypeRequiredDescription
namestringTool function name (snake_case)
descriptionstringTool description for AI consumption (be detailed and specific)
parameters[__schema0](./__schema0)[]Tool parameters
returnsObjectoptional
handlerstringHandler function or endpoint reference
asyncbooleanWhether the tool executes asynchronously
timeoutintegeroptionalExecution timeout in milliseconds
sideEffectsEnum<'none' | 'read' | 'write' | 'delete'>Tool side effects
requiresConfirmationbooleanRequire user confirmation before execution
confirmationMessagestringoptional
examplesObject[]optionalUsage examples for AI learning
categorystringoptionalTool category (e.g., "data", "workflow", "analytics")
tagsstring[]optional
deprecatedboolean
versionstring

MCPToolApproval

Tool approval configuration for MCP

Properties

PropertyTypeRequiredDescription
requireApprovalbooleanRequire approval before tool execution
approvalStrategyEnum<'human_in_loop' | 'auto_approve' | 'policy_based'>Approval strategy for tool execution
dangerousToolPatternsstring[]optionalRegex patterns for tools needing approval
autoApproveTimeoutintegeroptionalAuto-approve timeout in seconds

MCPToolCallRequest

Properties

PropertyTypeRequiredDescription
toolNamestringTool to invoke
parametersRecord<string, any>Tool parameters
timeoutintegeroptional
confirmationProvidedbooleanoptionalUser confirmation for tools that require it
contextObjectoptional

MCPToolCallResponse

Properties

PropertyTypeRequiredDescription
toolNamestring
statusEnum<'success' | 'error' | 'timeout' | 'cancelled'>
resultanyoptionalTool execution result
errorObjectoptional
executionTimenumberoptionalExecution time in milliseconds
timestampstringoptional

MCPToolParameter

Properties

PropertyTypeRequiredDescription
namestringParameter name
typeEnum<'string' | 'number' | 'boolean' | 'object' | 'array'>
descriptionstringParameter description for AI consumption
requiredboolean
defaultanyoptional
enumany[]optionalAllowed values
patternstringoptionalRegex validation pattern (for strings)
minimumnumberoptionalMinimum value (for numbers)
maximumnumberoptionalMaximum value (for numbers)
minLengthintegeroptionalMinimum length (for strings/arrays)
maxLengthintegeroptionalMaximum length (for strings/arrays)
propertiesRecord<string, [#](./#)>optionalProperties for object types
items[#](./#)optionalItem schema for array types

MCPTransportConfig

Properties

PropertyTypeRequiredDescription
typeEnum<'stdio' | 'http' | 'websocket' | 'grpc'>
urlstringoptionalServer URL (for HTTP/WebSocket/gRPC)
headersRecord<string, string>optionalCustom headers for requests
authObjectoptional
timeoutintegerRequest timeout in milliseconds
retryAttemptsinteger
retryDelayintegerDelay between retries in milliseconds
commandstringoptionalCommand to execute (for stdio transport)
argsstring[]optionalCommand arguments
envRecord<string, string>optionalEnvironment variables
workingDirectorystringoptionalWorking directory for the process

MCPTransportType

Allowed Values

  • stdio
  • http
  • websocket
  • grpc

On this page