@turbot/powerpipe-mcp
Version:
Powerpipe MCP server to run benchmarks, detections and controls using AI.
52 lines • 1.88 kB
JavaScript
import { ListResourcesRequestSchema, ReadResourceRequestSchema } from "@modelcontextprotocol/sdk/types.js";
import { handleStatusResource } from "./status.js";
import { logger } from '../services/logger.js';
// Export all resources for server capabilities
export const resources = {
status: {
uri: "powerpipe://status",
name: "status",
type: "Status",
description: "Server status information"
}
};
export function setupResourceHandlers(server) {
// Add resources/list handler
server.setRequestHandler(ListResourcesRequestSchema, async () => {
try {
return {
resources: Object.values(resources),
_meta: {}
};
}
catch (error) {
// Log the error but don't fail - return default resources
if (error instanceof Error) {
logger.error("Critical error listing resources:", error.message);
}
else {
logger.error("Critical error listing resources:", error);
}
// Provide at least the status resource
return {
resources: Object.values(resources),
_meta: {}
};
}
});
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
const { uri } = request.params;
try {
const result = await handleStatusResource(uri);
if (!result) {
throw new Error(`Invalid resource URI: ${uri}. Expected format: powerpipe://status`);
}
return result;
}
catch (error) {
// Just wrap the error with the URI context
throw new Error(`Failed to access resource ${uri}: ${error instanceof Error ? error.message : String(error)}`);
}
});
}
//# sourceMappingURL=index.js.map