Skip to main content
Glama
portel-dev

NCP - Natural Context Provider

by portel-dev
session-id-passthrough.test.ts2.56 kB
/** * Test for Session ID Transparency * Verifies that _meta (including session_id) is forwarded transparently to MCP servers */ import { NCPOrchestrator } from '../src/orchestrator/ncp-orchestrator.js'; import { MCPServer } from '../src/server/mcp-server.js'; describe('Session ID Passthrough', () => { it('should forward _meta field from client to orchestrator', async () => { const server = new MCPServer('default', false, false); await server.initialize(); // Simulate client request with session_id in _meta const request = { jsonrpc: '2.0' as const, id: 1, method: 'tools/call', params: { name: 'run', arguments: { tool: 'chrome-devtools:list_pages', parameters: {} }, _meta: { session_id: 'test_session_123', custom_field: 'custom_value' } } }; const response = await server.handleRequest(request); // Should not error - _meta should be forwarded transparently expect(response).toBeDefined(); // May error if chrome-devtools not available, but shouldn't crash on _meta if (response?.error) { // Error should be about MCP availability, not _meta handling expect(response.error.message).not.toContain('_meta'); } }); it('should work without _meta (backwards compatibility)', async () => { const server = new MCPServer('default', false, false); await server.initialize(); // Simulate client request WITHOUT _meta const request = { jsonrpc: '2.0' as const, id: 1, method: 'tools/call', params: { name: 'run', arguments: { tool: 'chrome-devtools:list_pages', parameters: {} } // No _meta field } }; const response = await server.handleRequest(request); // Should still work - _meta is optional expect(response).toBeDefined(); // Should not crash when _meta is absent }); it('should forward empty _meta object', async () => { const server = new MCPServer('default', false, false); await server.initialize(); const request = { jsonrpc: '2.0' as const, id: 1, method: 'tools/call', params: { name: 'run', arguments: { tool: 'chrome-devtools:list_pages', parameters: {} }, _meta: {} // Empty _meta } }; const response = await server.handleRequest(request); expect(response).toBeDefined(); // Should handle empty _meta gracefully }); });

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/portel-dev/ncp'

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