Manifest Studio
Manifest Studio is the heart of ContextMesh: a fully visual, drag-and-drop environment for building MCP manifests without hand-coding JSON. It combines:
Canvas – your grid-based workspace
Block Palette – six block/node types
Properties Panel – edit each node’s settings
Live JSON Preview – real-time manifest output
Validation Terminal – one-click manifest checks
1. UI Layout
flowchart LR
subgraph LeftSidebar [Node Palette]
Palette[Block Palette]
end
subgraph CanvasArea [Canvas]
Canvas[Visual Canvas]
Zoom[+ – ☐ 🔒]
end
subgraph BottomArea [Validation Terminal]
Terminal[▶ Validation Log (collapsed)]
end
subgraph RightSidebar [Properties & JSON]
Run[► Run Validation]
Props[“Select a node…” Properties Panel]
Preview[Live JSON Preview]
end
Palette --> Canvas
Canvas --> BottomArea
Canvas --> RightSidebarLeft Sidebar – drag any of six node types onto the canvas
Center Canvas – pan, zoom, snap-to-grid, arrange your manifest graph
Bottom Terminal – expand for timestamped validation logs
Right Sidebar – node properties editor, live JSON, and “Run Validation”
2. Canvas Overview
Drag blocks from the palette onto the grid.
Move and snap them into a tidy graph.
Connect with edges to define data flow.
Zoom or pan to navigate complex manifests.
3. Block Palette
Six core node types—color-coded by category:
flowchart LR
subgraph Palette
Meta([Manifest Metadata]):::meta
Cap([Capabilities]):::cap
Res([Resources Container]):::node
Tool([Tools Container]):::node
Prompt([Prompts Container]):::node
Samp([Sampling Container]):::node
Roots([Roots Container]):::node
Trans([Transport]):::node
Conn([Connector Edge]):::edge
end
classDef meta fill:#8AE8FF,stroke:#005f8a;
classDef cap fill:#A3E8FF,stroke:#006f8a;
classDef node fill:#CFA3FF,stroke:#5c005f;
classDef edge fill:#FFCF8A,stroke:#8a5f00;Manifest Metadata
Capabilities (toggle which containers appear)
Resources (file-like data definitions)
Tools (functions the model can call)
Prompts (template messages)
Sampling (LLM request settings)
Roots (workspace roots/URIs)
Transport (stdio, SSE, POST)
Connector Edge (directs data flow between nodes)
4. Node Types & Properties
Each node’s editable fields appear in the Properties Panel when selected.
4.1 Manifest Metadata
name
string
✔
Unique server identifier
version
string
✔
SemVer (e.g. “1.0.0”)
description
string
✘
Brief human-readable summary
author
string
✘
Author or organization name
4.2 Capabilities
resources
toggle
✘
Enable the Resources container
tools
toggle
✘
Enable the Tools container
prompts
toggle
✘
Enable the Prompts container
sampling
toggle
✘
Enable the Sampling container
roots
toggle
✘
Enable the Roots container
Enabling a capability spawns its container node on the canvas.
4.3 Transport
type
dropdown
✔
stdio
sseEndpoint
string
✘ (SSE)
Path for SSE GET (e.g. /sse)
postPath
string
✘ (POST)
POST endpoint (e.g. /messages)
5. Containers
When a capability is enabled, drag its container onto the canvas. Below are each container’s mandatory “properties” fields and how they serialize in JSON:
5.1 Resources Container
properties must include:
resources: array ofuri(string)name(string)
"resources": [
{
"uri": "file:///path/to/file.txt",
"name": "File Description"
}
]5.2 Tools Container
properties must include:
tools: array ofname(string)description(string)inputSchema:type:"object"properties: { … }
"tools": [
{
"name": "calculate_sum",
"description": "Add two numbers",
"inputSchema": {
"type": "object",
"properties": {
"a": { "type": "number" },
"b": { "type": "number" }
}
}
}
]5.3 Prompts Container
properties must include:
prompts: array ofname(string)description(string)template(string)
"prompts": [
{
"name": "GreetUser",
"description": "Say hello",
"template": "Hello, {{username}}!"
}
]5.4 Sampling Container
properties must include:
sampling: objectmodelPreferences(optional)temperature(number)maxTokens(integer)
"sampling": {
"temperature": 0.7,
"maxTokens": 200
}5.5 Roots Container
properties must include:
roots: array ofuri(string)name(string)
"roots": [
{
"uri": "file:///home/user/project",
"name": "Project Root"
}
]6. Connector Edge
from
node ID
✔
Source node’s output port
to
node ID
✔
Target node’s input port
Edges drive the JSON generator to nest definitions properly.
7. Properties Panel & Inline Validation
Select a node to reveal its form fields.
Required fields are marked with “*”.
Invalid inputs highlight red and display a tooltip.
JSON-schema fields (e.g.
inputSchema) validate on the fly.
8. Live JSON Preview
As you build, the right-sidebar preview streams out a fully compliant MCP manifest:
{
"serverInfo": { … },
"capabilities": { … },
"transport": { … },
"resources": [ … ],
"tools": [ … ],
"prompts": [ … ],
"sampling": { … },
"roots": [ … ]
}Click Copy or Download to export
manifest.json.Highlighting follows your canvas selection for easy debugging.
9. Run Validation & Log
Run Validation executes a suite of rule-based checks:
JSON syntax
Metadata presence
Unique IDs & names
Each container’s required fields
Edge rules & port matching
No extraneous fields
Entries appear timestamped; failures in red.
Final tally: “X passed, Y failed.”
Collapse with the “–” button.
10. Quick-Start Example
Add Manifest Metadata → set
name,version.Enable Capabilities → drag Prompts + Sampling.
Define a Prompt → enter
name,template.Configure Sampling → choose model,
temperature,maxTokens.Wire Prompt → Sampling via Connector Edge.
Run Validation, fix any errors.
Download your
manifest.jsonor Publish.
With Manifest Studio, you never write raw JSON—just drag, drop, configure, connect, and export. 🎉
Last updated