MCP Server
@objectifthunes/limestone-mcp is a Model Context Protocol server that gives any MCP-compatible LLM (Claude, Cursor, Windsurf, etc.) live access to Limestone SDK port interfaces, adapter wiring examples, and error diagnosis — without embedding documentation in every prompt.
Installation
Add the server to Claude Code
claude mcp add limestone-mcp -- npx @objectifthunes/limestone-mcpVerify the server is running
claude mcp listYou should see limestone-mcp in the list with status connected.
Tools
The server exposes three tools that LLMs call automatically when working with limestone-sdk code.
getPortInterface
Returns the full TypeScript interface definition and a usage example for any of the 16 port interfaces.
| Parameter | Type | Example |
|---|---|---|
portName | string | "BiometricProvider", "CameraProvider", "NotificationProvider" |
The lookup is case-insensitive: "biometricprovider" and "BiometricProvider" both resolve.
Example prompt that triggers this tool:
What methods does
KeychainProviderexpose?
getAdapterExample
Returns a complete wiring example for any adapter — import, factory call, defineConfig wiring, and a usage snippet in a component.
| Parameter | Type | Example |
|---|---|---|
adapterName | string | "expo-biometrics", "expo-secure-store", "dev", "testing" |
Example prompt that triggers this tool:
Show me how to wire up the expo-notifications adapter.
diagnose
Matches a runtime error message against known SDK error patterns and returns a root-cause explanation with fix steps.
| Parameter | Type | Example |
|---|---|---|
errorMessage | string | "NOT_FOUND", "UNAUTHORIZED", "adapter not registered" |
Recognised patterns:
| Pattern | Diagnosis |
|---|---|
NOT_FOUND | 404 — null lookup, guard before proceeding |
UNAUTHORIZED | 401 — missing/expired token, configure refreshEndpoint |
FORBIDDEN | 403 — user lacks permission |
VALIDATION_ERROR | 400 — Zod schema mismatch, check details field |
CONFLICT | 409 — duplicate resource |
RATE_LIMITED | 429 — add debounce or exponential backoff |
INTERNAL_ERROR | 500 — unhandled server exception |
adapter not registered | Missing adapter in defineConfig |
cannot find module | Wrong subpath import or missing peer dep |
theme validation | Zod validation failure in defineTheme |
Provider not found | Hook called outside <LimestoneProvider> tree |
Example prompt that triggers this tool:
I’m getting “adapter not registered” when I call
useBiometrics(). What’s wrong?
Resources
Two read-only resources are available for LLMs that want a complete overview rather than targeted lookups.
| URI | Description |
|---|---|
limestone://ports | All 16 ports with method signatures and descriptions |
limestone://adapters | All 17 adapters grouped by port, with factory names and peer deps |
Other MCP clients
The server speaks the standard MCP stdio transport. Add it to any client that supports MCP servers:
Cursor (~/.cursor/mcp.json):
{
"mcpServers": {
"limestone-mcp": {
"command": "npx",
"args": ["@objectifthunes/limestone-mcp"]
}
}
}
Windsurf (~/.codeium/windsurf/mcp_config.json):
{
"mcpServers": {
"limestone-mcp": {
"command": "npx",
"args": ["@objectifthunes/limestone-mcp"]
}
}
}