CBIIT/MCP-Client-POC

An experimental POC to create a MCP Client based off of the Research Optimizer Project

0

stars

1,252

commits

JavaScript

primary language

Jun 22, 2026

updated

datascience.cancer.gov/

README

Research Optimizer

AI research platform for biomedical and regulatory information analysis. Built with buildless SolidJS frontend and Express.js backend with multi-provider AI integration.

Quick Start

# Start server
cd server && npm install && npm start

# Optional: Start full development environment (Docker)
docker compose up --build -w

# Run tests
cd server && npm test           # Backend unit tests + full application integration tests
cd server && npm run test:integration  # Integration tests only (full app in browser)

Access: https://localhost (ignore cert warnings for dev)
Important: Client must be served through server (needs HTTPS, OAuth, API proxy)

Architecture Overview

ComponentTechnologyKey Features
FrontendBuildless SolidJS, CDN depsChat interface, local database, client-side embeddings
BackendExpress.js, PostgreSQLMulti-provider AI, research tools, authentication
TestingNode.js test + PlaywrightNo mocking, real services, browser testing
InfrastructureAWS CDKContainer deployment

Testing Philosophy

Real-world testing approach with no mocking:

  • All tests use real AWS Bedrock, databases, and API calls
  • Client tests run in actual Chromium browser via Playwright
  • Custom TAP-compliant test framework for buildless client testing
  • npm test runs both backend unit tests and integration tests

Development Guide

Frontend (Client)

Key Gotcha: Buildless SolidJS - no webpack/vite, dependencies via CDN import maps. Test via integration tests: npm run test:integration

WhatWhereNotes
Chat Interfacepages/tools/chat/Main app feature with streaming AI
Chat Hookspages/tools/chat/hooks.jsCore chat functionality and database interactions
Client Databasemodels/database.jsIndexedDB with vector search for conversation storage
Client Modelsmodels/models.jsProject, Conversation, Message data structures
Embeddingsmodels/embedders.jsClient-side vector embeddings for search
Componentscomponents/Use html tagged templates, not JSX
Dependenciesindex.htmlImport maps point to CDN, no npm install
Teststest/Custom TAP framework, runs in browser via ?test=1

Backend (Server)

Key Services:

WhatWherePurpose
AI Integrationservices/inference.jsMulti-provider AI with streaming
API Routesservices/routes/model, tools, auth, admin endpoints
Databaseservices/database.jsPostgreSQL with Sequelize ORM
Research Toolsservices/routes/tools.jsSearch, translation, web proxy

Key Features:

  • Multi-provider AI (AWS Bedrock, Google Gemini)
  • Web browsing proxy for CORS bypass
  • OpenID Connect authentication
  • Usage tracking and rate limiting

Development:

cd server
npm install
cp .env.example .env           # Configure environment
npm run start:dev              # Watch mode with auto-restart

Environment Setup

Copy server/.env.example to server/.env and configure: AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_SESSION_TOKEN=


### Testing Guide

| Command | What It Does |
|---------|--------------|
| `cd server && npm test` | Backend unit tests + integration tests |
| `cd server && npm run test:integration` | Integration tests only (full app in browser) |

**Writing Tests:**
```javascript
// Backend (Node.js)
import { test } from 'node:test';
import assert from 'node:assert';

// Client (Browser)  
import test from '../test.js';
import assert from '../assert.js';

Setup: Tests use server/test.env, integration tests start full server with HTTPS, client tests triggered via ?test=1

Detailed Documentation

For comprehensive guides and API references:

Contributors

park-brian

1,015 commits

huuaho

130 commits

Alejandro-Vega

95 commits

nelson-tal

11 commits

CBIIT/MCP-Client-POC

An experimental POC to create a MCP Client based off of the Research Optimizer Project

0

stars

1,252

commits

JavaScript

primary language

Jun 22, 2026

updated

datascience.cancer.gov/

README

Research Optimizer

AI research platform for biomedical and regulatory information analysis. Built with buildless SolidJS frontend and Express.js backend with multi-provider AI integration.

Quick Start

# Start server
cd server && npm install && npm start

# Optional: Start full development environment (Docker)
docker compose up --build -w

# Run tests
cd server && npm test           # Backend unit tests + full application integration tests
cd server && npm run test:integration  # Integration tests only (full app in browser)

Access: https://localhost (ignore cert warnings for dev)
Important: Client must be served through server (needs HTTPS, OAuth, API proxy)

Architecture Overview

ComponentTechnologyKey Features
FrontendBuildless SolidJS, CDN depsChat interface, local database, client-side embeddings
BackendExpress.js, PostgreSQLMulti-provider AI, research tools, authentication
TestingNode.js test + PlaywrightNo mocking, real services, browser testing
InfrastructureAWS CDKContainer deployment

Testing Philosophy

Real-world testing approach with no mocking:

  • All tests use real AWS Bedrock, databases, and API calls
  • Client tests run in actual Chromium browser via Playwright
  • Custom TAP-compliant test framework for buildless client testing
  • npm test runs both backend unit tests and integration tests

Development Guide

Frontend (Client)

Key Gotcha: Buildless SolidJS - no webpack/vite, dependencies via CDN import maps. Test via integration tests: npm run test:integration

WhatWhereNotes
Chat Interfacepages/tools/chat/Main app feature with streaming AI
Chat Hookspages/tools/chat/hooks.jsCore chat functionality and database interactions
Client Databasemodels/database.jsIndexedDB with vector search for conversation storage
Client Modelsmodels/models.jsProject, Conversation, Message data structures
Embeddingsmodels/embedders.jsClient-side vector embeddings for search
Componentscomponents/Use html tagged templates, not JSX
Dependenciesindex.htmlImport maps point to CDN, no npm install
Teststest/Custom TAP framework, runs in browser via ?test=1

Backend (Server)

Key Services:

WhatWherePurpose
AI Integrationservices/inference.jsMulti-provider AI with streaming
API Routesservices/routes/model, tools, auth, admin endpoints
Databaseservices/database.jsPostgreSQL with Sequelize ORM
Research Toolsservices/routes/tools.jsSearch, translation, web proxy

Key Features:

  • Multi-provider AI (AWS Bedrock, Google Gemini)
  • Web browsing proxy for CORS bypass
  • OpenID Connect authentication
  • Usage tracking and rate limiting

Development:

cd server
npm install
cp .env.example .env           # Configure environment
npm run start:dev              # Watch mode with auto-restart

Environment Setup

Copy server/.env.example to server/.env and configure: AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_SESSION_TOKEN=


### Testing Guide

| Command | What It Does |
|---------|--------------|
| `cd server && npm test` | Backend unit tests + integration tests |
| `cd server && npm run test:integration` | Integration tests only (full app in browser) |

**Writing Tests:**
```javascript
// Backend (Node.js)
import { test } from 'node:test';
import assert from 'node:assert';

// Client (Browser)  
import test from '../test.js';
import assert from '../assert.js';

Setup: Tests use server/test.env, integration tests start full server with HTTPS, client tests triggered via ?test=1

Detailed Documentation

For comprehensive guides and API references:

Contributors

park-brian

1,015 commits

huuaho

130 commits

Alejandro-Vega

95 commits

nelson-tal

11 commits

Languages

JavaScript

89.3%

HTML

4.7%

CSS

3.2%

TypeScript

2.7%