@smartsamurai/krapi-sdk
Version:
KRAPI TypeScript SDK - Easy-to-use client SDK for connecting to self-hosted KRAPI servers (like Appwrite SDK)
86 lines (62 loc) • 1.98 kB
text/typescript
/**
* MCP HTTP Client for KRAPI SDK
*
* HTTP-based MCP operations for frontend applications.
* Provides MCP chat, model capabilities, and model management.
*
* @module http-clients/mcp-http-client
* @example
* const client = new MCPHttpClient({ baseUrl: 'https://api.example.com' });
* const capabilities = await client.getModelCapabilities();
*/
import { ApiResponse } from "../core";
import { ChatMessage, ChatResponse, ModelCapabilities, Model } from "../mcp-service";
import { BaseHttpClient } from "./base-http-client";
/**
* MCP HTTP Client
*
* HTTP client for MCP operations.
*
* @class MCPHttpClient
* @extends {BaseHttpClient}
*/
export class MCPHttpClient extends BaseHttpClient {
/**
* Get model capabilities
*
* @returns {Promise<ApiResponse<ModelCapabilities>>} Model capabilities
*/
async getModelCapabilities(): Promise<ApiResponse<ModelCapabilities>> {
return this.get<ModelCapabilities>("/mcp/capabilities");
}
/**
* Send chat messages to MCP model
*
* @param {string} projectId - Project ID
* @param {ChatMessage[]} messages - Chat messages
* @returns {Promise<ApiResponse<ChatResponse>>} Chat response
*/
async chat(
projectId: string,
messages: ChatMessage[]
): Promise<ApiResponse<ChatResponse>> {
return this.post<ChatResponse>(`/mcp/projects/${projectId}/chat`, { messages });
}
/**
* Send chat messages to MCP model (admin context)
*
* @param {ChatMessage[]} messages - Chat messages
* @returns {Promise<ApiResponse<ChatResponse>>} Chat response
*/
async adminChat(messages: ChatMessage[]): Promise<ApiResponse<ChatResponse>> {
return this.post<ChatResponse>("/mcp/admin/chat", { messages });
}
/**
* List available MCP models
*
* @returns {Promise<ApiResponse<Model[]>>} List of available models
*/
async listModels(): Promise<ApiResponse<Model[]>> {
return this.get<Model[]>("/mcp/models");
}
}