Skip to main content
Glama
session-utils.ts1.98 kB
/** * Session and Request Utilities for MCP WordPress Remote * * Provides utilities for session management and request preparation */ import { logger } from './utils.js'; import { WPRequestParams, MCPRequest, TransportType } from './mcp-types.js'; /** * Session context for the proxy */ export interface SessionContext { sessionId: string | null; requestIdCounter: number; transportType: TransportType; } /** * Add session information to WordPress requests and format as JSON-RPC */ export function addSessionInfo( wpRequestParams: WPRequestParams, mcpRequest: MCPRequest, context: SessionContext ) { // Increment the request ID counter for each new request context.requestIdCounter++; // Create proper MCP JSON-RPC format const { method, ...params } = wpRequestParams; const mcpMessage = { jsonrpc: '2.0', method: method, id: mcpRequest.id || context.requestIdCounter, // Use original MCP request ID params: { ...params, // Add internal tracking for WordPress _proxy_request_id: context.requestIdCounter, }, }; logger.debug(`MCP JSON-RPC message being sent to WordPress:`, 'SESSION', { jsonrpc: mcpMessage.jsonrpc, method: mcpMessage.method, id: mcpMessage.id, original_mcp_id: mcpRequest.id || 'none', session_id: context.sessionId || 'not-yet-obtained', }); return mcpMessage; } /** * Prepare request based on transport type */ export function prepareRequest( wpRequestParams: WPRequestParams, mcpRequest: MCPRequest, context: SessionContext ) { if (context.transportType === 'jsonrpc') { // Use full JSON-RPC format return addSessionInfo(wpRequestParams, mcpRequest, context); } else { // Use simple format (just the params) return wpRequestParams; } } /** * Create a new session context */ export function createSessionContext(): SessionContext { return { sessionId: null, requestIdCounter: 0, transportType: null, }; }

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/Automattic/mcp-wordpress-remote'

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