Skip to main content

MCP Clients

This guide explains how to use and develop client applications that connect to MCP servers.

Introduction to MCP Clients​

MCP clients are applications that communicate with MCP servers to leverage AI capabilities. Clients can range from simple command-line tools to complex web or mobile applications.

Available Client SDKs​

TRMX AI provides client SDKs for multiple programming languages:

JavaScript/TypeScript

For web, Node.js, and React Native applications

npm install @trmx/client

Python

For data science, backend services, and scripts

pip install trmx-client

Java

For enterprise applications and Android

implementation 'com.trmx:trmx-client:1.0.0'

Go

For high-performance backend services

go get github.com/trmx/client-go

Basic Client Usage​

Here's a basic example of using the JavaScript client:

import { MCPClient } from '@trmx/client';

async function main() {
// Initialize the client
const client = new MCPClient({
serverUrl: 'https://your-mcp-server.trmx.ai',
apiKey: 'your-api-key', // Optional, depending on server configuration
});

// Create a conversation
const conversation = client.createConversation({
contextId: 'user-123', // Unique identifier for this conversation
});

// Send a message
const response = await conversation.sendMessage('Hello, what can you help me with today?');

console.log('AI response:', response.content);

// Continue the conversation
const followUpResponse = await conversation.sendMessage('Tell me more about that');

console.log('Follow-up response:', followUpResponse.content);
}

main().catch(console.error);

Authentication​

Depending on your MCP server configuration, you may need to provide authentication:

API Key Authentication​

const client = new MCPClient({
serverUrl: 'https://your-mcp-server.trmx.ai',
apiKey: 'your-api-key',
});

OAuth Authentication​

const client = new MCPClient({
serverUrl: 'https://your-mcp-server.trmx.ai',
auth: {
type: 'oauth',
token: 'your-oauth-token',
},
});

Working with Tools​

You can call tools exposed by the MCP server:

// List available tools
const tools = await client.request({ method: 'tools/list' });
console.log('Available tools:', tools.result);

// Call a specific tool
const result = await client.request({
method: 'tools/call',
params: {
name: 'calculator',
arguments: {
operation: 'add',
a: 5,
b: 3,
},
},
});

console.log('Tool result:', result.result);

Accessing Resources​

You can query resources from the MCP server:

// List available resources
const resources = await client.request({ method: 'resources/list' });
console.log('Available resources:', resources.result);

// Query a specific resource
const documents = await client.request({
method: 'resources/query',
params: {
name: 'documents',
query: 'product specifications',
},
});

console.log('Retrieved documents:', documents.result);

Streaming Responses​

For real-time responses, you can use streaming:

// Create a streaming conversation
const streamingConversation = client.createConversation({
contextId: 'user-456',
streaming: true,
});

// Send a message with streaming response
const stream = await streamingConversation.sendMessage('Write a short story about space travel');

// Handle streaming chunks
stream.on('data', (chunk) => {
process.stdout.write(chunk.content);
});

stream.on('end', () => {
console.log('\n\nStream complete!');
});

stream.on('error', (error) => {
console.error('Stream error:', error);
});

Error Handling​

Implement proper error handling in your client applications:

try {
const response = await conversation.sendMessage('Hello');
console.log('Response:', response.content);
} catch (error) {
if (error.code === 'RATE_LIMIT_EXCEEDED') {
console.error('Rate limit exceeded. Please try again later.');
} else if (error.code === 'CONTEXT_TOO_LARGE') {
console.error('Conversation context is too large. Please start a new conversation.');
} else {
console.error('Error:', error.message);
}
}

Advanced Client Options​

Timeout Configuration​

const client = new MCPClient({
serverUrl: 'https://your-mcp-server.trmx.ai',
timeout: 30000, // 30 seconds
});

Retry Logic​

const client = new MCPClient({
serverUrl: 'https://your-mcp-server.trmx.ai',
retry: {
maxRetries: 3,
initialDelay: 1000,
maxDelay: 5000,
},
});

Custom Headers​

const client = new MCPClient({
serverUrl: 'https://your-mcp-server.trmx.ai',
headers: {
'X-Custom-Header': 'custom-value',
},
});

Building Custom Clients​

If our provided SDKs don't meet your needs, you can build a custom client using the MCP protocol specification:

  1. Connect to the MCP server endpoint
  2. Use JSON-RPC 2.0 format for requests
  3. Implement proper error handling
  4. Manage conversation context as needed

For detailed protocol specifications, see our API Reference.

Next Steps​