MCP CU Chat Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP CU Chat Serverrender the CU field schema"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 intodist/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 buildRegister 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 withfieldSchema.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 toolsrender_cu_schemaC
Render CU field schema as a right-side style table in VS Code Chat
| Name | Required | Description | Default |
|---|---|---|---|
| schemaPath | No | ||
| fieldSchema | No |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| fieldName | Yes | ||
| description | Yes |
TDQS
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.
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.
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.
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.
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.
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.
2 tool updates
v0.1.0- First observed
render_cu_schema - First observed
update_field_description
TDQS
Scored across 2 tools
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.
Both tool names follow a consistent verb_noun pattern using snake_case (render_cu_schema, update_field_description), making them predictable and readable.
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.
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
Related MCP Connectors
An agent-native database over MCP: shared, validated, structured records in every AI chat.
Renders interactive Chart.js charts and dashboards inline in AI conversations.
Live data grids for AI agents. Push structured data; humans review, agents read back via MCP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables 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
- FlicenseNot gradedqualityDmaintenanceProvides 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-
- AlicenseNot gradedqualityDmaintenanceEnables to manage Storyblok components through natural language descriptions, including creating and updating components with various field types.32 npm9MIT
- AlicenseAqualityAmaintenanceGenerates interactive HTML cards (tabs, tables, charts, forms, videos, and more) to render inside desktop chat clients, making conversation content richer and more structured.19MIT