Skip to main content
Glama
crazyrabbitLTC

Twitter MCP Server

getDirectMessages

Retrieve Twitter direct message conversations with customizable fields and pagination for efficient management and analysis of DM interactions.

Instructions

Retrieve direct message conversations

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dmEventFieldsNoFields to include in the DM event objects
maxResultsNoMaximum number of results to return (default: 100, max: 100)
paginationTokenNoPagination token for retrieving next page of results

Implementation Reference

  • The handler function that implements the core logic for the getDirectMessages tool. It uses the Twitter v2 API (client.v2.listDmEvents) to fetch direct message events with support for pagination, custom fields, and default fields. Handles missing client and errors gracefully.
    export const handleGetDirectMessages: TwitterHandler<GetDirectMessagesArgs> = async ( client: TwitterClient | null, { maxResults = 100, paginationToken, dmEventFields }: GetDirectMessagesArgs ): Promise<HandlerResponse> => { if (!client) { return createMissingTwitterApiKeyResponse('getDirectMessages'); } try { const options: any = { max_results: Math.min(maxResults, 100) // API limit is 100 }; if (paginationToken) { options.pagination_token = paginationToken; } if (dmEventFields && dmEventFields.length > 0) { options['dm_event.fields'] = dmEventFields.join(','); } else { // Default fields for better response options['dm_event.fields'] = 'id,text,created_at,sender_id,dm_conversation_id,referenced_tweet,attachments'; } // Using v2 API for DM conversations const conversations = await client.v2.listDmEvents(options); if (!conversations.data || !Array.isArray(conversations.data) || conversations.data.length === 0) { return createResponse('No direct message conversations found.'); } const responseData = { conversations: conversations.data, meta: conversations.meta }; return createResponse(`Retrieved ${conversations.data.length} direct message events: ${JSON.stringify(responseData, null, 2)}`); } catch (error) { if (error instanceof Error) { throw new Error(formatTwitterError(error, 'getting direct messages')); } throw error; } };
  • MCP tool definition and input schema validation for getDirectMessages, including parameters like maxResults (1-100), paginationToken, and dmEventFields with specific enum values.
    getDirectMessages: { description: 'Retrieve direct message conversations', inputSchema: { type: 'object', properties: { maxResults: { type: 'number', description: 'Maximum number of results to return (default: 100, max: 100)', minimum: 1, maximum: 100 }, paginationToken: { type: 'string', description: 'Pagination token for retrieving next page of results' }, dmEventFields: { type: 'array', items: { type: 'string', enum: ['id', 'text', 'created_at', 'sender_id', 'dm_conversation_id', 'referenced_tweet', 'attachments'] }, description: 'Fields to include in the DM event objects' } }, required: [] } },
  • TypeScript interface defining the arguments for the getDirectMessages handler.
    export interface GetDirectMessagesArgs { maxResults?: number; paginationToken?: string; dmEventFields?: string[]; }
  • src/index.ts:338-345 (registration)
    Dispatch logic in the main CallToolRequestSchema handler that routes 'getDirectMessages' calls to the specific handleGetDirectMessages function.
    case 'getDirectMessages': { const { maxResults, paginationToken, dmEventFields } = request.params.arguments as { maxResults?: number; paginationToken?: string; dmEventFields?: string[]; }; response = await handleGetDirectMessages(client, { maxResults, paginationToken, dmEventFields }); break;

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/crazyrabbitLTC/mcp-twitter-server'

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