@mseep/apisix-mcp
Version:
[](https://smithery.ai/server/@api7/apisix-mcp)
63 lines (62 loc) • 2.11 kB
JavaScript
import axios from "axios";
import { APISIX_SERVER_HOST, APISIX_ADMIN_API_PORT, APISIX_ADMIN_API_PREFIX, APISIX_ADMIN_KEY, } from "../utils/env.js";
export async function makeAdminAPIRequest(path, method = "GET", data) {
const baseUrl = `${APISIX_SERVER_HOST}:${APISIX_ADMIN_API_PORT}${APISIX_ADMIN_API_PREFIX}`;
const url = `${baseUrl}${path}`;
try {
const response = await axios({
method,
url,
data,
headers: {
"X-API-KEY": APISIX_ADMIN_KEY,
"Content-Type": "application/json",
},
});
return {
content: [
{
type: "text",
text: JSON.stringify(response.data, null, 2),
},
],
};
}
catch (error) {
if (axios.isAxiosError(error)) {
console.error(`Request failed: ${method} ${url}`);
console.error(`Status: ${error.response?.status}, Error: ${error.message}`);
if (error.response?.data) {
try {
const stringifiedData = JSON.stringify(error.response.data);
console.error(`Response data: ${stringifiedData}`);
}
catch {
console.error(`Response data: [Cannot parse as JSON]`);
}
}
return {
isError: true,
content: [
{
type: "text",
text: JSON.stringify(`Status: ${error.response?.status}\nMessage: ${error.message}
Data:\n${JSON.stringify(error.response?.data || {}, null, 2)}`, null, 2),
},
],
};
}
else {
return {
isError: true,
content: [
{
type: "text",
text: JSON.stringify(error, null, 2),
},
],
};
}
}
}
export default makeAdminAPIRequest;