Globestudio
You can use this MCP server to explore Globestudio presets and build, decode, embed, or preview customized dotted-globe maps.
list_presets: List every look preset with id, name, blurb, vibe tags, thumbnail URL, and embed URL.find_presets({ vibe }): Fuzzy-find presets by style word or short phrase, returning ranked matches.build_share_url({ look?, share_url?, selection?, dotColor?, background?, density?, shape?, config? }): Build a studio share URL and bare/embedURL, starting from a preset or modifying an existing Globestudio link.read_share_url({ url }): Decode a studio share link,/looks/<id>link, or/embedURL into its look and settings.embed_snippet({ look, framework, width?, height? }): Generate paste-ready embed code asiframeHTML,reactcomponent, orscript-tagloader.preview_url({ look }): Get the canonical live/embedURL and PNG thumbnail URL for one preset.Connect remotely at
https://globestudio.app/mcp(streamable HTTP, stateless, no account/API key) or run locally withnpx -y @globestudio/mcp(stdio).
Allows embedding animated dotted globes and maps directly into Figma designs via a Figma plugin.
Offers a Framer component for integrating animated globes into Framer projects.
Enables embedding globes into Notion pages via embed snippets.
Allows embedding globes in React applications via embed snippets or components.
Provides a copy-paste embed snippet to add interactive globes to Webflow sites.
Provides a WordPress plugin for adding dotted maps and globes to WordPress sites.
@globestudio/mcp
Model Context Protocol server for Globestudio. It lets an MCP-compatible AI assistant make dotted-globe maps, build share URLs and get embed snippets from chat.
Connect by URL (no install)
Globestudio hosts this server at https://globestudio.app/mcp (streamable HTTP). You don't need to install anything, and there is no account or API key.
Claude Code
claude mcp add --transport http globestudio https://globestudio.app/mcpClaude (claude.ai and Claude Desktop): Open in Claude's connector directory. Or open Customize, then Connectors, click +, then Add custom connector. Paste https://globestudio.app/mcp and click Add. Custom connectors work on Free (one connector), Pro, Max, Team and Enterprise plans; on Team and Enterprise an Owner adds it first.
Codex
codex mcp add globestudio --url https://globestudio.app/mcpOr add it to ~/.codex/config.toml:
[mcp_servers.globestudio]
url = "https://globestudio.app/mcp"Cursor: add it to ~/.cursor/mcp.json (every project) or .cursor/mcp.json (one project):
{
"mcpServers": {
"globestudio": {
"url": "https://globestudio.app/mcp"
}
}
}Or install it in one click by opening this link:
cursor://anysphere.cursor-deeplink/mcp/install?name=globestudio&config=eyJ1cmwiOiJodHRwczovL2dsb2Jlc3R1ZGlvLmFwcC9tY3AifQ==Any other MCP client: add https://globestudio.app/mcp as a remote server using the streamable HTTP transport.
The hosted server is stateless: every request gets a fresh server, nothing is stored between requests, and replies are plain JSON. It takes POST only (GET and DELETE answer 405), requests up to 128 KB and batches of up to 10 messages.
Related MCP server: Liveblocks
Run it locally (stdio)
For Claude Code:
claude mcp add globestudio -- npx -y @globestudio/mcpFor Claude Desktop, add this to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"globestudio": {
"command": "npx",
"args": ["-y", "@globestudio/mcp"]
}
}
}For Cursor, Cody, Continue or any other MCP-over-stdio client: point it at npx -y @globestudio/mcp the same way.
Restart your AI tool. Globestudio tools should now appear in its tool catalog.
What it does
Six tools. None of them call an external API, because the preset catalog ships inside the package:
Tool | Purpose |
| Every shipped look: id, name, blurb, vibe tags, thumbnail URL, embed URL. |
| Find looks by a style word or a short phrase. |
| Build globe URLs: a studio share URL and an |
| Decode a Globestudio link (studio share link, |
| Paste-ready code: |
| The canonical live |
Each tool has a short title, such as Find looks by style, and is marked read-only, not destructive and closed world, since it only builds or reads links. ChatGPT treats a tool without the read-only mark as a write action and asks the user to confirm it.
Example prompts
"Show me every Globestudio preset with a retro vibe."
"Make me a clean dotted globe with cyan dots and give me a share URL."
"Generate the React component for the Vapor preset at 1200×600."
"Here is my globe: https://globestudio.app/?c=… Make the dots red and show only Europe."
Privacy
The hosted server reads only the arguments of each tool call, such as a look id, a style word, a color, a region or a Globestudio link. It answers from those and its built-in list of looks, and keeps nothing: no storage, no accounts, no cookies and no calls to any other service. It never sees the rest of your conversation. Vercel, which hosts it, sees each request's IP address, as any web host does, and keeps a request log for up to 30 days with the time, IP address, path, status, user agent and region of each request, not the tool arguments. Run locally with npx -y @globestudio/mcp, the server sends nothing anywhere. The full policy is at globestudio.app/privacy, and the terms of use at globestudio.app/terms.
Troubleshooting
The tools don't show up. Check that the URL is exactly
https://globestudio.app/mcpand that the client uses streamable HTTP (in Claude Code,--transport http). Opening the URL in a browser shows "Method not allowed". That is expected: the endpoint takes POST only."Unknown preset". Ask for the list of looks (
list_presets) and use one of the ids it returns."is not a URL".
read_share_urlandshare_urltake a full Globestudio link: a studio link with?c=, a/looks/<id>link or an/embedURL."Request body is larger than 128 KB" or "A batch can hold up to 10 messages". The request was too big. Send fewer settings, or one call at a time.
Anything else. Open an issue on GitHub.
Source
This package is part of the Globestudio monorepo. The preset catalog mirrors src/data/look-presets.js from the main app. New presets are added here in the same release.
License
MIT. See LICENSE.
Available Tools
6 toolsembed_snippetGet embed codeARead-onlyIdempotentInspect
Generate paste-ready embed code for any preset. Choose 'iframe' (HTML for Webflow / Notion / WordPress), 'react' (drop-in component), or 'script-tag' (vanilla JS loader).
| Name | Required | Description | Default |
|---|---|---|---|
| look | Yes | Preset id. | |
| width | No | Number of pixels OR string like '100%'. | |
| height | No | Number of pixels OR string. | |
| framework | No | iframe |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and a closed-world scope, so the safety profile is fully covered. The description adds some value by revealing the shape of the return (paste-ready code in three flavors), which matters given there is no output schema, but it says nothing about auth, limits, or whether the code embeds live content.
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?
Two sentences, zero filler, and the core action is front-loaded before the framework options. Every clause carries information the agent needs to pick a framework value.
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?
With no output schema, the description correctly compensates by describing what comes back (paste-ready embed code). The required 'look' parameter is only covered as "Preset id." in the schema, but sibling find_presets/list_presets reasonably supply preset discovery, so the gap is modest.
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?
Schema coverage is 75%, so the baseline is 3, but the description maps each enum member to a concrete target (iframe → HTML for Webflow/Notion/WordPress, react → drop-in component, script-tag → vanilla JS loader), which is meaning beyond the bare enum. The width/height parameters are left entirely to the schema.
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?
States a specific verb+resource ("generate ... embed code") and the scope ("for any preset"), so an agent can tell it produces embed snippets rather than URLs. It does not, however, distinguish itself from siblings like build_share_url or preview_url, which also emit user-facing artifacts.
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 gives selection guidance for the framework parameter (iframe for Webflow/Notion/WordPress, react for a drop-in component), which is genuinely useful routing info. But it never says when to use this tool versus build_share_url, preview_url, or read_share_url — usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_presetsFind looks by styleARead-onlyIdempotentInspect
Fuzzy-find presets by vibe / aesthetic / use-case keyword. Examples: 'synthwave' → Vapor; 'print' → Halftone, Risograph, Newsprint; 'retro' → CRT, BadTV, Pixel; 'glow' → Aurora, Bloom. Returns ranked matches.
| Name | Required | Description | Default |
|---|---|---|---|
| vibe | Yes | Vibe keyword. Single word or short phrase. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description only needs to add behavior beyond that. It does: matching is fuzzy rather than exact, and results come back "ranked matches," which tells the agent to expect approximate, ordered output. Limits (result cap, match threshold) are still undisclosed.
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?
Front-loaded verb and resource, then four compact examples on one line, then the return behavior. No sentence is padding; the examples earn their space by showing input semantics that the schema does not.
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?
For a one-parameter search tool with full schema coverage and no output schema, the description supplies input semantics and return behavior ("ranked matches"), which is nearly everything needed. It stops short of describing result shape or how matches feed into sibling tools like preview_url or build_share_url.
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?
Schema coverage is 100% and the single parameter is documented as "Single word or short phrase," so baseline is 3. The description goes further by demonstrating the semantic space of acceptable keywords (style, aesthetic, use-case) with concrete mappings, which tells the agent what kinds of tokens actually match.
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?
States a specific verb and mechanism ("Fuzzy-find presets by vibe / aesthetic / use-case keyword") against a clearly named resource. The keyword-driven fuzzy match inherently separates it from the sibling list_presets, which would enumerate rather than search. An agent can select it without opening 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?
Usage is implied by the worked examples ('synthwave' → Vapor), which show the intended input style, but there is no explicit when-to-use statement, no exclusion, and no mention of list_presets as the alternative for full enumeration. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_presetsList looksARead-onlyIdempotentInspect
List every Globestudio look preset with its id, name, blurb, vibe tags, thumbnail URL and embed URL. Call this first when the user asks about available looks.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the safety profile is covered structurally. The description adds behavior the annotations do not: it returns EVERY preset unfiltered, implying no input-driven narrowing, and it enumerates the response fields, which is valuable given there is no output schema.
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?
Two sentences, no filler, and the action plus returned payload is front-loaded before the routing hint. Every clause earns its place.
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?
With no output schema, the description compensates well by listing the return fields, and the annotations cover safety. The only real gap is that the boundary with find_presets is never stated, which matters since both could appear to answer 'show me looks'.
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 tool takes zero parameters, so the baseline is 4 and there is no parameter semantics to document. Nothing in the description misrepresents the parameterless contract.
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?
States a specific verb (List) and resource (Globestudio look presets) and enumerates exactly which fields come back (id, name, blurb, vibe tags, thumbnail URL, embed URL). The word 'every' plus the field list distinguishes it from the narrower find_presets sibling.
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?
'Call this first when the user asks about available looks' gives an explicit trigger condition, which is strong usage guidance. It stops short of naming find_presets as the alternative for filtered/searched lookups, so the when-not case is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_urlGet a look's preview linksARead-onlyIdempotentInspect
Get the canonical live embed URL + thumbnail PNG URL for a single preset. Useful when you want to render an inline preview without building a full share URL.
| Name | Required | Description | Default |
|---|---|---|---|
| look | Yes | Preset id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds value by disclosing what is returned (two URLs: canonical live embed URL and thumbnail PNG URL), which matters since there is no output schema.
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?
Two short sentences, zero filler, with the concrete deliverable (embed URL + thumbnail PNG) front-loaded before the use case.
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?
For a trivial single-param read tool with full annotation coverage, the description supplies purpose, return values and a selection rationale. Nothing an agent needs to invoke it correctly is missing.
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?
Schema description coverage is 100% with one required param ('look' = 'Preset id.'). The description only restates this as 'a single preset', adding no syntax or format detail beyond the schema, so the baseline 3 applies.
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?
States a specific verb and resource (get the embed URL + thumbnail PNG URL for a preset) and scopes it to a single look. It implicitly separates itself from build_share_url by noting it avoids building a full share URL, though it never names the sibling tool directly.
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?
"Useful when you want to render an inline preview without building a full share URL" gives a clear condition for choosing this over the share-URL path. There is no explicit when-not guidance or named alternative, but the use context is unambiguous.
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 tool update
v1.2.2- Changed
build_share_url1 field changed- changed
Input schema / properties / config / descriptionPrevious value: -"Any other setting, using the keys read_share_url returns in config, e.g. {\"viewMode\": \"flat\"} or {\"globeSettings\": {\"autoSpin\": false}}. Nested settings merge key by key; keys Globestudio does not accept come back in ignored. With \"v\": 3, as read_share_url returns for a link that has it, its colors render as their hex; without it they render darker, as in links before v3."New value: +"Any other setting, using the keys read_share_url returns in config, e.g. {\"viewMode\": \"flat\"} or {\"globeSettings\": {\"autoSpin\": false}}. {\"viewSwitch\": true} gives the embed a Globe and Map switch in its corner, so visitors can turn the globe into the flat map and back. Nested settings merge key by key; keys Globestudio does not accept come back in ignored. With \"v\": 3, as read_share_url returns for a link that has it, its colors render as their hex; without it they render darker, as in links before v3."
1 tool update
v1.2.0- Changed
build_share_url1 field changed- changed
Input schema / properties / config / descriptionPrevious value: -"Any other setting, using the keys read_share_url returns in config, e.g. {\"viewMode\": \"flat\"} or {\"globeSettings\": {\"autoSpin\": false}}. Nested settings merge key by key; keys Globestudio does not accept come back in ignored."New value: +"Any other setting, using the keys read_share_url returns in config, e.g. {\"viewMode\": \"flat\"} or {\"globeSettings\": {\"autoSpin\": false}}. Nested settings merge key by key; keys Globestudio does not accept come back in ignored. With \"v\": 3, as read_share_url returns for a link that has it, its colors render as their hex; without it they render darker, as in links before v3."
6 tool updates
v0.2.0- First observed
build_share_url - First observed
embed_snippet - First observed
find_presets - First observed
list_presets - First observed
preview_url - First observed
read_share_url
TDQS
Scored across 6 tools
Most tools have distinct purposes: list_presets vs find_presets (enumerate vs fuzzy search), build_share_url vs read_share_url (encode vs decode), and embed_snippet vs preview_url (code generation vs preview assets) are all differentiable. The only mild overlap is that both preview_url and build_share_url can yield an embed URL, which could cause occasional misselection.
All names use snake_case with a verb_noun structure (build_share_url, list_presets, preview_url, read_share_url, find_presets, embed_snippet). No mixed conventions or stray casing, so the pattern is entirely predictable.
Six tools is a tight, well-scoped set for a globe-preset customization service. Each tool earns its place covering a distinct workflow (discover, inspect, encode, decode, embed) with no redundancy.
The surface covers the full read/build/embed lifecycle: listing, fuzzy-finding, previewing, URL encode/decode, and embed code generation. The main minor gap is no explicit get-by-id for a single preset, though preview_url and find_presets largely compensate.
Maintenance
Related MCP Connectors
An MCP server for deep research or task groups
Related MCP Servers
- MIT
- Apache 2.0
- MIT
- MIT