Skip to main content
Glama
pmorris24

CSDK Docs MCP Server

by pmorris24
README.md
# CSDK Docs MCP Server

An MCP server that provides both **structured browsing** and **TF-IDF search** over the Sisense Compose SDK documentation. Works with Claude Code, Claude Desktop, or any MCP client.

## What it does

### Tools

| Tool | Description |
|------|-------------|
| `search_csdk_docs` | TF-IDF search over 1,700+ doc chunks. Returns the most relevant documentation for any query. |
| `browse_csdk_docs` | Browse docs by category (`guides`, `react`, `vue`, `angular`, `data`, `design`). List files in a category or read a specific file. |
| `list_csdk_topics` | Lists all available categories, files, and their descriptions. |

### Resources

The server also exposes structured resources that MCP clients can browse directly:

| Resource | URI | Description |
|----------|-----|-------------|
| Full index | `csdk://index` | Complete documentation index across all categories |
| Category index | `csdk://{category}` | List files in a category (e.g., `csdk://react`, `csdk://guides`) |
| Doc file | `csdk://{category}/{file}` | Read a specific doc file (e.g., `csdk://react/charts.md`) |

### Two ways to access docs

1. **Search** (`search_csdk_docs`) — when you have a question and need the most relevant chunks. Uses TF-IDF scoring across 1,700+ pre-indexed chunks.
2. **Browse** (`browse_csdk_docs` or resources) — when you know which category or file you need. Returns the full structured document, organized by the monorepo's own folder structure.

The `search_csdk_docs` tool also supports:
- **Framework filter** — restrict results to React, Vue, or Angular docs
- **Code context** (optional) — pass a code snippet and it extracts SDK imports, components, hooks, and factories to boost relevant results

## Install

```bash
git clone https://github.com/pmorris24/csdk-docs-mcp.git
cd csdk-docs-mcp
npm install && npm run build
```

## Connect to Claude Code

The repo includes `.mcp.json` — just open Claude Code in the repo directory and the server connects automatically.

Or add to any project's `.mcp.json`:

```json
{
  "mcpServers": {
    "csdk-docs": {
      "command": "node",
      "args": ["/absolute/path/to/csdk-docs-mcp/dist/index.js"]
    }
  }
}
```

## Connect to Claude Desktop

Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "csdk-docs": {
      "command": "node",
      "args": ["/absolute/path/to/csdk-docs-mcp/dist/index.js"]
    }
  }
}
```

## Usage

Once connected, Claude will automatically use the tools when it needs SDK information. Just ask naturally:

```
"How do I query data with useExecuteQuery and display it in a ColumnChart?"
"What are the props for ChartWidget?"
"How do I embed a Fusion dashboard using DashboardById?"
"How do I customize chart colors with styleOptions?"
"How do I use onBeforeRender to modify Highcharts options directly?"
"How do I build a custom dashboard layout with useComposedDashboard?"
```

## Complements the Sisense MCP Server

This works alongside the official [sisense-mcp-server](https://github.com/sisense/sisense-mcp-server):

| Server | What it does |
|--------|-------------|
| **Sisense MCP** | Queries your Sisense instance — get data sources, fields, build charts |
| **This server** | Searches SDK documentation — how to write the code to use that data |

Use both together: Sisense MCP tells Claude what data you have, this server tells Claude how to build the UI with the Compose SDK.

## Tag handling

The server respects Sisense SDK documentation tags:

| Tag | Behavior |
|-----|----------|
| `@internal` | Completely excluded from search results and browse output |
| `@sisenseInternal` | Completely excluded from search results and browse output |
| `@beta` / `@alpha` | Included but flagged with a warning: "This API is marked as beta. It may change without notice." |
| `fusionEmbed` | Included normally (indicates Fusion embedding features) |

## Updating docs

Docs are pulled directly from the official [Sisense Compose SDK monorepo](https://github.com/sisense/compose-sdk-monorepo) (`docs-md/sdk/`). When Sisense releases a new SDK version:

```bash
./scripts/update-docs.sh
npm run build
```

To pull from a specific branch:

```bash
./scripts/update-docs.sh --branch dev
```

## Validation

Run the validation script after updating docs to verify completeness:

```bash
./scripts/validate-docs.sh
```

This checks:
- chunks.json exists and has expected chunk count
- All framework categories have doc files and INDEX.md
- Key files are present and non-empty
- No `@internal`/`@sisenseInternal` content leaked into public docs
- Framework parity (React, Vue, Angular have equal file counts)
- Build output is up to date

## Supported frameworks

- React
- Vue
- Angular

TDQS

A4.5/5.0

Scored across 3 tools

Disambiguation5/5

Each tool serves a distinct purpose: searching for relevant chunks, browsing by category/file, and listing the overall structure. There is no ambiguity between search, browse, and list operations.

Naming Consistency5/5

All tool names follow a consistent verb_csdk_docs pattern (search_, browse_, list_). This predictable structure makes it easy to infer function.

Tool Count5/5

Three tools is well-scoped for a documentation server: one to discover structure, one to browse content, and one to search. Each tool earns its place with no redundancy.

Completeness5/5

For a documentation access domain, this covers the full lifecycle: understand the structure (list), retrieve content (browse), and answer specific queries (search). No obvious gaps exist.

Maintenance

ActivityInactive
ResponsivenessNo issues