fluent-api-mcp-server
Version:
FluentAPI MCP Server - Enable AI assistants to facilitate seamless multilingual conversations
151 lines • 4.64 kB
JavaScript
/**
* FluentAPI Client for MCP Server
* Handles communication with FluentAPI borderless endpoints
*/
import fetch from 'node-fetch';
export class FluentAPIClient {
baseURL;
apiKey;
constructor(apiKey, baseURL = 'https://www.fluentapi.io') {
this.apiKey = apiKey;
this.baseURL = baseURL;
}
/**
* Translate a message in the context of a conversation
*/
async translate(request) {
try {
const response = await fetch(`${this.baseURL}/api/borderless`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': this.apiKey,
},
body: JSON.stringify(request),
});
if (!response.ok) {
const error = await response.json();
throw new Error(`FluentAPI Error: ${error.error} - ${error.message || 'Unknown error'}`);
}
return await response.json();
}
catch (error) {
if (error instanceof Error) {
throw error;
}
throw new Error(`Network error: ${String(error)}`);
}
}
/**
* Get conversation history
*/
async getConversation(conversationId, participantId, language) {
try {
const params = new URLSearchParams({ conversationId });
if (participantId)
params.append('participantId', participantId);
if (language)
params.append('language', language);
const response = await fetch(`${this.baseURL}/api/borderless?${params}`, {
headers: {
'X-API-Key': this.apiKey,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(`FluentAPI Error: ${error.error} - ${error.message || 'Unknown error'}`);
}
return await response.json();
}
catch (error) {
if (error instanceof Error) {
throw error;
}
throw new Error(`Network error: ${String(error)}`);
}
}
/**
* Get supported languages (static list for now)
*/
getSupportedLanguages() {
return {
'en': 'English',
'es': 'Spanish',
'fr': 'French',
'de': 'German',
'it': 'Italian',
'pt': 'Portuguese',
'ru': 'Russian',
'ja': 'Japanese',
'ko': 'Korean',
'zh': 'Chinese (Simplified)',
'zh-TW': 'Chinese (Traditional)',
'ar': 'Arabic',
'hi': 'Hindi',
'th': 'Thai',
'vi': 'Vietnamese',
'tr': 'Turkish',
'pl': 'Polish',
'nl': 'Dutch',
'sv': 'Swedish',
'da': 'Danish',
'no': 'Norwegian',
'fi': 'Finnish',
'cs': 'Czech',
'hu': 'Hungarian',
'ro': 'Romanian',
'bg': 'Bulgarian',
'hr': 'Croatian',
'sk': 'Slovak',
'sl': 'Slovenian',
'et': 'Estonian',
'lv': 'Latvian',
'lt': 'Lithuanian',
'mt': 'Maltese',
'ga': 'Irish',
'cy': 'Welsh',
'eu': 'Basque',
'ca': 'Catalan',
'gl': 'Galician',
'is': 'Icelandic',
'mk': 'Macedonian',
'sq': 'Albanian',
'be': 'Belarusian',
'uk': 'Ukrainian',
'mn': 'Mongolian',
'ka': 'Georgian',
'hy': 'Armenian',
'az': 'Azerbaijani',
'kk': 'Kazakh',
'ky': 'Kyrgyz',
'tg': 'Tajik',
'uz': 'Uzbek',
'tk': 'Turkmen',
'fa': 'Persian',
'ur': 'Urdu',
'bn': 'Bengali',
'ta': 'Tamil',
'te': 'Telugu',
'ml': 'Malayalam',
'kn': 'Kannada',
'gu': 'Gujarati',
'pa': 'Punjabi',
'mr': 'Marathi',
'ne': 'Nepali',
'si': 'Sinhala',
'my': 'Myanmar',
'km': 'Khmer',
'lo': 'Lao',
'id': 'Indonesian',
'ms': 'Malay',
'tl': 'Filipino',
'haw': 'Hawaiian',
'mi': 'Maori',
'sm': 'Samoan',
'to': 'Tongan',
'fj': 'Fijian',
'auto': 'Auto-detect'
};
}
}
//# sourceMappingURL=fluent-client.js.map