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

GenHTTP Lambda

by MDA2AVversion 0.1.0i★ –iRuns in the cloud
Registry namedev.genhttp/lambda

Install

Overview

Description from the maker (original English)

Write, deploy and host small C# web services and sites at a public address.

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 in the cloud
  • Transport: Streamable HTTP
  • Category: Developer tools

Install

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

Before you install

  • Basic checks: 1 of 1 passed
  • Runs on the maker’s server: what you ask it goes through their server.
  • 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 …”.

Works in Claude on the web, desktop and mobile:

  1. Open Settings → Connectors
  2. Press Add custom connector
  3. Paste the address below and press Add
  4. If it asks you to sign in, sign in with the maker
SettingsConnectors1+ Add2https://…3
https://genhttp.dev/mcp

Run this in your terminal

claude mcp add --transport http lambda https://genhttp.dev/mcp

Open in Cursor

Or copy the settings yourself

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

{
  "mcpServers": {
    "lambda": {
      "url": "https://genhttp.dev/mcp"
    }
  }
}

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": {
    "lambda": {
      "type": "http",
      "url": "https://genhttp.dev/mcp"
    }
  }
}

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.

ChatGPT connects only to servers on the internet:

  1. Open ChatGPT on the web → Settings → Connectors (Apps)
  2. Press Create or Add (some plans need Developer mode under Advanced first)
  3. Paste the address below, give it a name and save
  4. If it asks you to sign in, sign in with the maker
SettingsConnectors1+ Create2https://…3
https://genhttp.dev/mcp

Menu names can differ slightly by plan and over time.

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

We have not read this server’s tool list yet; we check endpoints in rotation.

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 6, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified against the domain genhttp.dev (the registry checks domain ownership)

  • … 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 checked yet

    Endpoint responds

    Not checked yet; we check endpoints in rotation

  • … Not checked yet

    Sign-in with OAuth

    Not checked yet; we check endpoints in rotation

  • … Not checked yet

    No hidden instructions in tool descriptions

    Not checked yet; we read the tool list when we check the endpoint

Compared with others in Developer toolsi

  • More stars than 0% of the other 1388 servers in this category
  • Published to the registry more recently than 58% of the other 1388 servers in this category
  • Basic checks equal to or better than 100% of the other 1388 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 GenHTTP Lambda 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 in the maker’s cloud. Connect over the internet with nothing to install, but what you send passes through the maker’s servers.

Is it still maintained?

The GitHub repo last changed –, and the latest version (0.1.0) reached the registry 40 days ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.

What can I use instead?

In the same category: GitHub, Desktop Commander, Cloudflare MCP

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

GitHub

by github

GitHub’s official server lets AI read and manage code, issues and pull requests in your account. Use GitHub’s hosted version or run it locally with Docker.

Computer or cloud★ 34,245MITUpdated 3 days ago
Install

Desktop Commander

by wonderwhy-er

MCP server for terminal commands, file operations, and process management

Runs on your computer★ 10,225MITUpdated 15 days ago
Install

Cloudflare MCP

by cloudflare

Cloudflare MCP servers

Runs in the cloud★ 4,446Apache-2.0Updated 14 months ago
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.

GenHTTP Lambda

Write a C# snippet that returns a GenHTTP IHandler, press deploy, and get a public URL that serves it. The snippet is compiled with Roslyn at runtime and the resulting handler is hosted by the same GenHTTP server that serves this application.

return Inline.Create()

.Get(() => "Hello from my lambda!");

Quick start

docker compose up --build

The application is then available at http://localhost:8080/. Its data - the SQLite database, the stored code, and the workspaces and databases of the lambdas - lives in a named volume mounted at /data. The lambdas answer at subdomains of LAMBDA_HOSTING_URL, one each (see Where the lambdas answer).

Developing locally

Two processes: the .NET server, and Vite serving the frontend with hot reload.

# the server, on http://localhost:8080/

dotnet run --project src/GenHTTP.Lambda

the frontend, on http://localhost:5173/ (proxies /api, /lambda and /features to the server)

cd src/Frontend && npm install && npm run dev

Work against http://localhost:5173/ while developing. The lambdas answer at subdomains of localhost named after their keys - http://quiz.localhost:8080/ - which browsers resolve without a record. The server on its own answers with a placeholder page until a frontend has been built into its web root, which is what npm run build does:

cd src/Frontend && npm run build   # writes src/GenHTTP.Lambda/wwwroot

English is the source of every page; the other languages are translated by script and agent, so that only what changed is read and written:

cd src/Frontend

npm run translations -- extract # a request per language in .translations/

one translator agent per request (.claude/agents/translator.md, on Sonnet)

npm run translations -- apply # the answers into the catalogs, checked npm run translations -- check # every language against English

CLAUDE.md ("How a change is translated") has the rules.

Build and test everything the way CI does:

dotnet build GenHTTP.Lambda.slnx -c Release

dotnet test GenHTTP.Lambda.slnx -c Release

The tests compile and execute real lambdas against a real server on a random port, each against its own temporary data directory.

Routes

RouteServes
/the landing page
/buildthe text box for somebody who wants an app built, no code
/shipfor developers: connect an agent and publish what it built
/docsthe guide for owners
/showcasethe lambdas their owners chose to show
/sourcethe lambdas whose owners published their code
/source/:publicKeythe published code of one: its files, documentation, tests and changes, per version
/source/:publicKey.gitthe published code as a git repository, read only
/enterprise, /terms, /privacy, /imprintthe company pages
/editor/createthe creation assistant
/editor/:privateKeythe editor for one lambda
/editor/:privateKey/:name.gitthe lambda as a git repository, to clone and push to (any name; the editor offers the public key)
/lambda/:publicKey/…where a lambda answered once: a permanent redirect to where it answers now, with the rest of the path and the query
/features/:featurethe preview of a feature, while it is online
any path, at {publicKey}.{hosting domain}the deployed handler - or, while the lambda answers at a domain of its own, a permanent redirect there
any path, at a lambda's own domainthe deployed handler of a premium lambda with that domain
the hosting domain itselfa page saying what is hosted there, leading to the site
/api/v1/everything the editor calls, see below
/mcpthe same, for agents
/adminevery lambda on the server, for whoever runs it
API

Browsable at /api/v1/scalar/, described by /api/v1/openapi.json (or .yaml). The description is the reference for whoever calls the API: it opens with an introduction (getting started, keys, files, limits, errors), groups the operations by what they are about, and says of each what it does, what it leaves alone and every way it is refused. It is written with GenHTTP's documentation attributes beside the code (see ApiDocumentation), and ApiDocumentationTests keeps it complete.

A lambda is addressed by its editor key, which is also what authorizes the call. Things that can be listed, read, created or changed are resources; what is a process rather than a thing is a verb in the path. A refusal is answered with a status and { status, error, message }, where error is Invalid (400), Forbidden (403), NotFound (404), Conflict (409) or TooMany (429).

EndpointDoes
POST /lambdascreates a lambda (optionally with view: Full or Simple)
GET / PATCH / DELETE /lambdas/:privateKeyreads, changes (its key, its view), removes it
GET /lambdas/:privateKey/exportthe newest version as a runnable .NET 10 project with a Dockerfile (zip), with its database, see below
GET / POST /lambdas/:privateKey/versionslists versions, saves a new one (optionally with specification and change)
GET /lambdas/:privateKey/versions/:versionreads one version (?folder=docs/ for its documentation alone, resources/ for its resources)
GET /lambdas/:privateKey/versions/:version/zipone version's files as a zip (?layout=project laid out as a clone)
POST /lambdas/:privateKey/versions/zipsaves a zip of all files as a new version (?layout=project for one laid out as a clone)
POST /lambdas/:privateKey/versions/changeschanges some files of the newest version, as a new one
GET /lambdas/:privateKey/deploymentwhat is online, and until when
POST /lambdas/:privateKey/deployment/start / stopputs a version online, takes it off
GET /lambdas/:privateKey/deployment/historyevery stretch it was online, and what ended it
GET /lambdas/:privateKey/summarythe dashboard: state, traffic, problems, storage, what the documentation says
GET /lambdas/:privateKey/trafficrequests by minute and quarter hour, statuses, paths
GET /lambdas/:privateKey/logsits own log, followed with ?since=; no visitor addresses
GET /lambdas/:privateKey/agentthe agent's change of it - under way, or the last one - and how many are left today
POST /lambdas/:privateKey/agent/start / stopasks the agent for a change, stops it
GET /lambdas/:privateKey/datathe kinds of data it keeps, and how full each is
GET / PUT / DELETE /lambdas/:privateKey/data/:kindone kind (database, workspace, secrets); switches it on; switches it off and deletes what it held
GET /lambdas/:privateKey/databaseits database: tables and views, their columns and rows, how full it is, whether the code connects
GET /lambdas/:privateKey/database/tables/:tablea page of one table's rows, newest first (offset, limit, order, descending)
GET /lambdas/:privateKey/secretsthe secrets by name, which names the code reads, and which of those have no value
PUT / DELETE /lambdas/:privateKey/secrets/:namestores a value ({ "value": … }), never read back; removes one
GET /lambdas/:privateKey/fileslists the workspace
GET / PUT / DELETE /lambdas/:privateKey/files/:pathone file, its path encoded (a%2Fb.txt), as base64 up to 32 MB
GET / PUT /lambdas/:privateKey/files/:path/contentone file as it is, streamed, however large
PUT /lambdas/:privateKey/folders/:pathmakes a folder
GET / POST /lambdas/:privateKey/featureslists the features, starts one (name, specification, base)
GET / PATCH / DELETE /lambdas/:privateKey/features/:featureone feature with its files (?folder= as for a version); changes its name, notes or base; deletes it
PUT /lambdas/:privateKey/features/:feature/filesreplaces its files (?deploy=true puts its preview online)
POST /lambdas/:privateKey/features/:feature/changeschanges some of its files
GET / PUT /lambdas/:privateKey/features/:feature/zipits files as a zip; a zip put back into it (both with ?layout=project)
POST /lambdas/:privateKey/features/:feature/preview/start / stopputs its preview online, takes it off
POST /lambdas/:privateKey/features/:feature/mergemakes it the next version and deletes it (deploy to put that online)
GET /lambdas/:privateKey/features/:feature/logswhat its preview has been doing
GET /lambdas/:privateKey/features/:feature/data, POST …/data/refreshits copy of the data; a fresh copy of the lambda's
…/features/:feature/workspace[/:path[/content]], …/folders/:pathits copy of the workspace, as files and folders are the lambda's
…/features/:feature/secrets[/:name]its copy of the secrets, as secrets are the lambda's
…/features/:feature/database[/tables/:table]its copy of the database, as database is the lambda's
POST /lambdas/:privateKey/code/checkcompiles without saving
POST /lambdas/:privateKey/code/semantics, completions, definitionwhat the editor asks the compiler
GET /keys/:publicKeywhether a key is free, and if not, online
GET /demosthe demos, and the keys to read them with
GET / PUT / DELETE /lambdas/:privateKey/showcaseits entry on the showcase: read, list it (title, description, picture), take it off
GET /lambdas/:privateKey/domain, PUT / DELETEthe domain of a premium lambda, whether it is served, and what it resolves to
GET /showcases, GET /showcases/:publicKey/imagewhat /showcase lists, and a picture
GET / PUT / DELETE /lambdas/:privateKey/analyticswho visits it, by day, over the last days (at most what its tier shows); switches counting on; switches it off and deletes what was counted, see Analytics
GET / PUT / DELETE /lambdas/:privateKey/sourcewhether its code is published and under which license, the licenses on offer; publishes it or changes the license (license, author); takes it down
GET /sourceswhat /source lists (search, order: stars, updated, published, skip, take)
GET /sources/:publicKeya published source: what it is, its license, where it runs, every version and what it changed, a ticket to star it with

| GET /sources/:publicKey/versions/:version | the files of a version as its project has them, packed on the first reque

Only the beginning is shown; read the rest in the repo

Ask PopNx