Connected in one block.
ThinkUI is a hosted MCP server. Your agent connects to one URL and sends your key in the request header, so there is no SDK to add to your project, no build step, no package to install and no daemon to keep alive. Prefer to run the server yourself? That form is further down this page.
Get your key.
Create an account and copy the key from your dashboard. It is the only credential you need, and it goes in one place: the Authorization header of the server entry, written as Bearer your-key.
Add it to your agent.
Pick your client. The block is the same shape everywhere; only the file name and the top-level key differ, and those are noted where they do.
{
"mcpServers": {
"thinkui": {
"url": "https://thinkui.xyz/mcp",
"headers": { "Authorization": "Bearer your-key" }
}
}
}
// the same two lines in Cursor, VS Code, Windsurf and Zed { "mcpServers": { "thinkui": { "url": "https://thinkui.xyz/mcp", "headers": { "Authorization": "Bearer your-key" } } } }
The five tools.
Your agent chooses these on its own once they are connected. You can also ask for one by name.
| Tool | Answers | Returns |
|---|---|---|
| find_ui_references | How a screen, a flow or a pattern is actually designed | Screens and flows with the app they came from, plus the components they use |
| find_ui_elements | What a component should look like | The component's own markup and stylesheet, ready to paste |
| find_animated_icons | Which animated icon fits an action | Working animated SVG, no runtime, no icon font |
| find_ui_materials | Which typeface, icon set or design system to use | Candidates with their maintenance state and where they come from |
| corpus_stats | What the server holds | Counts by category, so a refusal is never a mystery |
Ask it something.
Talk to your agent normally. When a design decision comes up it reaches for the server instead of inventing an answer.
You
"Design the upgrade screen for a note-taking app. I want it to feel calm, not pushy."
Your agent calls find_ui_references with a query like "upgrade paywall trial", then builds from what comes back.
{
"query": "upgrade paywall trial",
"results": [
{
"app": "Things 3",
"flow": "upgrade",
"screens": 4,
"source": "spec + screenshots"
},
{
"app": "Bear",
"flow": "paywall",
"screens": 2,
"source": "spec"
}
],
"elements": [ "pricing table", "toggle switch" ],
"materials": [ "Inter", "Lucide" ]
}
What you may ship.
Every reference states its own position in the result, before you decide anything.
Permissively licensed
Where a screenshot or an asset comes from a source under MIT, Apache, BSD, CC0 or the OFL, the result names the licence and the source. Those you can ship on.
Shown as a reference
Where a screen is a product's own marketing material, the result says study reference only, do not ship or republish and credits the owner. Look at it, reason from it, then design your own.
The server never implies you may reuse something you may not, and it never hands you an asset without saying where it came from. That is the point of a reference library: evidence you can check, not material to copy.
When it does not show up.
The tools are not listed in my agent.
Clients read their config at start-up: quit and reopen the app after saving the block. In most clients the server list is visible in settings, a red entry there means the command path is wrong rather than the key.
It runs but every call fails.
Check the Authorization header is present and reads Bearer your-key with your own key in place of your-key. A missing or wrong key comes back as JSON-RPC rather than a blank failure, and the message says which it is.
Do I need Node or Python installed?
No. The server is hosted, so all your agent needs is the URL and your key - no Node, no Python, no package manager. Python 3.10 or newer only matters if you run the server from your own copy instead.
Give your agent something to look at.
Create an account, paste one block, and ask a design question you already know the answer to.