Template
3D globe widget for MCP Apps
Put places on a WebGL globe inside the conversation. Each place becomes a marker sized by its value, the globe spins on its own and the person can drag it around.
Uses three.js
Where are our customers? Break it down by city, I want to see it on a map.
Used show_globe_3d
The house design: black outline, butter yellow and a marker swipe under the title.
The data it takes
| Field | Type | What it is |
|---|---|---|
| titlerequired | string | |
| subtitle | string | |
| placesrequired | object[] | |
| └ namerequired | string | |
| └ latrequired | number | |
| └ lonrequired | number | |
| └ value | number | Sets the marker size |
Sample data
{
"title": "Customers by city",
"subtitle": "Sample data",
"places": [
{
"name": "Madrid",
"lat": 40.42,
"lon": -3.7,
"value": 42
},
{
"name": "New York",
"lat": 40.71,
"lon": -74.01,
"value": 21
},
{
"name": "London",
"lat": 51.51,
"lon": -0.13,
"value": 18
},
{
"name": "Mexico City",
"lat": 19.43,
"lon": -99.13,
"value": 15
},
{
"name": "Sydney",
"lat": -33.87,
"lon": 151.21,
"value": 12
},
{
"name": "Stockholm",
"lat": 59.33,
"lon": 18.07,
"value": 9
}
]
}The tool that shows it
A widget made from this template is shown by one tool. The model reads its description to decide when to call it and fills the input schema with the data. This is the definition Widgetry exports:
{
"name": "show_globe_3d",
"title": "3D globe",
"description": "Shows places on an interactive 3D globe: each place has a name, latitude, longitude and an optional value that sets the size of its marker. The list of places sits beside it. Use it for offices, customers, events or any data spread across the world.",
"inputSchema": {
"type": "object",
"required": [
"title",
"places"
],
"properties": {
"title": {
"type": "string"
},
"subtitle": {
"type": "string"
},
"places": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": [
"name",
"lat",
"lon"
],
"properties": {
"name": {
"type": "string"
},
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"lon": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"value": {
"type": "number",
"minimum": 0,
"description": "Sets the marker size"
}
}
}
}
}
}
}More templates
- BoardColumns of cards with labels, dates and people. Like a Trello board.
- Aurora cardA featured announcement with a headline, a figure and a button, dressed differently by each design.
- WeatherThe weather for a place with animated SVG icons and the coming hours; each design paints its own sky.
- Progress ringsGoals as SVG rings that fill up as they appear, with their percentage.
- Area chartA series over time as an SVG curve with a gradient fill that draws itself in.
- 3D carouselCards on a ring that spins in 3D with CSS perspective. Pauses on hover.
- CountdownDays, hours, minutes and seconds to an event, ticking live with a little jump.
- MilestonesFigures that count up from zero and cascade in, animated with GSAP.
- DonutParts of a whole with Chart.js: animates in and responds to the mouse.
- MetricsA row of key figures with their change against the previous period.
- Bar chartHorizontal bars with their values, in the order they arrive.
- TableRows and columns with a sticky header; the caller decides the columns.