Skip to main content
Glama
changjian-wang

MCP CU Chat Server

README.md
# MCP CU Chat Server

A local MCP (Model Context Protocol) server that renders Azure Content Understanding (CU)
field schema as an **interactive table card directly inside VS Code Chat**, using the
MCP Apps extension (SEP-1865).

## Features

- Renders CU field schema as a CU Studio–style table: Value Type / Method dropdowns,
  Source & Confidence checkbox, header info icons, truncated descriptions.
- Interactive: edit a field's description in the card; the edit is persisted back to the
  server (via `callServerTool`) and survives re-renders.
- Self-contained MCP App HTML bundle (esbuild), served over stdio.

## Project structure

- `server.mjs` — MCP server: tool + UI resource registration, in-memory persistence.
- `view/main.mjs` — View logic: table rendering, editing, pulling latest from server.
- `view/template.html` — View HTML skeleton + styles.
- `build.mjs` — esbuild script that bundles the View into `dist/mcp-app.html`.
- `data/sample-field-schema.json` — sample CU field schema (13 fields).
- `test-smoke.mjs` — smoke test that verifies the MCP protocol without VS Code.

## Setup

```
npm install
npm run build
```

## Register in VS Code

Add to your user `mcp.json` (Command Palette → "MCP: Open User Configuration"):

```json
{
  "servers": {
    "cu-schema-viewer": {
      "type": "stdio",
      "command": "node",
      "args": ["<absolute-path>/server.mjs"]
    }
  }
}
```

Restart the server (Command Palette → "MCP: List Servers" → cu-schema-viewer → Restart),
then in **Agent mode** invoke the `render_cu_schema` tool.

## Tools

- `render_cu_schema` — render the CU field schema table.
  - `schemaPath` (optional): absolute path to a JSON file with `fieldSchema.fields`.
  - `fieldSchema` (optional): inline fieldSchema object.
- `update_field_description` (UI-only) — persists an edited field description.

## Gotcha: MCP Apps `ui://` authority must equal the server name

VS Code routes UI resource requests by the **authority** segment of the `ui://` URI. It
**must equal the server name** in `mcp.json`, otherwise VS Code never sends `resources/read`
and the card won't render (you only get text output). This server uses
`ui://cu-schema-viewer/schema` to match the server name `cu-schema-viewer`.

TDQS

B3.1/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: one renders a schema table, the other persists a field description edit. There is no ambiguity or overlap.

Naming Consistency5/5

Both tool names follow a consistent verb_noun pattern using snake_case (render_cu_schema, update_field_description), making them predictable and readable.

Tool Count3/5

With only 2 tools, the set feels thin for a server named 'MCP CU Chat Server,' which implies broader functionality. The scope is borderline minimal.

Completeness2/5

The tools cover only rendering and updating a field description, leaving out essential operations like creating, deleting, or listing fields. This is a significant gap for CU schema management.

Maintenance

ActivityStale
ResponsivenessNo issues