Provide implementations of advanced data structures
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Configure WebSocket transport for bidirectional MCP communication with connection management and reconnection handling.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
Configure WebSocket transport for bidirectional MCP communication.
Invoke this skill when you need to:
| Parameter | Type | Required | Description |
|---|---|---|---|
| language | string | Yes | Target language |
| server | boolean | No | Generate server code (default: true) |
| client | boolean | No | Generate client code (default: false) |
| secure | boolean | No | Use WSS (default: true) |
import { WebSocketServer, WebSocket } from 'ws';
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
interface Connection {
ws: WebSocket;
server: Server;
lastPing: number;
}
const connections = new Map<string, Connection>();
const wss = new WebSocketServer({
port: parseInt(process.env.WS_PORT || '8080'),
path: '/mcp',
});
// Heartbeat interval
const HEARTBEAT_INTERVAL = 30000;
wss.on('connection', (ws, req) => {
const connectionId = crypto.randomUUID();
console.log(`New connection: ${connectionId}`);
// Create MCP server for this connection
const server = new Server(
{ name: 'my-mcp-server', version: '1.0.0' },
{ capabilities: { tools: {}, resources: {} } }
);
// Register handlers
registerToolHandlers(server);
// Store connection
connections.set(connectionId, {
ws,
server,
lastPing: Date.now(),
});
// Handle messages
ws.on('message', async (data) => {
try {
const message = JSON.parse(data.toString());
await handleMessage(connectionId, message);
} catch (error) {
console.error('Failed to process message:', error);
ws.send(JSON.stringify({
jsonrpc: '2.0',
error: { code: -32700, message: 'Parse error' },
}));
}
});
// Handle close
ws.on('close', () => {
console.log(`Connection closed: ${connectionId}`);
connections.delete(connectionId);
});
// Handle errors
ws.on('error', (error) => {
console.error(`Connection error: ${connectionId}`, error);
});
// Respond to pings
ws.on('pong', () => {
const conn = connections.get(connectionId);
if (conn) conn.lastPing = Date.now();
});
});
// Heartbeat check
setInterval(() => {
const now = Date.now();
connections.forEach((conn, id) => {
if (now - conn.lastPing > HEARTBEAT_INTERVAL * 2) {
console.log(`Terminating stale connection: ${id}`);
conn.ws.terminate();
connections.delete(id);
} else {
conn.ws.ping();
}
});
}, HEARTBEAT_INTERVAL);
async function handleMessage(connectionId: string, message: any) {
const conn = connections.get(connectionId);
if (!conn) return;
// Process MCP message and send response
// Implementation depends on message type
}
console.log(`WebSocket MCP Server running on port ${process.env.WS_PORT || 8080}`);
import WebSocket from 'ws';
interface MCPClientOptions {
url: string;
reconnect?: boolean;
maxRetries?: number;
}
class MCPWebSocketClient {
private ws: WebSocket | null = null;
private reconnectAttempts = 0;
private maxRetries: number;
private reconnectDelay = 1000;
constructor(private options: MCPClientOptions) {
this.maxRetries = options.maxRetries ?? 5;
}
async connect(): Promise<void> {
return new Promise((resolve, reject) => {
this.ws = new WebSocket(this.options.url);
this.ws.on('open', () => {
console.log('Connected to MCP server');
this.reconnectAttempts = 0;
this.reconnectDelay = 1000;
resolve();
});
this.ws.on('message', (data) => {
const message = JSON.parse(data.toString());
this.handleMessage(message);
});
this.ws.on('close', () => {
console.log('Disconnected from MCP server');
if (this.options.reconnect) {
this.attemptReconnect();
}
});
this.ws.on('error', (error) => {
console.error('WebSocket error:', error);
reject(error);
});
});
}
private attemptReconnect() {
if (this.reconnectAttempts >= this.maxRetries) {
console.error('Max reconnection attempts reached');
return;
}
this.reconnectAttempts++;
const delay = this.reconnectDelay * Math.pow(2, this.reconnectAttempts - 1);
console.log(`Reconnecting in ${delay}ms (attempt ${this.reconnectAttempts})`);
setTimeout(() => {
this.connect().catch(() => {
// Will trigger another reconnect attempt
});
}, delay);
}
async send(message: any): Promise<void> {
if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
throw new Error('Not connected');
}
this.ws.send(JSON.stringify(message));
}
private handleMessage(message: any) {
// Handle incoming MCP messages
console.log('Received:', message);
}
close() {
this.options.reconnect = false;
this.ws?.close();
}
}
아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
Provide implementations of advanced data structures
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Fresh adversarial code review with binary PASS/FAIL verdicts, evidence citations, and anchoring bias prevention via fresh reviewer spawning.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
WASM-based instant code transforms for simple tasks, achieving 352x speedup over LLM inference with zero cost.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Coordinate Crew (persistent) and Polecat (transient) agents using Gas Town's hook-based work distribution and GUPP principle.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Generate visual representations of algorithm execution
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Hierarchical coordination and drift detection with frequent checkpoints, shared memory coherence validation, role specialization enforcement, and short task cycles.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.