Tseha
Serves your team's design system and coding standards to coding agents, so they stop guessing component names, props and tokens.
Documentation
Quick start
Add a .mcp.json file to the root of your repository pointing at the Tseha MCP server:
{
"mcpServers": {
"tseha": {
"url": "https://tseha.io/mcp"
}
}
}
That is the whole configuration. The first time your agent connects, it opens an OAuth sign-in (via Auth0) in your browser; approve it once and the agent is connected. From then on, the agent queries Tseha automatically on the tasks it performs. You can find your ready-to-copy snippet on the dashboard under MCP Connection.
Client setup
The same server URL works for any MCP client. Where the config lives depends on the client:
- Claude Code — a
.mcp.jsonfile in your project root (shown above), or runclaude mcp add --transport http tseha https://tseha.io/mcp. - Cursor — add the same
mcpServersblock to.cursor/mcp.json(per project) or~/.cursor/mcp.json(global). - Other MCP clients (GitHub Copilot with MCP support and any tool implementing the protocol) — point the client at the server URL
https://tseha.io/mcpusing the HTTP transport.
Authentication & tokens
- OAuth 2.1 + PKCE. Authentication happens automatically on first connection — there is no API key to paste. Tseha publishes standard discovery documents (
/.well-known/oauth-authorization-serverand/.well-known/oauth-protected-resource) and supports dynamic client registration, so compliant clients configure themselves. - Scope. The issued token is scoped to your organization and your role. The MCP server is read-only for every role - writes happen only in the admin panel, where your role (Owner, Admin, Developer can write; User is read-only) applies. Project visibility is enforced on top of that.
- Revocation. Membership and role are re-checked on every request, so removing a member or changing a role takes effect immediately — no token rotation needed. Signing out ends the session. Administrative token actions are recorded in the audit log.
Available tools
Tseha exposes granular, read-oriented tools so your agent fetches only what it needs for the current task (lazy loading) rather than a bulky snapshot:
| Tool | What it returns |
|---|---|
| list_projects | Lists the projects in this organization with id, name, and framework. The id is the project_id every other tool requires. |
| list_packages | Returns all component packages available in this organization and marks which one is active for the given project. Call this to know which npm package to import from when a needed component is not listed in list_components. |
| list_components | Lists available UI components from the active package. |
| get_component | Returns component details: props, usage examples, patterns. |
| search_components | Searches components semantically based on a description. Semantic ranking requires AI features (Team plan and above); other plans fall back to name and import-path matching, which returns a null score. |
| get_style | Returns style information (design token collection). |
| get_style_tokens | Returns design tokens by category: color, typography, spacing. |
| get_standards | Returns developer standards. Without a section it returns an index of available sections; with a section it returns that section's full content. |
| get_component_updates | Returns component changes relative to a specified version. Requires the Team plan or above. |
A typical sequence while writing code: list_components → search_components → get_component → get_style_tokens. Your source code is never sent to Tseha; the server only serves the standards you publish.
Semantic ranking is a Team+ feature. search_components ranks by meaning only when your plan includes AI features (Team and above) and your organization has AI features enabled in settings. Otherwise the tool still answers, but falls back to matching on component name and import path, and every result carries score: null.
Limits & errors
- Rate limit. 120 requests per minute per token (sliding window). Exceeding it returns HTTP 429 with a
Retry-Afterheader. Enterprise plans can configure custom limits. - Response size. A single tool response is capped (~25,000 tokens). Oversized results are truncated with a hint to use a more specific tool (for example
get_componentinstead of the fulllist_componentspayload).
Errors follow JSON-RPC 2.0. The ones you are most likely to see:
-32001— unauthorized (missing/invalid session or inaccessible project).-32002— rate limit exceeded.-32004— no component package assigned to the project.-32020— components not yet indexed for semantic search.
Troubleshooting
- The agent never prompts to sign in. Confirm the server URL is exactly
https://tseha.io/mcpand that your client supports the MCP HTTP transport; restart the client after editing the config. - 401 / unauthorized. Your session expired or your membership/role changed — sign in again. If you were removed from the organization, access stops immediately by design.
- 429 / rate limited. Back off and respect the
Retry-Afterheader. - Empty component results. The project has no package assigned (
-32004), or its components have not been indexed yet (-32020) — an Admin can assign a package and trigger indexing from the admin panel. - Still stuck? Email [email protected].