39 lines
1.2 KiB
TypeScript

import { WebStandardStreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";
import { NextResponse } from "next/server";
import { auth } from "@/app/(auth)/auth";
import { createCanvasCapabilityMcpServer } from "@/lib/canvas/capabilities/mcp-server";
export const dynamic = "force-dynamic";
export const maxDuration = 600;
async function handleMcpRequest(
request: Request,
{ params }: { params: Promise<{ id: string }> }
) {
const session = await auth();
if (!session?.user?.id) {
return NextResponse.json(
{ error: "未登录,无法访问画布 MCP 服务" },
{ status: 401 }
);
}
const { id: projectId } = await params;
const transport = new WebStandardStreamableHTTPServerTransport({
enableJsonResponse: true,
});
const server = await createCanvasCapabilityMcpServer({
projectId,
requestHeaders: request.headers,
requestUrl: request.url,
userId: session.user.id,
});
await server.connect(transport);
return transport.handleRequest(request);
}
export const POST = handleMcpRequest;
export const GET = handleMcpRequest;
export const DELETE = handleMcpRequest;