@trishchuk/ai-think-gate-mcp
Version:
Model Context Protocol (MCP) server that provides AI-powered thinking and code architecture tools
127 lines (126 loc) • 3.51 kB
TypeScript
/**
* Types from the Model Context Protocol (MCP) that we use in our implementation
*/
/**
* A progress token, used to associate progress notifications with the original request
*/
export type ProgressToken = string | number;
/**
* Content annotations for MCP content
*/
export interface ContentAnnotations {
/**
* Describes who the intended customer of this object or data is.
* It can include multiple entries to indicate content useful for multiple audiences (e.g., ["user", "assistant"]).
*/
audience?: ("user" | "assistant")[];
/**
* Describes how important this data is.
* A value of 1 means "most important," and indicates that the data is effectively required,
* while 0 means "least important," and indicates that the data is entirely optional.
*/
priority?: number;
/**
* Additional metadata
*/
metadata?: Record<string, any>;
}
/**
* Content item in response
*/
export interface ContentItem {
type: string;
text: string;
data?: string;
mimeType?: string;
annotations?: ContentAnnotations;
}
/**
* Annotations for tools in MCP
*/
export interface ToolAnnotations {
/**
* A human-readable title for the tool.
*/
title?: string;
/**
* If true, the tool does not modify its environment.
* Default: false
*/
readOnlyHint?: boolean;
/**
* If true, the tool may perform destructive updates to its environment.
* If false, the tool performs only additive updates.
* (This property is meaningful only when `readOnlyHint == false`)
* Default: true
*/
destructiveHint?: boolean;
/**
* If true, calling the tool repeatedly with the same arguments
* will have no additional effect on the its environment.
* (This property is meaningful only when `readOnlyHint == false`)
* Default: false
*/
idempotentHint?: boolean;
/**
* If true, this tool may interact with an "open world" of external entities.
* If false, the tool's domain of interaction is closed.
* For example, the world of a web search tool is open, whereas that
* of a memory tool is not.
* Default: true
*/
openWorldHint?: boolean;
}
/**
* The role of a message sender or recipient
*/
export type Role = "user" | "assistant";
/**
* Text content in MCP
*/
export interface TextContent {
type: "text";
text: string;
annotations?: ContentAnnotations;
}
/**
* Image content in MCP
*/
export interface ImageContent {
type: "image";
data: string;
mimeType: string;
annotations?: ContentAnnotations;
}
/**
* Audio content in MCP
*/
export interface AudioContent {
type: "audio";
data: string;
mimeType: string;
annotations?: ContentAnnotations;
}
/**
* Message sent to or received from an LLM
*/
export interface SamplingMessage {
role: Role;
content: TextContent | ImageContent | AudioContent;
}
/**
* Logging levels in MCP
*/
export type LoggingLevel = "debug" | "info" | "notice" | "warning" | "error" | "critical" | "alert" | "emergency";
/**
* Type guard to check if content is text content
*/
export declare function isTextContent(content: any): content is TextContent;
/**
* Type guard to check if content is image content
*/
export declare function isImageContent(content: any): content is ImageContent;
/**
* Type guard to check if content is audio content
*/
export declare function isAudioContent(content: any): content is AudioContent;