Skip to main content
Glama
changjian-wang

MCP CU Chat Server

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.

Related MCP server: Azure Storage MCP Apps Demo

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"):

{
  "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.

Available Tools

2 tools
render_cu_schemaC

Render CU field schema as a right-side style table in VS Code Chat

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaPathNo
fieldSchemaNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose any behavioral traits such as side effects, permissions, output format, or limitations. It only states the high-level action without further detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise with a single sentence. However, it is not overly long, but could be more informative without losing brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 2 parameters including a nested object, no output schema, and no annotations, the description is insufficient. It lacks explanation of what 'CU field schema' means, how to use the parameters, and what the output or behavior is.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not explain any of the two parameters (schemaPath, fieldSchema) or their roles. With 0% schema description coverage, no additional meaning is added beyond the parameter names and types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Render'), the resource ('CU field schema'), and the context ('as a right-side style table in VS Code Chat'). It distinguishes the tool from its sibling 'update_field_description' which performs a different operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool vs alternatives, nor any conditions for use. The sibling tool is mentioned but not differentiated in terms of usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_field_descriptionC

Persist an edited CU field description (called by the UI panel).

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldNameYes
descriptionYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description should disclose behavioral traits. It indicates a write/persist operation but fails to describe authentication needs, rate limits, side effects, or what happens on conflict or error. This is insufficient for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no unnecessary words, which is efficient. However, it is under-specified and lacks crucial details, making the conciseness a trade-off rather than a strength.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given two parameters, no output schema, and no annotations, the description is incomplete. It does not explain what 'persisting' entails, whether the operation is idempotent, or what response to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, and the tool description does not add any meaning to the parameters 'fieldName' and 'description'. It does not explain what field names are valid or what the description format should be.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the verb 'Persist' and identifies the resource as 'CU field description', making the action clear. It also notes it is called by the UI panel, distinguishing it from the sibling 'render_cu_schema' which likely deals with rendering or reloading the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that this tool is used when the UI panel triggers an edit persist action, but it does not provide explicit guidance on when to use it versus alternatives, nor does it state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv0.1.0
    • First observedrender_cu_schema
    • First observedupdate_field_description

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables comprehensive schema and solution management for Microsoft Dataverse, including operations for tables, columns, relationships, and security roles via the Dataverse Web API. It also supports PowerPages configuration, automated WebAPI call generation, and schema visualization through Mermaid ERD diagrams.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides an interactive dashboard within VS Code Copilot to manage Azure Storage accounts, containers, and blobs through a rich UI. It enables users to visualize storage resources, perform CRUD operations, and generate SAS tokens using the Model Context Protocol.
    2
    -
  • A
    license
    A
    quality
    A
    maintenance
    Generates interactive HTML cards (tabs, tables, charts, forms, videos, and more) to render inside desktop chat clients, making conversation content richer and more structured.
    19
    MIT