# Delight: usage and API guide

Delight (`delight-mcp`) is a read-only reference app by Full Iron design studio. It serves the included public project catalog through MCP, WebMCP and MCP Apps. Adapting it to a different catalog requires changing the source implementation; the CLI does not accept a website URL or custom catalog file.

## Install and verify

Requires Node.js 22 or newer.

```sh
npx delight-mcp@0.1.3
```

Open http://127.0.0.1:3001 for the installed demo. Its Streamable HTTP endpoint is http://127.0.0.1:3001/mcp. Search for `Python`: success means the gallery shows matching projects and source links. Use `--help` for CLI options. Set `PORT` to change the port; in PowerShell, use `$env:PORT='3002'` before launching.

## Choose a connection

| Need | Connection | Requirement |
| --- | --- | --- |
| Local assistant | MCP over stdio | A client that can launch a subprocess |
| Hosted assistant | MCP over Streamable HTTP | A public HTTPS server and compatible custom-app host |
| Browser agent | WebMCP | A browser exposing the experimental `document.modelContext` API |
| Interactive gallery in chat | MCP Apps | An MCP host advertising Apps support |

Ordinary browsers can show the demo without WebMCP. A working MCP connection does not imply support for interactive Apps. Installing the package does not automatically connect ChatGPT or Codex.

## Local MCP client

For clients using an `mcpServers` JSON configuration:

```json
{"mcpServers":{"delight":{"command":"npx","args":["-y","delight-mcp@0.1.3","--stdio"]}}}
```

Use your client's configuration format. Some Windows clients require `npx.cmd`. Stdio mode reserves stdout for JSON-RPC and does not start the HTTP demo.

## Tool reference

Discover the current schemas using MCP `tools/list` or the browser export `agentToolDefinitions`.

| Tool | Arguments | Result |
| --- | --- | --- |
| `get_profile` | optional `locale` | Public background, focus and source links |
| `search_portfolio` | `query`, optional `locale`, `limit` | Matches, stable IDs, total count and sources |
| `get_project` | `id`, optional `locale` | Project description, evidence, limitations and links |
| `get_contact_options` | optional `locale` | Public contact links; sends no messages |

`locale` accepts `en` or `uk`. Search requires 1–120 Unicode characters, including a non-whitespace character; `limit` accepts integers 1–6. Unknown properties, invalid locales and unknown project IDs return errors. Obtain project IDs from search results instead of deriving them from titles.

For a project question, search first, inspect the selected project, then answer with source links and stated limitations. An empty search is a valid outcome. Project descriptions are catalog claims, not independent audits. Search and project tools attach `ui://full-iron/project-gallery`; hosts without Apps support can still use structured results.

## Browser integration

Install `delight-mcp` and import its browser entry in a client-side application or bundler:

```ts
import { registerPortfolioWebTools, type PortfolioModelContext } from 'delight-mcp/webmcp'

const controller = new AbortController()
const context = (document as Document & {
  modelContext?: PortfolioModelContext
}).modelContext
const available = await registerPortfolioWebTools(context, controller.signal)
// false means WebMCP is unavailable; keep the ordinary page usable.
// On component/document teardown:
controller.abort()
```

Register once per lifecycle. The browser entry has no Node.js imports and includes TypeScript declarations. It also exports `agentToolDefinitions`, `callAgentTool` and `toolResult` for the same included catalog. WebMCP availability depends on the browser; feature-detect it. See the [Chrome imperative API reference](https://developer.chrome.com/docs/ai/webmcp/imperative-api).

## Hosted MCP and deployment

The public reference endpoint is https://fulliron-portfolio-agent.vercel.app/mcp. A compatible cloud host can connect without authentication for this public catalog. The portfolio website is static: https://full-iron.com/mcp is not an MCP endpoint. Cloud clients cannot reach your computer's loopback address.

For your own Node.js host, import `createServer` from `delight-mcp/server` and connect it to an MCP SDK transport. The package includes an `examples/vercel` deployment project. Copy it from `node_modules/delight-mcp/examples/vercel`, install its dependencies and deploy it in your own Vercel account.

Public HTTP binding requires `HOST=0.0.0.0`, an appropriate `PORT`, and explicit `MCP_ALLOWED_HOSTS` and `MCP_ALLOWED_ORIGINS`. Both allowlists use hostnames without schemes or ports. Configure your actual deployment hostnames and HTTPS proxy; avoid wildcards. The included tools use only public data and the server provides no authentication. Private-data authorization, TLS and rate limits belong to the deployment.

## Troubleshooting

| Symptom | Next step |
| --- | --- |
| Local page cannot open | Keep the CLI running; check its printed URL and whether the port is occupied. |
| Browser registration returns false | Use the regular demo or MCP; check the browser's WebMCP support. |
| Tools work but gallery does not render | Check the host's MCP Apps support; use structured results and links. |
| Cloud client cannot connect | Use a public HTTPS `/mcp` endpoint instead of `127.0.0.1`. |
| Host/origin rejected | Match the deployment hostname to the explicit allowlists. |
| Validation error | Check the discovered schema and use a returned project ID. |

No API key or model inference is required to run the server. The tools do not upload files, access private repositories or send messages. The compiled runtime works without access to the private source repository.

[Documentation](https://full-iron.com/docs/delight-mcp) · [Live demo](https://full-iron.com/portfolio-agent) · [npm](https://www.npmjs.com/package/delight-mcp) · [Full Iron](https://full-iron.com)
