Featured

Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger
Crawl and scrape any site into clean data, 10% off logoCrawl and scrape any site into clean data, 10% off

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits, and new users get 10% off their first purchase.

Try Firecrawl free
6,000+ web scrapers for your AI agent, start free logo6,000+ web scrapers for your AI agent, start free

Apify gives your agent live web data: 6,000+ prebuilt scrapers and actors, MCP-ready. Sign up free with $5 in usage credits.

Try Apify free
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free
SetupClaw: done-for-you OpenClaw for founders & exec teams logoSetupClaw: done-for-you OpenClaw for founders & exec teams

White-glove OpenClaw for founders and exec teams (4–50+ employees): we install, harden, integrate your tools, and maintain it — secured from day one.

Get it set up for you
SEO data APIs for your agent, $1 free credit logoSEO data APIs for your agent, $1 free credit

DataForSEO gives your agent live access to SERP results, keyword data, backlinks, and on-page SEO data through one API. New accounts get a $1 credit, good for up to 20,000 keyword or backlink lookups.

Try DataForSEO free
Reach 48,000+ AI builders

A flat monthly placement in front of developers actively installing AI tools. No lock-in, cancel anytime.

Advertise here

Works with

Claude CodeClaude DesktopCursorVS CodeClineCodex CLIOpenClaw+ any MCP client

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

Exposes a bio-hybrid neuromorphic simulation pipeline (SNN LIF+STDP, consciousness proxies, ethics monitor) as MCP tools, resources, and prompts to AI assistants.

README.md

ASTRA — Unified Research Lab + MCP Server

Autonomous Sentient Thoughtful Reasoning Agent

![License: MIT](LICENSE) ![CI](https://github.com/christophejlegros-lgtm/ASTRA-Unified-ResearchLab-MCP-v2/actions) ![MCP Spec](https://modelcontextprotocol.io/specification/2025-11-25) ![MCP SDK](https://modelcontextprotocol.io) ![Node.js](https://nodejs.org) ![TypeScript](https://typescriptlang.org)

Production-grade Model Context Protocol server exposing the ASTRA bio-hybrid neuromorphic simulation pipeline to AI assistants. Built with the official @modelcontextprotocol/sdk, it integrates a layered SNN LIF+STDP engine, consciousness proxy assessment, bio-computing platform telemetry, and an IRB ethics monitor — all queryable as MCP tools, resources, and prompts from Claude Desktop, Cursor, VS Code, and any MCP-compatible client.

FinalSpark (800K neurons) ──┐
Cortical Labs CL1 ──────────┼─→ Spike Encoders → SNN (LIF+STDP, 128 neurons) → ACM Proxies
Koniku Kore ────────────────┘         │                    │
                                      │              ┌─────┴─────┐
                                      │              │  Φ̃  GW̃  PAD̃  │
                                      │              └─────┬─────┘
                                      ├─→ Ethics IRB Monitor (mode-aware)
                                      └─→ MCP Server (24 tools · 8 resources · 5 prompts)

Note on data mode: In the default sim mode, all bio-platform data is synthetically generated. The server is designed to connect to live platforms in live mode, but this requires hardware access and appropriate IRB approval.

---

What's New in v2

  • Layered SNN architecture: Configurable feed-forward + recurrent topology (default: 32→64→16→16 = 128 neurons) replacing the flat random network
  • Event-driven STDP: O(spikes × fan-out) instead of O(N²) per timestep
  • Ring buffer: O(1) spike history eviction replacing O(n) Array.shift()
  • Sparse weight storage: Adjacency lists instead of dense N×N matrix
  • Honest ACM naming: Proxies clearly labelled as integrationProxy, broadcastProxy, arousalProxy with methodological basis strings — no false IIT/GWT/PAD claims
  • Bounds-checked parameters: set_parameter rejects implausible values (NaN, Infinity, out-of-range)
  • Mode-aware ethics: Reports distinguish simulated vs live data with explicit disclaimers
  • CI pipeline: GitHub Actions for build, test, and Docker smoke-test
  • Repo hygiene: dist/ excluded from VCS, .gitignore added, deployment script removed

---

Quick Start

git clone https://github.com/christophejlegros-lgtm/ASTRA-Unified-ResearchLab-MCP-v2.1.git
cd ASTRA-Unified-ResearchLab-MCP-v2.1

# Install & build
npm install
npm run build

# Run (stdio — for Claude Desktop / Cursor)
node dist/index.js

# Or dev mode (no build needed)
npm run dev

Transports

| Transport | Command | Port | Clients | |---|---|---|---| | stdio | node dist/index.js | — | Claude Desktop, Cursor, VS Code | | SSE | node dist/sse-server.js | 9002 | Web clients, remote agents | | Streamable HTTP | node dist/http-server.js | 9003 | Modern MCP clients (spec 2025-11-25) |

---

Client Configuration

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "astra": {
      "command": "node",
      "args": ["/absolute/path/to/dist/index.js"],
      "env": { "ASTRA_LOG_LEVEL": "info" }
    }
  }
}

Cursor

Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):

{
  "mcpServers": {
    "astra": {
      "command": "node",
      "args": ["/absolute/path/to/dist/index.js"]
    }
  }
}

VS Code

Add to .vscode/settings.json:

{
  "mcp": {
    "servers": {
      "astra": {
        "type": "stdio",
        "command": "node",
        "args": ["${workspaceFolder}/dist/index.js"]
      }
    }
  }
}

Docker (remote SSE + HTTP)

docker compose up -d
# SSE: http://host:9002/sse
# HTTP: http://host:9003/mcp

---

MCP Tools (24)

All tools declare MCP annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) and human-readable titles.

| Tool | Title | Annotations | |---|---|---| | get_system_status | ASTRA System Status | 📖 read-only | | get_metrics | Real-time Metrics | 📖 read-only | | get_snn_state | SNN Engine State | 📖 read-only | | snn_step | Advance SNN Simulation | ✏️ mutating | | snn_reset | Reset SNN Engine | ⚠️ destructive | | inject_spikes | Spike Injection | ✏️ mutating | | get_acm_score | Consciousness Assessment (Proxy) | 📖 read-only | | check_ethics | IRB Neural Welfare Check | 📖 read-only | | set_parameter | Modify State Parameter | ⚠️ destructive, bounds-checked | | get_platform_status | Bio-Computing Platforms | 📖 read-only · 🌐 open-world | | export_snapshot | Full State Snapshot | 📖 read-only | | simulation_control | Simulation Control | ✏️ mutating |

MCP Resources (8)

| URI | Description | |---|---| | astra://metrics/realtime | Live metrics from all subsystems | | astra://snn/topology | Actual network architecture (reflects engine config) | | astra://acm/state | Current consciousness proxy assessment vector | | astra://ethics/welfare | IRB compliance and welfare report (mode-aware) | | astra://snapshot/current | Complete state dump |

MCP Prompts (5)

Pre-built workflow templates that orchestrate multi-tool sequences:

| Prompt | Description | |---|---| | system-health-report | Orchestrates 5 tools into a comprehensive system report | | snn-experiment | Controlled SNN experiment: reset → stimulate → observe STDP → assess proxies | | ethics-stress-test | Progressive biomarker degradation: NORMAL → STRESS → DISTRESS → recovery |

---

Architecture

.github/workflows/
└── ci.yml                # GitHub Actions: build, test, Docker smoke-test

src/
├── index.ts              # stdio transport entry point
├── sse-server.ts         # SSE transport (Express)
├── http-server.ts        # Streamable HTTP transport (Express)
├── server.ts             # MCP server factory (24 tools + 5 prompts + 8 resources)
│   ├── server-wm-tools.ts    # World Model JEPA tools (6 tools + 2 resources + 1 prompt)
│   ├── server-sensor-tools.ts # Multimodal sensor tools (6 tools + 1 resource + 1 prompt)
├── engine/
│   ├── state.ts          # Reactive state store + parameter bounds registry
│   ├── snn.ts            # Layered SNN LIF+STDP engine (Map-indexed sparse weights, event-driven)
│   ├── acm.ts            # Consciousness proxy module (Φ̃ + GW̃ + PAD̃)
│   ├── ethics.ts         # IRB ethics monitor (mode-aware, biomarker thresholds)
│   ├── world-model.ts     # JEPA World Model engine (LeWM adapted)
│   ├── wm-simulation.ts   # WM simulation manager (replay buffer, auto-train)
│   ├── multimodal-sensors.ts # V-JEPA 2 + A-JEPA + Koniku + fusion
│   └── simulation.ts     # Background tick loop
└── utils/
    └── logger.ts         # Structured logging (pino → stderr)

tests/
├── astra.test.ts         # Unit tests: state, bounds, SNN, ACM, ethics, security
├── world-model.test.ts   # World Model: encoder, predictor, SIGReg, CEM, surprise
├── wm-simulation.test.ts # WM simulation: buffer, training, planning, lifecycle
├── multimodal-sensors.test.ts # Sensors: V-JEPA, A-JEPA, Koniku, fusion, pipeline
└── integration.test.ts   # Client SDK integration: tools, resources, prompts, workflow

configs/                  # Ready-to-use client configurations

Extracted to separate repositories: The v1 HTML dashboard (4 669 lines) and the legacy Node.js bridge config have been removed from this repo to keep it focused on the MCP server. See ASTRA-Unified-ResearchLab-MCP- for the original dashboard.

SNN Engine

Layered LIF+STDP — Configurable layered architecture. Default: 32 (input) → 64 (hidden_1) → 16 (hidden_2) → 16 (output) = 128 neurons.

Connectivity: feed-forward between adjacent layers (30%) + sparse recurrent within layers (10%). Weights stored as sparse adjacency lists, not dense matrices.

Biophysical parameters: τ_m = 20ms, V_th = −50mV, V_reset = −70mV, refractory = 2ms. Background noise range [10, 22] mV produces ~2 spikes/step at steady state with all neurons active. STDP: A+ = 0.01, A− = 0.012, τ± = 20ms, event-driven (processes only spiking neurons per timestep).

The SNN topology resource (astra://snn/topology) dynamically reports the actual engine configuration, including layer sizes, synapse count, connectivity parameters, and weight storage type (Map-indexed sparse adjacency lists).

ACM — Consciousness Proxy Module

Methodological disclaimer: The metrics below are computational proxies inspired by the referenced theories. They are not faithful implementations. See source code comments for full details.

Composite score: ACM = α·Φ̃ + β·GW̃ + γ·PAD̃ (default: α=0.40, β=0.35, γ=0.25)

| Component | Basis | Inspired by | What it actually measures | |---|---|---|---| | integrationProxy (Φ̃) | Active fraction + mean firing rate + synaptic heterogeneity | IIT (Tononi) | Network participation and complexity proxy. True Φ is NP-hard to compute. | | broadcastProxy (GW̃) | Cross-layer firing rate synchrony (CV-based) | GWT (Baars) | Uniform activation across layers. Does not model competitive coalitions or ignition. | | arousalProxy (PAD̃) | Spike rate + bio coupling + energy | PAD (Mehrabian) | Arousal dimension only. Pleasure and Dominance are not computed. |

Ethics IRB Monitor

IRB compliance level N3 (100K–1M neurons). Four biomarkers with three-state classification.

Mode-aware: In sim mode, reports include explicit disclaimers that data is synthetic and irbRequired is false. In live mode, DISTRESS triggers mandatory IRB notification.

| Biomarker | Normal | Stress | Critical | |---|---|---|---| | Cell viability | ≥ 90% | 80–90% | < 80% | | Firing rate | 15–45 Hz | outside range | ≤ 5 or ≥ 60 Hz | | ATP/ADP | ≥ 3.0 | 2.0–3.0 | < 2.0 | | Calcium | < 100 nM | 100–200 nM | ≥ 200 nM |

Parameter Bounds

The set_parameter tool validates all numeric inputs against a bounds registry to prevent injection of absurd values (negative percentages, Infinity, NaN). Bounds are defined per parameter path — see src/engine/state.ts for the complete registry.

---

Testing

# Full suite
npm test

# Unit tests only
node --import tsx --test tests/astra.test.ts

# Integration tests only (Client SDK)
node --import tsx --test tests/integration.test.ts

# MCP Inspector
npm run inspect

Development

npm run dev        # stdio (no build)
npm run dev:sse    # SSE on :9002
npm run dev:http   # HTTP on :9003
npm run watch      # TypeScript watch mode

Environment Variables

| Variable | Default | Description | |---|---|---| | ASTRA_LOG_LEVEL | info | debug, info, warn, error | | ASTRA_SSE_PORT | 9002 | SSE transport port | | ASTRA_HTTP_PORT | 9003 | Streamable HTTP port | | ASTRA_CORS_ORIGIN | * | CORS allowed origin |

---

Scaling Notes

The default 128-neuron configuration is designed for interactive demonstration. To scale toward the aspirational 256→512→256→128 (1 152 neurons) architecture:

  1. Pass custom layers to SNNEngine: new SNNEngine({ layers: [{ name: 'input', size: 256 }, ...] })
  2. Event-driven STDP scales as O(spikes × average fan-out), not O(N²)
  3. Map-indexed adjacency lists provide O(1) weight lookup per synapse
  4. Sparse storage keeps memory proportional to actual synapses (~18 KB at 128 neurons vs 64 KB dense)
  5. Consider increasing intervalMs in the simulation loop for larger networks
  6. For >10K neurons, a Rust/WASM or Lava SDK backend is recommended

---

License

MIT — © 2026 Christophe Jean Legros, Geneva

Assistance Multi IA · Assistant-Multi-AI@proton.me

References

See related servers & alternatives →

Related MCP servers

Browse all →

Related guides

Hand-picked reading to help you choose and use Search servers.