Skip to main content
Glama
jwt.ts835 B
import 'dotenv/config'; import { SignJWT, jwtVerify } from 'jose'; const secret = new TextEncoder().encode(process.env.MCP_JWT_SECRET || 'change-me'); export type McpClaims = { sub: string; // user id or email shopId?: string; scope?: string[]; // e.g., ['sales:read','sales:write'] }; export async function issueMcpToken(claims: McpClaims, ttlSeconds = 3600) { const now = Math.floor(Date.now()/1000); return await new SignJWT({ ...claims }) .setProtectedHeader({ alg: 'HS256', typ: 'JWT' }) .setIssuedAt(now) .setExpirationTime(now + ttlSeconds) .setIssuer('caisse-mcp') .sign(secret); } export async function verifyMcpToken(token: string) { const { payload } = await jwtVerify(token, secret, { issuer: 'caisse-mcp' }); return payload as McpClaims & { exp: number; iat: number }; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/paracetamol951/caisse-enregistreuse-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server