auth.ts•1.21 kB
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod";
import { GraphQLClient } from "../graphqlClient.js";
import { loginWithPassword } from "../auth.js";
import { text } from "../util/mcp.js";
export function registerAuthTools(server: McpServer, gql: GraphQLClient, baseUrl: string) {
  const signInHandler = async (parsed: { email: string; password: string }) => {
    const { cookieHeader } = await loginWithPassword(baseUrl, parsed.email, parsed.password);
    gql.setCookie(cookieHeader);
    return text({ signedIn: true });
  };
  server.registerTool(
    "affine_sign_in",
    {
      title: "Sign In",
      description: "Sign in to AFFiNE using email and password; sets session cookies for subsequent calls.",
      inputSchema: {
        email: z.string().email(),
        password: z.string().min(1)
      }
    },
    signInHandler as any
  );
  server.registerTool(
    "sign_in",
    {
      title: "Sign In",
      description: "Sign in to AFFiNE using email and password; sets session cookies for subsequent calls.",
      inputSchema: {
        email: z.string().email(),
        password: z.string().min(1)
      }
    },
    signInHandler as any
  );
}