@cnbcool/mcp-server
Version:
CNB MCP Server. A comprehensive MCP server that provides seamless integration to the CNB's API(https://cnb.cool), offering a wide range of tools for repository management, pipelines operations and collaboration features
43 lines (42 loc) • 1.32 kB
JavaScript
export default class CnbApiClient {
static instance = null;
_baseUrl;
_token;
constructor(options) {
this._baseUrl = options.baseUrl;
this._token = options.token;
}
get baseUrl() {
return this._baseUrl;
}
static initialize(options) {
if (!CnbApiClient.instance) {
CnbApiClient.instance = new CnbApiClient(options);
}
}
static getInstance() {
if (!CnbApiClient.instance) {
throw new Error('CnbApiClient not initialized. Call CnbApiClient.initialize(baseUrl, token) first.');
}
return CnbApiClient.instance;
}
async request(method, path, body, config) {
const url = `${this._baseUrl}${path}`;
const headers = {
Authorization: `Bearer ${this._token}`,
Accept: 'application/vnd.cnb.api+json',
...(config?.header || {})
};
const options = {
method,
headers,
body: body ? JSON.stringify(body) : undefined
};
const response = await fetch(url, options);
if (!response.ok) {
const errorText = await response.text();
throw new Error(`API request failed: ${response.status} ${errorText}`);
}
return response.json();
}
}