import type {
ReadResourceRequest,
ReadResourceResult,
} from "@modelcontextprotocol/sdk/types.js";
import { resolveReadmePath } from "../helpers/resolveReadmePath";
import { type HandlerDeps, mergeDeps } from "../helpers/handlerDeps";
export function handleReadResource(deps: Partial<Pick<HandlerDeps, "readFile">> = {}) {
const mergedDeps = mergeDeps(["readFile"], deps);
return async (request: ReadResourceRequest): Promise<ReadResourceResult> => {
const { uri } = request.params;
if (uri === "readme://local/current") {
const readmePath = resolveReadmePath({ path: "." });
const content = await mergedDeps.readFile(readmePath, "utf8");
return {
contents: [
{
uri,
mimeType: "text/markdown",
text: content,
},
],
};
}
throw new Error(`Unknown resource: ${uri}`);
};
}