Skip to content

bendtherules/ask262

Repository files navigation

Ask262

MCP server for exploring the ECMAScript specification and its implementation in engine262.

🎮 Try it now

The fastest way to tinker with JavaScript internals:

  • Ask262 Chat — Ask questions in natural language (register new account)
  • MCP Inspector — Direct access to all mcp tools, no signup needed

Features

  • Vector search ECMAScript specification sections using semantic queries
  • Execute JavaScript in engine262 and capture spec sections, with ask262Debug.startImportant() to mark the key parts of your code
  • Knowledge graph mapping spec sections to implementation functions
  • 1-second timeout on code execution for safety

Available Tools

Tool Description
ask262_search_spec_sections Vector search ECMAScript spec for relevant sections
ask262_get_section_content Retrieve full content from a spec section
ask262_evaluate_in_engine262 Execute JS and capture spec sections, with "important" marking to focus on relevant parts

Quick Start (Hosted Instance)

Use the hosted MCP server without any local setup:

Preferred Method: npx add-mcp

Install ask262 MCP server to your client with one command:

npx add-mcp "https://ask262.bendtherules.in/mcp"

Manual Configuration

If you prefer to configure manually:

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "ask262": {
      "url": "https://ask262.bendtherules.in/mcp"
    }
  }
}

OpenCode (~/.config/opencode/opencode.json):

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ask262": {
      "type": "remote",
      "url": "https://ask262.bendtherules.in/mcp",
      "enabled": true
    }
  }
}

Local Installation

Prerequisites

  • Bun: Version 1.0.0 or higher (install)
  • Ollama: Installed with qwen3-embedding:8b
    (ollama pull qwen3-embedding:8b)

Setup

# Clone and install
git clone https://github.com/bendtherules/ask262
cd ask262
bun install

# Or install globally
bun install -g ask262

Environment Configuration

Copy .env.example and configure:

cp .env.example .env

Key variables:

  • ASK262_EMBEDDING_PROVIDER: Choose ollama (local) or fireworks (cloud). Default: ollama
  • OLLAMA_HOST: Ollama server URL. Default: http://localhost:11434
  • FIREWORKS_API_KEY: Required if using Fireworks. Get from https://app.fireworks.ai
  • ASK262_PORT: HTTP server port. Default: 8081

Example .env:

# Use Fireworks for embeddings (faster, cloud-based)
ASK262_EMBEDDING_PROVIDER=fireworks
FIREWORKS_API_KEY=fw_your_key_here

# Or use local Ollama (default)
# ASK262_EMBEDDING_PROVIDER=ollama
# OLLAMA_HOST=http://localhost:11434

Local MCP Configuration

Claude Desktop (claude_desktop_config.json):

stdio (no server needed)

{
  "mcpServers": {
    "ask262": {
      "command": "bunx",
      "args": ["ask262"]
    }
  }
}

http (requires server)

{
  "mcpServers": {
    "ask262": {
      "url": "http://localhost:8081/mcp"
    }
  }
}

⬇️ Required for HTTP config above:

bun run ask262-http # start HTTP server

OpenCode (~/.config/opencode/opencode.json):

stdio (no server needed)

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ask262": {
      "type": "local",
      "command": ["bunx", "ask262"],
      "enabled": true
    }
  }
}

http (requires server)

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ask262": {
      "type": "remote",
      "url": "http://localhost:8081/mcp",
      "enabled": true
    }
  }
}

⬇️ Required for HTTP config above:

bun run ask262-http # start HTTP server

HTTP Server Endpoints:

Endpoint Description
GET /health Health check
GET/POST /mcp MCP protocol endpoint
GET / MCP Inspector UI (auto-connects to /mcp)

Note: /mcp is defined before the inspector's catch-all / route to ensure proper request handling.

Testing

# Run MCP server tests
bun run test-mcp-server

# Test evaluate tool with timeout
bun run test-evaluate-timeout

# Test search functionality
bun run test-search-spec-sections

Development

For development or using a custom ECMAScript specification:

  1. Clone and setup:

    git clone https://github.com/bendtherules/ask262
    cd ask262
    bun install
  2. Ensure spec is present:

    • ./spec-built/multipage/ - Built ECMAScript spec HTML files

    Steps -

    1. git clone https://github.com/tc39/ecma262
    2. npm i && npm run build
    3. copy out/ from ecma262 to spec-built/ in this repo
  3. Build vectors (lancedb)

    bun run ingest
  4. Release to npm (maintainers only):

    bun run release

    This will:

    • Check for uncommitted git changes
    • Bump patch version (e.g., 0.0.1 → 0.0.2)
    • Fix any hard links in storage/
    • Run checks and release

    Other options: bun run release -- --minor, bun run release -- --major, or bun run release -- --no-bump

License

ISC

About

MCP server for exploring the ECMAScript specification

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Contributors