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