okta-mcp-server
Version:
Model Context Protocol (MCP) server for Okta API operations with support for bulk operations and caching
73 lines • 2.38 kB
JavaScript
import { spawn } from 'child_process';
// Simple test that sends JSON-RPC messages to a running server via stdio
async function testClient() {
console.log('Testing Okta MCP Server...\n');
// Spawn the server as a subprocess
const server = spawn('node', ['dist/server.js'], {
stdio: ['pipe', 'pipe', 'inherit'],
env: process.env,
});
let messageId = 1;
// Helper to send JSON-RPC request
function sendRequest(method, params) {
const request = {
jsonrpc: '2.0',
id: messageId++,
method,
params: params || {},
};
console.log(`\nSending: ${method}`);
server.stdin.write(JSON.stringify(request) + '\n');
}
// Collect response data
let buffer = '';
server.stdout.on('data', (data) => {
buffer += data.toString();
const lines = buffer.split('\n');
buffer = lines.pop() || '';
for (const line of lines) {
if (line.trim()) {
try {
const response = JSON.parse(line);
if (response.result) {
console.log('Response:', JSON.stringify(response.result, null, 2));
}
else if (response.error) {
console.error('Error:', response.error);
}
}
catch (e) {
// Not JSON, probably log output
}
}
}
});
// Wait for server to start
await new Promise((resolve) => setTimeout(resolve, 1000));
// Send initialization
sendRequest('initialize', {
protocolVersion: '2024-11-05',
capabilities: {},
clientInfo: {
name: 'test-client',
version: '1.0.0',
},
});
await new Promise((resolve) => setTimeout(resolve, 500));
// List tools
sendRequest('tools/list');
await new Promise((resolve) => setTimeout(resolve, 500));
// Call listUsers
sendRequest('tools/call', {
name: 'listUsers',
arguments: { limit: 3 },
});
// Wait for responses
await new Promise((resolve) => setTimeout(resolve, 2000));
// Clean up
server.kill();
process.exit(0);
}
testClient().catch(console.error);
//# sourceMappingURL=test-client.js.map