@coinbase/cds-mcp-server 8.35.1 → 8.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -8,6 +8,12 @@ All notable changes to this project will be documented in this file.
8
8
 
9
9
  <!-- template-start -->
10
10
 
11
+ ## 8.36.0 (1/6/2026 PST)
12
+
13
+ #### 🚀 Updates
14
+
15
+ - Update MCP Serer setup script to follow latest Claude Code and Cursor guidelines.
16
+
11
17
  ## 8.35.1 ((1/5/2026, 03:28 PM PST))
12
18
 
13
19
  This is an artificial version bump with no new change.
@@ -1,13 +1,7 @@
1
- ---
2
- description:
3
- globs: *.tsx,*.jsx
4
- alwaysApply: false
5
- ---
6
- source: https://github.com/coinbase/cds/blob/master/packages/mcp-server/src/cds.mdc
7
-
8
1
  # CDS Component Priority Rules
9
2
 
10
3
  ## Component Usage Hierarchy
4
+
11
5
  - CDS is the primary design system for React and React Native in this project.
12
6
  - The JS package is `@coinbase/cds-web` for web React apps and `@coinbase/cds-mobile` for mobile React Native apps.
13
7
  - ALWAYS prioritize CDS components over ANY other UI components when a CDS equivalent exists. For React Native this includes React Native built-ins. For web this includes any HTML native elements.
@@ -15,11 +9,13 @@ source: https://github.com/coinbase/cds/blob/master/packages/mcp-server/src/cds.
15
9
  - ALWAYS use CDS components even if other local components or screens in the codebase are not currently using them - the goal is to standardize on CDS.
16
10
 
17
11
  ## Component Research Order
12
+
18
13
  1. FIRST check if there's a CDS component that satisfies the requirement - this is MANDATORY.
19
14
  2. ONLY if no suitable CDS component exists, then consider native React Native components.
20
15
  3. ONLY if neither CDS nor native components work, suggest custom implementations.
21
16
 
22
17
  ## Documentation Location
18
+
23
19
  - ALWAYS use the cds mcp server's list-cds-routes mcp tool to list all CDS routes before trying to use a component.
24
20
  - ALWAYS inspect the documentation for a component with the get-cds-route mcp tool before using it to understand how to import and how to use it.
25
21
  - ALWAYS check examples in the documentation before implementing.
@@ -27,16 +23,19 @@ source: https://github.com/coinbase/cds/blob/master/packages/mcp-server/src/cds.
27
23
  - CAREFULLY review the component APIs, props, and usage examples in the documentation.
28
24
 
29
25
  ## Implementation Guidelines
26
+
30
27
  - MAINTAIN consistent styling and behavior with existing CDS implementations in the codebase.
31
28
  - FOLLOW CDS-specific theming and styling patterns.
32
29
  - RESPECT CDS component hierarchy and composition patterns.
33
30
  - DO NOT mix CDS and non-CDS component styling approaches unless absolutely necessary.
34
31
 
35
32
  ## When Suggesting Code
33
+
36
34
  - ALWAYS import from @coinbase/cds-mobile for mobile or @coinbase/cds-web for web explicitly.
37
35
  - INCLUDE complete imports in your code examples.
38
36
  - DEMONSTRATE proper usage of CDS theming and styling.
39
37
  - SHOW prop usage according to CDS documentation.
40
38
 
41
39
  ## Lint Errors
40
+
42
41
  - If there's a lint error, do not discard other components that don't have lint errors.
package/esm/setup.js CHANGED
@@ -68,21 +68,61 @@ const findRepoRoot = startPath => {
68
68
  throw new Error('Could not find repo root');
69
69
  }
70
70
  };
71
- const installRules = agentRoot => {
71
+ const CURSOR_MDC_HEADER = "---\ndescription: Apply when working with React components, UI implementations, or Coinbase Design System usage. This rule ensures proper use of CDS components.\n---\n";
72
+ const installCursorRules = agentRoot => {
72
73
  try {
73
- const sourceFile = path.join(__dirname, 'cds.mdc');
74
+ const sourceFile = path.join(__dirname, 'cds.md');
74
75
  const outputDirectory = path.join(agentRoot, 'rules');
75
76
  const outputFile = path.join(outputDirectory, 'cds.mdc');
76
77
  if (!fs.existsSync(outputDirectory)) fs.mkdirSync(outputDirectory, {
77
78
  recursive: true
78
79
  });
80
+
81
+ // Read the plain markdown source and prepend the Cursor MDC header
82
+ const sourceContent = fs.readFileSync(sourceFile, 'utf8');
83
+ const mdcContent = CURSOR_MDC_HEADER + sourceContent;
84
+ fs.writeFileSync(outputFile, mdcContent);
85
+ console.log("\u2705 Copied CDS rules to ".concat(outputFile));
86
+ } catch (error) {
87
+ console.error('❌ Failed to copy CDS rules:', error instanceof Error ? error.message : String(error));
88
+ }
89
+ };
90
+ const installClaudeRules = (repoRoot, agentRoot) => {
91
+ try {
92
+ const sourceFile = path.join(__dirname, 'cds.md');
93
+ const outputDirectory = path.join(agentRoot, 'rules');
94
+ const outputFile = path.join(outputDirectory, 'cds.md');
95
+ if (!fs.existsSync(outputDirectory)) fs.mkdirSync(outputDirectory, {
96
+ recursive: true
97
+ });
98
+
99
+ // Simply copy the plain markdown file for Claude Code
79
100
  fs.cpSync(sourceFile, outputFile);
80
101
  console.log("\u2705 Copied CDS rules to ".concat(outputFile));
102
+
103
+ // Update or create CLAUDE.md with reference to the rules file
104
+ const claudeMdPath = path.join(repoRoot, 'CLAUDE.md');
105
+ const claudeRulesReference = '@.claude/rules/cds.md';
106
+ if (fs.existsSync(claudeMdPath)) {
107
+ const claudeMdContent = fs.readFileSync(claudeMdPath, 'utf8');
108
+ if (!claudeMdContent.includes(claudeRulesReference)) {
109
+ // Add the reference at the beginning of the file
110
+ const updatedContent = "".concat(claudeRulesReference, "\n\n").concat(claudeMdContent);
111
+ fs.writeFileSync(claudeMdPath, updatedContent);
112
+ console.log("\u2705 Added CDS rules reference to ".concat(claudeMdPath));
113
+ } else {
114
+ console.log("\u2705 CDS rules reference already exists in ".concat(claudeMdPath));
115
+ }
116
+ } else {
117
+ // Create CLAUDE.md with the reference
118
+ fs.writeFileSync(claudeMdPath, "".concat(claudeRulesReference, "\n"));
119
+ console.log("\u2705 Created ".concat(claudeMdPath, " with CDS rules reference"));
120
+ }
81
121
  } catch (error) {
82
122
  console.error('❌ Failed to copy CDS rules:', error instanceof Error ? error.message : String(error));
83
123
  }
84
124
  };
85
- const installMcpServer = (repoRoot, cursorRoot) => {
125
+ const installCursorMcpServer = (repoRoot, cursorRoot) => {
86
126
  const mcpServerConfigPath = path.join(cursorRoot, 'mcp.json');
87
127
  let newMcpServerConfig = {
88
128
  mcpServers: {}
@@ -119,6 +159,34 @@ const installMcpServer = (repoRoot, cursorRoot) => {
119
159
  fs.writeFileSync(mcpServerConfigPath, JSON.stringify(newMcpServerConfig, null, 2));
120
160
  console.log("\u2705 Updated MCP server config in ".concat(mcpServerConfigPath));
121
161
  };
162
+ const installClaudeMcpServer = repoRoot => {
163
+ const mcpServerConfigPath = path.join(repoRoot, '.mcp.json');
164
+ let newMcpServerConfig = {
165
+ mcpServers: {}
166
+ };
167
+
168
+ // Claude Code doesn't need --prefix args
169
+ const mcpServerArgs = ['-y', '@coinbase/cds-mcp-server'];
170
+ if (args.noTelemetry) mcpServerArgs.unshift('DISABLE_CDS_MCP_TELEMETRY=1');
171
+ const cdsMcpServerConfig = {
172
+ cds: {
173
+ command: 'npx',
174
+ args: mcpServerArgs
175
+ }
176
+ };
177
+ try {
178
+ const currentMcpServerConfig = JSON.parse(fs.readFileSync(mcpServerConfigPath, 'utf8'));
179
+ newMcpServerConfig = _objectSpread(_objectSpread({}, currentMcpServerConfig), {}, {
180
+ mcpServers: _objectSpread(_objectSpread({}, currentMcpServerConfig.mcpServers), cdsMcpServerConfig)
181
+ });
182
+ } catch (_unused3) {
183
+ newMcpServerConfig = {
184
+ mcpServers: cdsMcpServerConfig
185
+ };
186
+ }
187
+ fs.writeFileSync(mcpServerConfigPath, JSON.stringify(newMcpServerConfig, null, 2));
188
+ console.log("\u2705 Updated MCP server config in ".concat(mcpServerConfigPath));
189
+ };
122
190
  for (const agentValue of selectedAgents) {
123
191
  const agent = agentOptions.find(agent => agent.value === agentValue);
124
192
  if (!agent) {
@@ -130,6 +198,11 @@ for (const agentValue of selectedAgents) {
130
198
  console.log('You can opt out by running setup with the --no-telemetry flag.');
131
199
  const repoRoot = findRepoRoot(process.cwd());
132
200
  const agentRoot = path.join(repoRoot, agent.directory);
133
- installRules(agentRoot);
134
- installMcpServer(repoRoot, agentRoot);
201
+ if (agent.value === 'cursor') {
202
+ installCursorRules(agentRoot);
203
+ installCursorMcpServer(repoRoot, agentRoot);
204
+ } else if (agent.value === 'claude') {
205
+ installClaudeRules(repoRoot, agentRoot);
206
+ installClaudeMcpServer(repoRoot);
207
+ }
135
208
  }
@@ -725,8 +725,8 @@ function XAxisGradient() {
725
725
  | `userSelect` | `ResponsiveProp<text \| none \| all \| auto>` | No | `-` | - |
726
726
  | `visibility` | `ResponsiveProp<hidden \| visible>` | No | `-` | - |
727
727
  | `width` | `ResponsiveProp<Width<string \| number>>` | No | `-` | - |
728
- | `xAxis` | `(Partial<AxisConfigProps> & AxisBaseProps & { className?: string; classNames?: { root?: string \| undefined; label?: string \| undefined; tickLabel?: string \| undefined; gridLine?: string \| undefined; line?: string \| undefined; tickMark?: string \| undefined; } \| undefined; style?: CSSProperties \| undefined; styles?: { root?: CSSProperties \| undefined; label?: CSSProperties \| undefined; tickLabel?: CSSProperties \| undefined; gridLine?: CSSProperties \| undefined; line?: CSSProperties \| undefined; tickMark?: CSSProperties \| undefined; } \| undefined; GridLineComponent?: LineComponent \| undefined; LineComponent?: LineComponent \| undefined; TickMarkLineComponent?: LineComponent \| undefined; tickLabelFormatter?: ((value: number) => ChartTextChildren) \| undefined; TickLabelComponent?: AxisTickLabelComponent \| undefined; } & { position?: top \| bottom \| undefined; height?: number \| undefined; }) \| undefined` | No | `-` | Configuration for x-axis. Accepts axis config and axis props. To show the axis, set showXAxis to true. |
729
- | `yAxis` | `(Partial<AxisConfigProps> & AxisBaseProps & { className?: string; classNames?: { root?: string \| undefined; label?: string \| undefined; tickLabel?: string \| undefined; gridLine?: string \| undefined; line?: string \| undefined; tickMark?: string \| undefined; } \| undefined; style?: CSSProperties \| undefined; styles?: { root?: CSSProperties \| undefined; label?: CSSProperties \| undefined; tickLabel?: CSSProperties \| undefined; gridLine?: CSSProperties \| undefined; line?: CSSProperties \| undefined; tickMark?: CSSProperties \| undefined; } \| undefined; GridLineComponent?: LineComponent \| undefined; LineComponent?: LineComponent \| undefined; TickMarkLineComponent?: LineComponent \| undefined; tickLabelFormatter?: ((value: number) => ChartTextChildren) \| undefined; TickLabelComponent?: AxisTickLabelComponent \| undefined; } & { axisId?: string \| undefined; position?: left \| right \| undefined; width?: number \| undefined; }) \| undefined` | No | `-` | Configuration for y-axis. Accepts axis config and axis props. To show the axis, set showYAxis to true. |
728
+ | `xAxis` | `(Partial<AxisConfigProps> & SharedProps & { label?: string; labelGap?: number \| undefined; minTickLabelGap?: number \| undefined; requestedTickCount?: number \| undefined; showGrid?: boolean \| undefined; showLine?: boolean \| undefined; showTickMarks?: boolean \| undefined; tickMarkSize?: number \| undefined; ticks?: number[] \| ((value: number) => boolean) \| undefined; tickMarkLabelGap?: number \| undefined; tickInterval?: number \| undefined; tickMinStep?: number \| undefined; tickMaxStep?: number \| undefined; } & { className?: string \| undefined; classNames?: { root?: string \| undefined; label?: string \| undefined; tickLabel?: string \| undefined; gridLine?: string \| undefined; line?: string \| undefined; tickMark?: string \| undefined; } \| undefined; style?: CSSProperties \| undefined; styles?: { root?: CSSProperties \| undefined; label?: CSSProperties \| undefined; tickLabel?: CSSProperties \| undefined; gridLine?: CSSProperties \| undefined; line?: CSSProperties \| undefined; tickMark?: CSSProperties \| undefined; } \| undefined; GridLineComponent?: LineComponent \| undefined; LineComponent?: LineComponent \| undefined; TickMarkLineComponent?: LineComponent \| undefined; tickLabelFormatter?: ((value: number) => ChartTextChildren) \| undefined; TickLabelComponent?: AxisTickLabelComponent \| undefined; } & { position?: top \| bottom \| undefined; height?: number \| undefined; }) \| undefined` | No | `-` | Configuration for x-axis. Accepts axis config and axis props. To show the axis, set showXAxis to true. |
729
+ | `yAxis` | `(Partial<AxisConfigProps> & SharedProps & { label?: string; labelGap?: number \| undefined; minTickLabelGap?: number \| undefined; requestedTickCount?: number \| undefined; showGrid?: boolean \| undefined; showLine?: boolean \| undefined; showTickMarks?: boolean \| undefined; tickMarkSize?: number \| undefined; ticks?: number[] \| ((value: number) => boolean) \| undefined; tickMarkLabelGap?: number \| undefined; tickInterval?: number \| undefined; tickMinStep?: number \| undefined; tickMaxStep?: number \| undefined; } & { className?: string \| undefined; classNames?: { root?: string \| undefined; label?: string \| undefined; tickLabel?: string \| undefined; gridLine?: string \| undefined; line?: string \| undefined; tickMark?: string \| undefined; } \| undefined; style?: CSSProperties \| undefined; styles?: { root?: CSSProperties \| undefined; label?: CSSProperties \| undefined; tickLabel?: CSSProperties \| undefined; gridLine?: CSSProperties \| undefined; line?: CSSProperties \| undefined; tickMark?: CSSProperties \| undefined; } \| undefined; GridLineComponent?: LineComponent \| undefined; LineComponent?: LineComponent \| undefined; TickMarkLineComponent?: LineComponent \| undefined; tickLabelFormatter?: ((value: number) => ChartTextChildren) \| undefined; TickLabelComponent?: AxisTickLabelComponent \| undefined; } & { axisId?: string \| undefined; position?: left \| right \| undefined; width?: number \| undefined; }) \| undefined` | No | `-` | Configuration for y-axis. Accepts axis config and axis props. To show the axis, set showYAxis to true. |
730
730
  | `zIndex` | `inherit \| auto \| revert \| -moz-initial \| initial \| revert-layer \| unset` | No | `-` | - |
731
731
 
732
732
 
@@ -1129,8 +1129,8 @@ function UpdatingChartValues() {
1129
1129
  | `userSelect` | `ResponsiveProp<text \| none \| all \| auto>` | No | `-` | - |
1130
1130
  | `visibility` | `ResponsiveProp<hidden \| visible>` | No | `-` | - |
1131
1131
  | `width` | `ResponsiveProp<Width<string \| number>>` | No | `-` | - |
1132
- | `xAxis` | `(Partial<AxisConfigProps> & AxisBaseProps & { className?: string; classNames?: { root?: string \| undefined; label?: string \| undefined; tickLabel?: string \| undefined; gridLine?: string \| undefined; line?: string \| undefined; tickMark?: string \| undefined; } \| undefined; style?: CSSProperties \| undefined; styles?: { root?: CSSProperties \| undefined; label?: CSSProperties \| undefined; tickLabel?: CSSProperties \| undefined; gridLine?: CSSProperties \| undefined; line?: CSSProperties \| undefined; tickMark?: CSSProperties \| undefined; } \| undefined; GridLineComponent?: LineComponent \| undefined; LineComponent?: LineComponent \| undefined; TickMarkLineComponent?: LineComponent \| undefined; tickLabelFormatter?: ((value: number) => ChartTextChildren) \| undefined; TickLabelComponent?: AxisTickLabelComponent \| undefined; } & { position?: top \| bottom \| undefined; height?: number \| undefined; }) \| undefined` | No | `-` | Configuration for x-axis. Accepts axis config and axis props. To show the axis, set showXAxis to true. |
1133
- | `yAxis` | `(Partial<AxisConfigProps> & AxisBaseProps & { className?: string; classNames?: { root?: string \| undefined; label?: string \| undefined; tickLabel?: string \| undefined; gridLine?: string \| undefined; line?: string \| undefined; tickMark?: string \| undefined; } \| undefined; style?: CSSProperties \| undefined; styles?: { root?: CSSProperties \| undefined; label?: CSSProperties \| undefined; tickLabel?: CSSProperties \| undefined; gridLine?: CSSProperties \| undefined; line?: CSSProperties \| undefined; tickMark?: CSSProperties \| undefined; } \| undefined; GridLineComponent?: LineComponent \| undefined; LineComponent?: LineComponent \| undefined; TickMarkLineComponent?: LineComponent \| undefined; tickLabelFormatter?: ((value: number) => ChartTextChildren) \| undefined; TickLabelComponent?: AxisTickLabelComponent \| undefined; } & { axisId?: string \| undefined; position?: left \| right \| undefined; width?: number \| undefined; }) \| undefined` | No | `-` | Configuration for y-axis. Accepts axis config and axis props. To show the axis, set showYAxis to true. |
1132
+ | `xAxis` | `(Partial<AxisConfigProps> & SharedProps & { label?: string; labelGap?: number \| undefined; minTickLabelGap?: number \| undefined; requestedTickCount?: number \| undefined; showGrid?: boolean \| undefined; showLine?: boolean \| undefined; showTickMarks?: boolean \| undefined; tickMarkSize?: number \| undefined; ticks?: number[] \| ((value: number) => boolean) \| undefined; tickMarkLabelGap?: number \| undefined; tickInterval?: number \| undefined; tickMinStep?: number \| undefined; tickMaxStep?: number \| undefined; } & { className?: string \| undefined; classNames?: { root?: string \| undefined; label?: string \| undefined; tickLabel?: string \| undefined; gridLine?: string \| undefined; line?: string \| undefined; tickMark?: string \| undefined; } \| undefined; style?: CSSProperties \| undefined; styles?: { root?: CSSProperties \| undefined; label?: CSSProperties \| undefined; tickLabel?: CSSProperties \| undefined; gridLine?: CSSProperties \| undefined; line?: CSSProperties \| undefined; tickMark?: CSSProperties \| undefined; } \| undefined; GridLineComponent?: LineComponent \| undefined; LineComponent?: LineComponent \| undefined; TickMarkLineComponent?: LineComponent \| undefined; tickLabelFormatter?: ((value: number) => ChartTextChildren) \| undefined; TickLabelComponent?: AxisTickLabelComponent \| undefined; } & { position?: top \| bottom \| undefined; height?: number \| undefined; }) \| undefined` | No | `-` | Configuration for x-axis. Accepts axis config and axis props. To show the axis, set showXAxis to true. |
1133
+ | `yAxis` | `(Partial<AxisConfigProps> & SharedProps & { label?: string; labelGap?: number \| undefined; minTickLabelGap?: number \| undefined; requestedTickCount?: number \| undefined; showGrid?: boolean \| undefined; showLine?: boolean \| undefined; showTickMarks?: boolean \| undefined; tickMarkSize?: number \| undefined; ticks?: number[] \| ((value: number) => boolean) \| undefined; tickMarkLabelGap?: number \| undefined; tickInterval?: number \| undefined; tickMinStep?: number \| undefined; tickMaxStep?: number \| undefined; } & { className?: string \| undefined; classNames?: { root?: string \| undefined; label?: string \| undefined; tickLabel?: string \| undefined; gridLine?: string \| undefined; line?: string \| undefined; tickMark?: string \| undefined; } \| undefined; style?: CSSProperties \| undefined; styles?: { root?: CSSProperties \| undefined; label?: CSSProperties \| undefined; tickLabel?: CSSProperties \| undefined; gridLine?: CSSProperties \| undefined; line?: CSSProperties \| undefined; tickMark?: CSSProperties \| undefined; } \| undefined; GridLineComponent?: LineComponent \| undefined; LineComponent?: LineComponent \| undefined; TickMarkLineComponent?: LineComponent \| undefined; tickLabelFormatter?: ((value: number) => ChartTextChildren) \| undefined; TickLabelComponent?: AxisTickLabelComponent \| undefined; } & { axisId?: string \| undefined; position?: left \| right \| undefined; width?: number \| undefined; }) \| undefined` | No | `-` | Configuration for y-axis. Accepts axis config and axis props. To show the axis, set showYAxis to true. |
1134
1134
  | `zIndex` | `inherit \| auto \| revert \| -moz-initial \| initial \| revert-layer \| unset` | No | `-` | - |
1135
1135
 
1136
1136
 
@@ -2052,8 +2052,8 @@ function ForecastAssetPrice() {
2052
2052
  | `userSelect` | `ResponsiveProp<text \| none \| all \| auto>` | No | `-` | - |
2053
2053
  | `visibility` | `ResponsiveProp<hidden \| visible>` | No | `-` | - |
2054
2054
  | `width` | `ResponsiveProp<Width<string \| number>>` | No | `-` | - |
2055
- | `xAxis` | `(Partial<AxisConfigProps> & AxisBaseProps & { className?: string; classNames?: { root?: string \| undefined; label?: string \| undefined; tickLabel?: string \| undefined; gridLine?: string \| undefined; line?: string \| undefined; tickMark?: string \| undefined; } \| undefined; style?: CSSProperties \| undefined; styles?: { root?: CSSProperties \| undefined; label?: CSSProperties \| undefined; tickLabel?: CSSProperties \| undefined; gridLine?: CSSProperties \| undefined; line?: CSSProperties \| undefined; tickMark?: CSSProperties \| undefined; } \| undefined; GridLineComponent?: LineComponent \| undefined; LineComponent?: LineComponent \| undefined; TickMarkLineComponent?: LineComponent \| undefined; tickLabelFormatter?: ((value: number) => ChartTextChildren) \| undefined; TickLabelComponent?: AxisTickLabelComponent \| undefined; } & { position?: top \| bottom \| undefined; height?: number \| undefined; }) \| undefined` | No | `-` | Configuration for x-axis. Accepts axis config and axis props. To show the axis, set showXAxis to true. |
2056
- | `yAxis` | `(Partial<AxisConfigProps> & AxisBaseProps & { className?: string; classNames?: { root?: string \| undefined; label?: string \| undefined; tickLabel?: string \| undefined; gridLine?: string \| undefined; line?: string \| undefined; tickMark?: string \| undefined; } \| undefined; style?: CSSProperties \| undefined; styles?: { root?: CSSProperties \| undefined; label?: CSSProperties \| undefined; tickLabel?: CSSProperties \| undefined; gridLine?: CSSProperties \| undefined; line?: CSSProperties \| undefined; tickMark?: CSSProperties \| undefined; } \| undefined; GridLineComponent?: LineComponent \| undefined; LineComponent?: LineComponent \| undefined; TickMarkLineComponent?: LineComponent \| undefined; tickLabelFormatter?: ((value: number) => ChartTextChildren) \| undefined; TickLabelComponent?: AxisTickLabelComponent \| undefined; } & { axisId?: string \| undefined; position?: left \| right \| undefined; width?: number \| undefined; }) \| undefined` | No | `-` | Configuration for y-axis. Accepts axis config and axis props. To show the axis, set showYAxis to true. |
2055
+ | `xAxis` | `(Partial<AxisConfigProps> & SharedProps & { label?: string; labelGap?: number \| undefined; minTickLabelGap?: number \| undefined; requestedTickCount?: number \| undefined; showGrid?: boolean \| undefined; showLine?: boolean \| undefined; showTickMarks?: boolean \| undefined; tickMarkSize?: number \| undefined; ticks?: number[] \| ((value: number) => boolean) \| undefined; tickMarkLabelGap?: number \| undefined; tickInterval?: number \| undefined; tickMinStep?: number \| undefined; tickMaxStep?: number \| undefined; } & { className?: string \| undefined; classNames?: { root?: string \| undefined; label?: string \| undefined; tickLabel?: string \| undefined; gridLine?: string \| undefined; line?: string \| undefined; tickMark?: string \| undefined; } \| undefined; style?: CSSProperties \| undefined; styles?: { root?: CSSProperties \| undefined; label?: CSSProperties \| undefined; tickLabel?: CSSProperties \| undefined; gridLine?: CSSProperties \| undefined; line?: CSSProperties \| undefined; tickMark?: CSSProperties \| undefined; } \| undefined; GridLineComponent?: LineComponent \| undefined; LineComponent?: LineComponent \| undefined; TickMarkLineComponent?: LineComponent \| undefined; tickLabelFormatter?: ((value: number) => ChartTextChildren) \| undefined; TickLabelComponent?: AxisTickLabelComponent \| undefined; } & { position?: top \| bottom \| undefined; height?: number \| undefined; }) \| undefined` | No | `-` | Configuration for x-axis. Accepts axis config and axis props. To show the axis, set showXAxis to true. |
2056
+ | `yAxis` | `(Partial<AxisConfigProps> & SharedProps & { label?: string; labelGap?: number \| undefined; minTickLabelGap?: number \| undefined; requestedTickCount?: number \| undefined; showGrid?: boolean \| undefined; showLine?: boolean \| undefined; showTickMarks?: boolean \| undefined; tickMarkSize?: number \| undefined; ticks?: number[] \| ((value: number) => boolean) \| undefined; tickMarkLabelGap?: number \| undefined; tickInterval?: number \| undefined; tickMinStep?: number \| undefined; tickMaxStep?: number \| undefined; } & { className?: string \| undefined; classNames?: { root?: string \| undefined; label?: string \| undefined; tickLabel?: string \| undefined; gridLine?: string \| undefined; line?: string \| undefined; tickMark?: string \| undefined; } \| undefined; style?: CSSProperties \| undefined; styles?: { root?: CSSProperties \| undefined; label?: CSSProperties \| undefined; tickLabel?: CSSProperties \| undefined; gridLine?: CSSProperties \| undefined; line?: CSSProperties \| undefined; tickMark?: CSSProperties \| undefined; } \| undefined; GridLineComponent?: LineComponent \| undefined; LineComponent?: LineComponent \| undefined; TickMarkLineComponent?: LineComponent \| undefined; tickLabelFormatter?: ((value: number) => ChartTextChildren) \| undefined; TickLabelComponent?: AxisTickLabelComponent \| undefined; } & { axisId?: string \| undefined; position?: left \| right \| undefined; width?: number \| undefined; }) \| undefined` | No | `-` | Configuration for y-axis. Accepts axis config and axis props. To show the axis, set showYAxis to true. |
2057
2057
  | `zIndex` | `inherit \| auto \| revert \| -moz-initial \| initial \| revert-layer \| unset` | No | `-` | - |
2058
2058
 
2059
2059
 
@@ -672,6 +672,7 @@ function CustomTickLabelExample() {
672
672
  | `showTickMarks` | `boolean` | No | `-` | Whether to show tick marks on the axis. |
673
673
  | `style` | `CSSProperties` | No | `-` | Custom style for the axis. |
674
674
  | `styles` | `{ root?: CSSProperties; label?: CSSProperties \| undefined; tickLabel?: CSSProperties \| undefined; gridLine?: CSSProperties \| undefined; line?: CSSProperties \| undefined; tickMark?: CSSProperties \| undefined; } \| undefined` | No | `-` | Custom styles for the axis. |
675
+ | `testID` | `string` | No | `-` | Used to locate this element in unit and end-to-end tests. Under the hood, testID translates to data-testid on Web. On Mobile, testID stays the same - testID |
675
676
  | `tickInterval` | `number` | No | `32 (for x-axis)` | Interval at which to show ticks. When provided, calculates tick count based on available space. |
676
677
  | `tickLabelFormatter` | `((value: number) => ChartTextChildren)` | No | `-` | Formatter function for axis tick values. Tick values will be wrapped in ChartText component. |
677
678
  | `tickMarkLabelGap` | `number` | No | `2 for x-axis, 8 for y-axis` | Space between the axis tick mark and labels. If tick marks are not shown, this is the gap between the axis and the chart. |
@@ -580,6 +580,7 @@ function CustomTickLabelExample() {
580
580
  | `showTickMarks` | `boolean` | No | `-` | Whether to show tick marks on the axis. |
581
581
  | `style` | `CSSProperties` | No | `-` | Custom style for the axis. |
582
582
  | `styles` | `{ root?: CSSProperties; label?: CSSProperties \| undefined; tickLabel?: CSSProperties \| undefined; gridLine?: CSSProperties \| undefined; line?: CSSProperties \| undefined; tickMark?: CSSProperties \| undefined; } \| undefined` | No | `-` | Custom styles for the axis. |
583
+ | `testID` | `string` | No | `-` | Used to locate this element in unit and end-to-end tests. Under the hood, testID translates to data-testid on Web. On Mobile, testID stays the same - testID |
583
584
  | `tickInterval` | `number` | No | `32 (for x-axis)` | Interval at which to show ticks. When provided, calculates tick count based on available space. |
584
585
  | `tickLabelFormatter` | `((value: number) => ChartTextChildren)` | No | `-` | Formatter function for axis tick values. Tick values will be wrapped in ChartText component. |
585
586
  | `tickMarkLabelGap` | `number` | No | `2 for x-axis, 8 for y-axis` | Space between the axis tick mark and labels. If tick marks are not shown, this is the gap between the axis and the chart. |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coinbase/cds-mcp-server",
3
- "version": "8.35.1",
3
+ "version": "8.36.0",
4
4
  "description": "Coinbase Design System - MCP Server",
5
5
  "repository": {
6
6
  "type": "git",
@@ -29,10 +29,6 @@
29
29
  "mcp-docs",
30
30
  "CHANGELOG"
31
31
  ],
32
- "peerDependencies": {
33
- "react": "^18.3.1",
34
- "react-dom": "^18.3.1"
35
- },
36
32
  "dependencies": {
37
33
  "@inquirer/prompts": "^7.5.3",
38
34
  "@modelcontextprotocol/sdk": "^1.13.1",
@@ -41,7 +37,6 @@
41
37
  "devDependencies": {
42
38
  "@babel/core": "^7.28.0",
43
39
  "@babel/preset-env": "^7.28.0",
44
- "@babel/preset-react": "^7.27.1",
45
40
  "@babel/preset-typescript": "^7.27.1"
46
41
  }
47
42
  }