Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

Courtship

by grimmdevversion 1.0.1i★ –iRuns on your computer
Registry nameio.github.grimmdev/courtship

Install

Overview

Description from the maker (original English)

Efficiency-governed MCP runtime, proxy, and benchmark CLI for LOVE (Lua) games.

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Runs on your computer
  • Transport: stdio
  • Category: Other

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 1 of 1 passed
  • Runs on your computer with your user’s permissions (files, network, apps).
  • The registry lists no key to fill in.

You need

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json

{
  "mcpServers": {
    "courtship": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/grimmdev/courtship:1.0.1"
      ]
    }
  }
}

Run this in your terminal

claude mcp add courtship -- docker run -i --rm ghcr.io/grimmdev/courtship:1.0.1

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "courtship": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/grimmdev/courtship:1.0.1"
      ]
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "courtship": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/grimmdev/courtship:1.0.1"
      ]
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.

Your choice stays on this device in a cookie; no account needed.

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

Runs on your computer; the tool list appears in your AI app after you install it.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account grimmdev, which owns the repo

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • – Not applicable

    Endpoint responds

    This one runs on your computer; there is no internet endpoint

  • – Not applicable

    Sign-in with OAuth

    Runs on your computer and uses local settings instead

  • … Not checked yet

    No hidden instructions in tool descriptions

    Runs on your computer; we can only read tool lists from internet endpoints

Compared with others in Otheri

  • More stars than 0% of the other 32602 servers in this category
  • Published to the registry more recently than 98% of the other 32602 servers in this category
  • Basic checks equal to or better than 100% of the other 32602 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is Courtship safe?

It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).

Is it still maintained?

The GitHub repo last changed –, and the latest version (1.0.1) reached the registry today.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Docker on your computer.

What can I use instead?

In the same category: Spec Driven Development, Remote Desktop Commander, Rystic

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Spec Driven Development

by formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

Runs on your computer★ 440MITUpdated 14 months ago
Install

Remote Desktop Commander

by desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

Runs in the cloud★ 211Updated 2 days ago
Install

Rystic

by Rystic-Inc

Start, seed, clock, inspect and diff Rystic API simulators from your agent.

Runs on your computerUpdated today
Install

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

The protocol layer between your agent and your LÖVE game.

courtship (court) is an all-in-one, efficiency-governed MCP runtime and task-level benchmarking harness for LÖVE game development. It natively encapsulates live-game inspection, code execution, Agent Joypad input simulation, safe crash recovery, and an offline LÖVE 12 API docs index in a single zero-dependency static binary, while also capable of acting as a governing efficiency proxy in front of existing upstream servers.


1. Problem & Thesis

The LÖVE Model Context Protocol (MCP) ecosystem is functional but ungoverned. Raw bridges emit monolithic game state objects, eager documentation dumps, and hundreds of unpruned keys on every interaction, causing context bloat and runaway token cost.

Courtship acts as the measurement and remediation layer, proving three foundational claims:

ClaimGoalEmpirically MeasuredStatus
1. Standing Context TaxCut standing schema context by ≥70%76.5% reduction (340 vs 1,450 tokens)Proven
2. Response Shaping SpendCut per-task token spend by ≥40%53.4% average reductionProven
3. Unified Router EfficiencyBeat separate MCP servers for mixed tasks-40% latency, -33% calls via local FTS5Proven

2. Architecture

┌─────────────────┐       MCP (stdio/HTTP)       ┌────────────────────────────────┐

│ AI Client │◄────────────────────────────►│ court proxy │ │ (Claude Code, │ ~340 token │ ├─ meta-tools (5 standing) │ │ Cursor, IDE) │ standing surface │ ├─ heuristic router │ └─────────────────┘ │ ├─ response shaper & cursors │ │ ├─ session token ledger │ │ └─ upstream pool manager │ └───────────────┬────────────────┘ │ MCP ┌──────────────────────────┼──────────────────────────┐ ▼ ▼ ▼ LovePilot LÖVE 12 Docs Custom Game Servers │ (SQLite FTS5) ▼ LÖVE Game (TCP 12345)

The proxy operates as a daemon with an internal registry, not a dumb passthrough. Tool schemas remain daemon-side until hydrated on-demand, expiring after N inactive turns.


3. Core Capabilities

3.1 Standing Surface (< 500 Tokens)

Only 5 compact meta-tools are exposed permanently in standing context (~340 tokens), keeping context clean while allowing the agent to discover or invoke any game tool on-demand:

  • discover_tools(query, limit): Fuzzy discovery without schema ingestion.
  • load_tool_schema(name): Hydrates full JSON schema on-demand.
  • call_tool(name, args): Executes tool through compression filters.
  • love_task(goal, context): Intelligent intent router (docs vs inspect vs exec).
  • report_usage(): Session token, call, and latency accounting.
3.2 Built-in Game Capabilities (Available via call_tool & discover_tools)
  • simulate_input(sequence): Agent Joypad: Dispatches timed keyboard inputs (press, keydown, keyup).
  • step_frames(count, dt): Deterministic Frame Stepping: Advances physics by N ticks at fixed dt.
  • get_last_crash(): Safe Crash Diagnostics: Non-fatal stack trace and locals recovery.
  • clear_crash(): Resumes game loop after hot-patching.
  • visual_diff(image_a, image_b): Visual Regression: Compares two screenshots and returns bounding boxes.
  • get_objects(): Returns active entity coordinates and types in lean format.
  • get_screenshot(): Returns downscaled, cropped PNG framebuffers.
  • run_lua(code): Evaluates arbitrary Lua inside the game loop.
3.3 Safe Crash Interception (love.errhand override)

Prevents the infamous LÖVE "Blue Screen of Death" from crashing the process or severing the MCP bridge when an agent introduces a bug:

  • Replaces love.errhand to pause execution and render an in-game diagnostic HUD rather than terminating.
  • Extracts offending source file, line number, debug.traceback(), and active local variables.
  • Keeps the TCP socket listener active so the agent can inspect the failure via get_last_crash(), write a fix, and hot-reload.
3.4 Agent Joypad & Deterministic Physics Verification

Enables agents to test game mechanics that require time and movement:

  • Input Sequencing: Dispatches timed action series (e.g. hold D for 1.2s, press Space, release).
  • Frame Stepping: Advances love.update(dt) by exact frame counts at fixed delta time (default 1/60), eliminating wall-clock jitter when validating platformer physics and collisions.
3.5 8-Rule Response Shaper

Every tool return and notification passes through deterministic shaping:

  1. Field Projection: Prunes entity graphs to {id, type, name, x, y}.
  2. Null/Empty Stripping: Drops empty arrays, objects, and empty strings.
  3. Depth Capping: Deep object graphs (>3 levels) collapsed to " ".
  4. Array Slicing & Cursors: Arrays >50 items sliced with cursor hints stored in memory.
  5. Token Ceiling: Automatically truncates and budgets payloads exceeding max_tokens.
  6. Screenshot Compression: Region crop and bilinear downscaling (0.5 default) to prevent vision token blowouts.
  7. Delta Mode: Continuous streams (watch_game_state) suppress identical ticks to 0 tokens.
  8. Doc Pruning: Strips wiki navigation chrome and deduplicates code samples.
3.6 Zero-Instrumentation Launcher (court run)

Wraps any existing LÖVE game dynamically:

court run ./mygame --mcp-port 12345

Automatically mounts source files and hooks love.update, love.draw, and the bridge without modifying your repository. For manual integration, court init generates the 5-line inline hook.


4. Benchmark Results

Running court bench --compare lovepilot,courtship on reference suites:

task                     tokens   calls   p95ms  turns  success

fix-double-jump 316 2 110 2 PASS spawn-coin 307 2 110 2 PASS


TOTAL (per task) 311 2 110 2 2/2 vs lovepilot -54.3% -33% -40% - -

Reference Suites Breakdown
  • `platformer` (physics simulation + jump logic): -54.3% tokens
  • `ui_heavy` (draw call stress + minimap + HUD): -52.1% tokens
  • `menu_nested` (deep 6-level UI entity tree): -53.9% tokens

5. CLI Reference

Run the MCP Proxy
court proxy --port 12345

court proxy --eager # Fallback exposing full upstream tools

Run Benchmarks & CI Regression Gates
# Compare candidate against raw baseline

court bench --suite ./suites/platformer.yaml --compare lovepilot,courtship

Enforce CI gate (fails if regression exceeds threshold)

court bench --suite ./suites/platformer.yaml --ci --max-regression 10.0

Submit signed benchmark to community leaderboard

court bench --suite ./suites/platformer.yaml --compare lovepilot,courtship --submit

Launch LÖVE Game
court run ./fixtures/platformer

court run ./fixtures/platformer --shim-only

Offline Documentation Index
court docs search "rectangle"

court docs search "love.physics.newWorld"

Environment & Token Tax Audit
court doctor

court doctor --ci


6. Configuration (courtship.toml)

[proxy]

port = 12345 max_response_tokens = 1500 evict_after_turns = 6 delta_notifications = true eager = false

[upstream.lovepilot] transport = "stdio" command = "uvx" args = ["--from", "./love-mcp", "love-mcp-server"] shape = { get_objects = "lean", get_screenshot = "scaled" }

[upstream.docs] transport = "builtin" index = "./lua54-love12.sqlite"

[bench] suite_dir = "./suites" baseline = ".courtship/baseline.json" max_regression = "10%"


7. License

Licensed under:

  • Apache License, Version 2.0 (LICENSE-APACHE)
Ask PopNx