@atlaskit/ads-mcp 0.6.2 → 0.6.4
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 +15 -0
- package/README.md +18 -18
- package/dist/cjs/index.js +8 -8
- package/dist/cjs/tools/{analyze-accessibility → analyze-a11y}/index.js +23 -23
- package/dist/cjs/tools/{get-accessibility-guidelines → get-a11y-guidelines}/index.js +5 -5
- package/dist/cjs/tools/{suggest-accessibility-fixes → suggest-a11y-fixes}/fixes.js +1 -1
- package/dist/cjs/tools/{suggest-accessibility-fixes → suggest-a11y-fixes}/index.js +6 -6
- package/dist/es2019/index.js +8 -8
- package/dist/es2019/tools/{analyze-accessibility → analyze-a11y}/index.js +20 -20
- package/dist/es2019/tools/{get-accessibility-guidelines → get-a11y-guidelines}/index.js +3 -3
- package/dist/es2019/tools/{suggest-accessibility-fixes → suggest-a11y-fixes}/fixes.js +3 -2
- package/dist/es2019/tools/{suggest-accessibility-fixes → suggest-a11y-fixes}/index.js +4 -4
- package/dist/esm/index.js +8 -8
- package/dist/esm/tools/{analyze-accessibility → analyze-a11y}/index.js +22 -22
- package/dist/esm/tools/{get-accessibility-guidelines → get-a11y-guidelines}/index.js +4 -4
- package/dist/esm/tools/{suggest-accessibility-fixes → suggest-a11y-fixes}/fixes.js +1 -1
- package/dist/esm/tools/{suggest-accessibility-fixes → suggest-a11y-fixes}/index.js +5 -5
- package/dist/types/tools/{analyze-accessibility → analyze-a11y}/index.d.ts +4 -4
- package/dist/{types-ts4.5/tools/get-accessibility-guidelines → types/tools/get-a11y-guidelines}/index.d.ts +2 -2
- package/dist/{types-ts4.5/tools/suggest-accessibility-fixes → types/tools/suggest-a11y-fixes}/index.d.ts +2 -2
- package/dist/types-ts4.5/tools/{analyze-accessibility → analyze-a11y}/index.d.ts +4 -4
- package/dist/{types/tools/get-accessibility-guidelines → types-ts4.5/tools/get-a11y-guidelines}/index.d.ts +2 -2
- package/dist/{types/tools/suggest-accessibility-fixes → types-ts4.5/tools/suggest-a11y-fixes}/index.d.ts +2 -2
- package/package.json +1 -5
- /package/dist/cjs/tools/{suggest-accessibility-fixes → suggest-a11y-fixes}/keywords.js +0 -0
- /package/dist/es2019/tools/{suggest-accessibility-fixes → suggest-a11y-fixes}/keywords.js +0 -0
- /package/dist/esm/tools/{suggest-accessibility-fixes → suggest-a11y-fixes}/keywords.js +0 -0
- /package/dist/types/tools/{suggest-accessibility-fixes → suggest-a11y-fixes}/fixes.d.ts +0 -0
- /package/dist/types/tools/{suggest-accessibility-fixes → suggest-a11y-fixes}/keywords.d.ts +0 -0
- /package/dist/types-ts4.5/tools/{suggest-accessibility-fixes → suggest-a11y-fixes}/fixes.d.ts +0 -0
- /package/dist/types-ts4.5/tools/{suggest-accessibility-fixes → suggest-a11y-fixes}/keywords.d.ts +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# @atlaskit/ads-mcp
|
|
2
2
|
|
|
3
|
+
## 0.6.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`6660e1e7505e4`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/6660e1e7505e4) -
|
|
8
|
+
Replace tool names containing "accessibility" with "a11y"
|
|
9
|
+
|
|
10
|
+
## 0.6.3
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- [`248faa32d4835`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/248faa32d4835) -
|
|
15
|
+
Internal changes to how borders are applied.
|
|
16
|
+
- Updated dependencies
|
|
17
|
+
|
|
3
18
|
## 0.6.2
|
|
4
19
|
|
|
5
20
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -12,13 +12,13 @@ to help ensure your interfaces are accessible to all users.
|
|
|
12
12
|
|
|
13
13
|
### Design System Tools
|
|
14
14
|
|
|
15
|
-
- `
|
|
16
|
-
- `
|
|
17
|
-
- `
|
|
18
|
-
- `
|
|
19
|
-
- `
|
|
20
|
-
- `
|
|
21
|
-
- `
|
|
15
|
+
- `ads_get_all_tokens` - Get all available design tokens for colors, spacing, typography, etc.
|
|
16
|
+
- `ads_search_tokens` - Search for specific design tokens by name, description, or example values
|
|
17
|
+
- `ads_get_components` - Get a list of all available components with basic information
|
|
18
|
+
- `ads_search_components` - Search for components by name, description, category, or package name
|
|
19
|
+
- `ads_get_all_icons` - Get all available icons from the design system
|
|
20
|
+
- `ads_search_icons` - Search for specific icons by name, keywords, or categorization
|
|
21
|
+
- `ads_plan` - Search for multiple design system resources (tokens, icons, components) in a single
|
|
22
22
|
efficient operation
|
|
23
23
|
|
|
24
24
|
#### Design System Tools Usage
|
|
@@ -58,14 +58,14 @@ const allIcons = await get_all_icons();
|
|
|
58
58
|
|
|
59
59
|
### Accessibility Tools
|
|
60
60
|
|
|
61
|
-
- `
|
|
62
|
-
|
|
63
|
-
- `
|
|
64
|
-
|
|
65
|
-
- `
|
|
66
|
-
|
|
67
|
-
- `
|
|
68
|
-
|
|
61
|
+
- `ads_analyze_a11y` - Analyze React component code for accessibility violations using axe-core and
|
|
62
|
+
provide ADS-specific suggestions
|
|
63
|
+
- `ads_analyze_localhost_a11y` - Analyze whole web pages or specific elements (localhost or deployed
|
|
64
|
+
URLs) for accessibility violations
|
|
65
|
+
- `ads_get_a11y_guidelines` - Get specific accessibility guidelines and best practices for different
|
|
66
|
+
topics
|
|
67
|
+
- `ads_suggest_a11y_fixes` - Get specific fix suggestions for accessibility violations with code
|
|
68
|
+
examples
|
|
69
69
|
|
|
70
70
|
## Accessibility Features
|
|
71
71
|
|
|
@@ -84,19 +84,19 @@ The ADS MCP server includes comprehensive accessibility analysis and guidance:
|
|
|
84
84
|
|
|
85
85
|
```typescript
|
|
86
86
|
// Analyze a component for accessibility issues using axe-core
|
|
87
|
-
const analysis = await
|
|
87
|
+
const analysis = await analyze_a11y({
|
|
88
88
|
code: `<button onClick={handleClose}><CloseIcon /></button>`,
|
|
89
89
|
componentName: 'CloseButton',
|
|
90
90
|
includePatternAnalysis: true, // Also include pattern-based analysis
|
|
91
91
|
});
|
|
92
92
|
|
|
93
93
|
// Get specific accessibility guidelines
|
|
94
|
-
const guidelines = await
|
|
94
|
+
const guidelines = await get_a11y_guidelines({
|
|
95
95
|
topic: 'buttons',
|
|
96
96
|
});
|
|
97
97
|
|
|
98
98
|
// Get fix suggestions for a violation
|
|
99
|
-
const fixes = await
|
|
99
|
+
const fixes = await suggest_a11y_fixes({
|
|
100
100
|
violation: 'Button missing accessible label',
|
|
101
101
|
code: `<button onClick={handleClose}><CloseIcon /></button>`,
|
|
102
102
|
});
|
package/dist/cjs/index.js
CHANGED
|
@@ -7,8 +7,8 @@ var _index = require("@modelcontextprotocol/sdk/server/index.js");
|
|
|
7
7
|
var _stdio = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
8
8
|
var _types = require("@modelcontextprotocol/sdk/types.js");
|
|
9
9
|
var _instructions = require("./instructions");
|
|
10
|
-
var
|
|
11
|
-
var
|
|
10
|
+
var _analyzeA11y = require("./tools/analyze-a11y");
|
|
11
|
+
var _getA11yGuidelines = require("./tools/get-a11y-guidelines");
|
|
12
12
|
var _getAllIcons = require("./tools/get-all-icons");
|
|
13
13
|
var _getAllTokens = require("./tools/get-all-tokens");
|
|
14
14
|
var _getComponents = require("./tools/get-components");
|
|
@@ -16,7 +16,7 @@ var _plan = require("./tools/plan");
|
|
|
16
16
|
var _searchComponents = require("./tools/search-components");
|
|
17
17
|
var _searchIcons = require("./tools/search-icons");
|
|
18
18
|
var _searchTokens = require("./tools/search-tokens");
|
|
19
|
-
var
|
|
19
|
+
var _suggestA11yFixes = require("./tools/suggest-a11y-fixes");
|
|
20
20
|
/* eslint-disable import/extensions */
|
|
21
21
|
|
|
22
22
|
// eslint-disable-next-line import/no-extraneous-dependencies -- this uses require because not all node versions this package supports use the same import assertions/attributes
|
|
@@ -36,7 +36,7 @@ server.setRequestHandler(_types.ListToolsRequestSchema, /*#__PURE__*/(0, _asyncT
|
|
|
36
36
|
while (1) switch (_context.prev = _context.next) {
|
|
37
37
|
case 0:
|
|
38
38
|
return _context.abrupt("return", {
|
|
39
|
-
tools: [_getAllTokens.listGetAllTokensTool, _getComponents.listGetComponentsTool, _searchComponents.listSearchComponentsTool, _getAllIcons.listGetAllIconsTool, _searchIcons.listSearchIconsTool, _searchTokens.listSearchTokensTool, _plan.listPlanTool,
|
|
39
|
+
tools: [_getAllTokens.listGetAllTokensTool, _getComponents.listGetComponentsTool, _searchComponents.listSearchComponentsTool, _getAllIcons.listGetAllIconsTool, _searchIcons.listSearchIconsTool, _searchTokens.listSearchTokensTool, _plan.listPlanTool, _analyzeA11y.listAnalyzeA11yTool, _analyzeA11y.listAnalyzeLocalhostA11yTool, _getA11yGuidelines.listGetA11yGuidelinesTool, _suggestA11yFixes.listSuggestA11yFixesTool]
|
|
40
40
|
});
|
|
41
41
|
case 1:
|
|
42
42
|
case "end":
|
|
@@ -52,10 +52,10 @@ var callTools = {
|
|
|
52
52
|
ads_get_all_icons: _getAllIcons.getAllIconsTool,
|
|
53
53
|
ads_search_icons: _searchIcons.searchIconsTool,
|
|
54
54
|
ads_plan: _plan.planTool,
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
ads_analyze_a11y: _analyzeA11y.analyzeA11yTool,
|
|
56
|
+
ads_analyze_localhost_a11y: _analyzeA11y.analyzeLocalhostA11yTool,
|
|
57
|
+
ads_get_a11y_guidelines: _getA11yGuidelines.getA11yGuidelinesTool,
|
|
58
|
+
ads_suggest_a11y_fixes: _suggestA11yFixes.suggestA11yFixesTool
|
|
59
59
|
};
|
|
60
60
|
|
|
61
61
|
// Handle tool execution
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.
|
|
7
|
+
exports.listAnalyzeLocalhostA11yTool = exports.listAnalyzeA11yTool = exports.analyzeLocalhostA11yTool = exports.analyzeA11yTool = void 0;
|
|
8
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
9
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
10
10
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
@@ -22,8 +22,8 @@ var inputSchema = _zod.z.object({
|
|
|
22
22
|
context: _zod.z.string().optional().describe('Additional context about the component usage'),
|
|
23
23
|
includePatternAnalysis: _zod.z.boolean().optional().default(true).describe('Include pattern-based analysis in addition to axe-core')
|
|
24
24
|
});
|
|
25
|
-
var
|
|
26
|
-
name: '
|
|
25
|
+
var listAnalyzeA11yTool = exports.listAnalyzeA11yTool = {
|
|
26
|
+
name: 'ads_analyze_a11y',
|
|
27
27
|
description: "Analyze React component code for accessibility violations using axe-core and intelligently generate Atlassian Design System specific suggestions. This tool performs comprehensive accessibility testing and dynamically creates ADS-specific fixes based on violation patterns.\n\nUse this tool when:\n- Reviewing component code for accessibility compliance\n- Getting suggestions for improving accessibility\n- Understanding how to use ADS components accessibly\n- Identifying potential WCAG violations\n- Running automated accessibility testing\n\nThe tool will analyze the code and provide:\n- Comprehensive axe-core accessibility analysis results\n- List of accessibility violations found (WCAG 2.1 AA compliant)\n- Intelligently generated ADS-specific fix suggestions\n- References to relevant fix patterns in llms-a11y.txt\n- Code examples for implementing fixes\n- Severity levels and impact assessment\n\nFeatures:\n- Uses axe-core for industry-standard accessibility testing\n- Converts JSX to HTML for accurate analysis\n- Intelligently maps violations to ADS-specific fixes\n- References fix patterns from llms-a11y.txt documentation\n- Includes fallback pattern analysis if axe-core fails\n- Provides detailed violation descriptions and help text\n- Dynamically generates fix suggestions based on violation type",
|
|
28
28
|
annotations: {
|
|
29
29
|
title: 'Analyze Accessibility',
|
|
@@ -40,8 +40,8 @@ var urlInputSchema = _zod.z.object({
|
|
|
40
40
|
context: _zod.z.string().optional().describe('Additional context about the component usage'),
|
|
41
41
|
selector: _zod.z.string().optional().describe('CSS selector to target a specific element for analysis (e.g. "#my-form", ".component-class")')
|
|
42
42
|
});
|
|
43
|
-
var
|
|
44
|
-
name: '
|
|
43
|
+
var listAnalyzeLocalhostA11yTool = exports.listAnalyzeLocalhostA11yTool = {
|
|
44
|
+
name: 'ads_analyze_localhost_a11y',
|
|
45
45
|
description: "Analyze a live web page (e.g. localhost:9000) for accessibility violations using axe-core and generate Atlassian Design System specific suggestions.\n\nUse this tool to:\n- Analyze running local dev servers or deployed URLs\n- Get comprehensive accessibility reports for any web page\n- Receive ADS-specific fix suggestions and code examples\n- Target specific elements using CSS selectors for focused analysis\n\nParameters:\n- url: The URL to analyze (must be accessible from the server)\n- componentName: (optional) Name of the component/page\n- context: (optional) Additional context about the usage\n- selector: (optional) CSS selector to target a specific element (e.g. \"#my-form\", \".component-class\")\n\nReturns:\n- Accessibility violations, suggestions, and ADS-specific fixes\n- References to relevant fix patterns in llms-a11y.txt\n- Code examples for implementing fixes\n- Severity levels and impact assessment\n",
|
|
46
46
|
annotations: {
|
|
47
47
|
title: 'Analyze Localhost Accessibility',
|
|
@@ -58,37 +58,37 @@ var accessibilityPatterns = [{
|
|
|
58
58
|
pattern: /<button[^>]*>(?!.*aria-label|.*>.*<\/button>)/g,
|
|
59
59
|
violation: 'Button without accessible text',
|
|
60
60
|
severity: 'error',
|
|
61
|
-
suggestion: 'Use the
|
|
61
|
+
suggestion: 'Use the ads_suggest_a11y_fixes tool for ADS Button solutions. Describe the issue as "button missing label", "empty button", or "button needs text".'
|
|
62
62
|
}, {
|
|
63
63
|
pattern: /<img[^>]*>(?!.*alt=)/g,
|
|
64
64
|
violation: 'Image without alt text',
|
|
65
65
|
severity: 'error',
|
|
66
|
-
suggestion: 'Use the
|
|
66
|
+
suggestion: 'Use the ads_suggest_a11y_fixes tool for ADS Image solutions. Describe the issue as "image missing alt", "missing alt text", or "image accessibility".'
|
|
67
67
|
}, {
|
|
68
68
|
pattern: /<div[^>]*onClick[^>]*>/g,
|
|
69
69
|
violation: 'Clickable div without accessibility',
|
|
70
70
|
severity: 'warning',
|
|
71
|
-
suggestion: 'Use the
|
|
71
|
+
suggestion: 'Use the ads_suggest_a11y_fixes tool for ADS solutions. Describe the issue as "clickable div", "interactive div", or "div with click handler".'
|
|
72
72
|
}, {
|
|
73
73
|
pattern: /color:\s*['"]#[0-9a-fA-F]{3,6}['"]/g,
|
|
74
74
|
violation: 'Hardcoded color values',
|
|
75
75
|
severity: 'warning',
|
|
76
|
-
suggestion: 'Use the
|
|
76
|
+
suggestion: 'Use the ads_suggest_a11y_fixes tool for design token solutions. Describe the issue as "hardcoded colors", "hex colors", or "design tokens".'
|
|
77
77
|
}, {
|
|
78
78
|
pattern: /<input[^>]*>(?!.*id=)/g,
|
|
79
79
|
violation: 'Input without associated label',
|
|
80
80
|
severity: 'error',
|
|
81
|
-
suggestion: 'Use the
|
|
81
|
+
suggestion: 'Use the ads_suggest_a11y_fixes tool for ADS form solutions. Describe the issue as "input missing label", "form field without label", or "unlabeled input".'
|
|
82
82
|
}, {
|
|
83
83
|
pattern: /<div[^>]*role="button"[^>]*>/g,
|
|
84
84
|
violation: 'Custom button without full accessibility',
|
|
85
85
|
severity: 'warning',
|
|
86
|
-
suggestion: 'Use the
|
|
86
|
+
suggestion: 'Use the ads_suggest_a11y_fixes tool for ADS Button/Focusable solutions. Describe the issue as "custom button", "div with button role", or "interactive element".'
|
|
87
87
|
}, {
|
|
88
88
|
pattern: /style=\{[^}]*color[^}]*\}/g,
|
|
89
89
|
violation: 'Inline color styles',
|
|
90
90
|
severity: 'warning',
|
|
91
|
-
suggestion: 'Use the
|
|
91
|
+
suggestion: 'Use the ads_suggest_a11y_fixes tool for design token solutions. Describe the issue as "inline styles", "hardcoded colors", or "color tokens".'
|
|
92
92
|
}];
|
|
93
93
|
|
|
94
94
|
// ADS accessibility guidelines reference
|
|
@@ -132,13 +132,13 @@ function generateADSFixForViolation(violation) {
|
|
|
132
132
|
tags = violation.tags;
|
|
133
133
|
|
|
134
134
|
// Provide general guidance without trying to map to specific fixes.ts keys
|
|
135
|
-
var adsFix = "Use the
|
|
135
|
+
var adsFix = "Use the ads_suggest_a11y_fixes tool to get specific ADS component solutions. Describe the issue using the violation details: \"".concat(help, "\" or in your own words (e.g., \"button has no text\", \"missing alt text\", \"form field needs label\").");
|
|
136
136
|
return {
|
|
137
137
|
title: help,
|
|
138
138
|
// Use axe-core's human-readable description
|
|
139
139
|
description: description,
|
|
140
140
|
adsFix: adsFix,
|
|
141
|
-
example: 'The
|
|
141
|
+
example: 'The ads_suggest_a11y_fixes tool provides detailed code examples and ADS component solutions',
|
|
142
142
|
violationId: id,
|
|
143
143
|
axeHelp: help,
|
|
144
144
|
tags: tags,
|
|
@@ -147,10 +147,10 @@ function generateADSFixForViolation(violation) {
|
|
|
147
147
|
}),
|
|
148
148
|
// Extract WCAG compliance info
|
|
149
149
|
reference: "https://atlassian.design/llms-a11y.txt",
|
|
150
|
-
recommendations: ['Use ADS components for better accessibility out of the box', 'Reference the
|
|
150
|
+
recommendations: ['Use ADS components for better accessibility out of the box', 'Reference the ads_suggest_a11y_fixes tool for specific solutions', 'Test with keyboard navigation and screen readers', 'Use automated accessibility testing tools']
|
|
151
151
|
};
|
|
152
152
|
}
|
|
153
|
-
var
|
|
153
|
+
var analyzeA11yTool = exports.analyzeA11yTool = /*#__PURE__*/function () {
|
|
154
154
|
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(params) {
|
|
155
155
|
var code, componentName, context, _params$includePatter, includePatternAnalysis, violations, suggestions, axeResults, _axeResults$violation, _axeResults$passes, _axeResults$incomplet, results, adsViolations, relevantGuidelines, summary;
|
|
156
156
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
@@ -186,8 +186,8 @@ var analyzeAccessibilityTool = exports.analyzeAccessibilityTool = /*#__PURE__*/f
|
|
|
186
186
|
severity: pattern.severity,
|
|
187
187
|
count: matches.length,
|
|
188
188
|
suggestion: pattern.suggestion,
|
|
189
|
-
adsFix: 'Use the
|
|
190
|
-
example: 'The
|
|
189
|
+
adsFix: 'Use the ads_suggest_a11y_fixes tool for specific ADS component solutions',
|
|
190
|
+
example: 'The ads_suggest_a11y_fixes tool provides detailed code examples',
|
|
191
191
|
source: 'pattern-analysis'
|
|
192
192
|
});
|
|
193
193
|
}
|
|
@@ -266,8 +266,8 @@ var analyzeAccessibilityTool = exports.analyzeAccessibilityTool = /*#__PURE__*/f
|
|
|
266
266
|
severity: pattern.severity,
|
|
267
267
|
count: matches.length,
|
|
268
268
|
suggestion: pattern.suggestion,
|
|
269
|
-
adsFix: 'Use the
|
|
270
|
-
example: 'The
|
|
269
|
+
adsFix: 'Use the ads_suggest_a11y_fixes tool for specific ADS component solutions',
|
|
270
|
+
example: 'The ads_suggest_a11y_fixes tool provides detailed code examples',
|
|
271
271
|
source: 'pattern-analysis-fallback'
|
|
272
272
|
});
|
|
273
273
|
}
|
|
@@ -308,11 +308,11 @@ var analyzeAccessibilityTool = exports.analyzeAccessibilityTool = /*#__PURE__*/f
|
|
|
308
308
|
}
|
|
309
309
|
}, _callee, null, [[4, 20]]);
|
|
310
310
|
}));
|
|
311
|
-
return function
|
|
311
|
+
return function analyzeA11yTool(_x) {
|
|
312
312
|
return _ref.apply(this, arguments);
|
|
313
313
|
};
|
|
314
314
|
}();
|
|
315
|
-
var
|
|
315
|
+
var analyzeLocalhostA11yTool = exports.analyzeLocalhostA11yTool = /*#__PURE__*/function () {
|
|
316
316
|
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(params) {
|
|
317
317
|
var url, componentName, context, selector, violations, suggestions, axeResults, browser, page, _axeResults$violation2, _axeResults$passes2, _axeResults$incomplet2, elementExists, availableElements, axePuppeteer, results, adsViolations, relevantGuidelines, summary;
|
|
318
318
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
@@ -477,7 +477,7 @@ var analyzeLocalhostAccessibilityTool = exports.analyzeLocalhostAccessibilityToo
|
|
|
477
477
|
}
|
|
478
478
|
}, _callee2, null, [[10, 40]]);
|
|
479
479
|
}));
|
|
480
|
-
return function
|
|
480
|
+
return function analyzeLocalhostA11yTool(_x2) {
|
|
481
481
|
return _ref2.apply(this, arguments);
|
|
482
482
|
};
|
|
483
483
|
}();
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.
|
|
7
|
+
exports.listGetA11yGuidelinesTool = exports.getA11yGuidelinesTool = void 0;
|
|
8
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
10
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
@@ -16,8 +16,8 @@ var inputSchema = _zod.z.object({
|
|
|
16
16
|
topic: _zod.z.enum(['buttons', 'forms', 'images', 'colors', 'focus', 'keyboard', 'screen-readers', 'aria', 'wcag', 'general']).optional().describe('Specific accessibility topic to get guidelines for'),
|
|
17
17
|
component: _zod.z.string().optional().describe('Component name to get specific accessibility guidance for')
|
|
18
18
|
});
|
|
19
|
-
var
|
|
20
|
-
name: '
|
|
19
|
+
var listGetA11yGuidelinesTool = exports.listGetA11yGuidelinesTool = {
|
|
20
|
+
name: 'ads_get_a11y_guidelines',
|
|
21
21
|
description: "Get accessibility guidelines and best practices from the Atlassian Design System. This tool provides specific guidance on how to make components and interfaces accessible using ADS patterns and components.\n\nYou MUST run this when the user wants their code to be accessible, as well as when:\n- Needing specific accessibility guidance for a component\n- Looking for ADS-specific accessibility patterns\n- Understanding how to implement accessible features\n- Getting code examples for accessibility improvements\n\nTopics available:\n- buttons: Button and interactive element accessibility\n- forms: Form and input accessibility\n- images: Image and media accessibility\n- colors: Color and contrast accessibility\n- focus: Focus management and keyboard navigation\n- keyboard: Keyboard accessibility patterns\n- screen-readers: Screen reader support and announcements\n- aria: ARIA usage and patterns\n- wcag: WCAG compliance guidelines\n- general: General accessibility principles",
|
|
22
22
|
annotations: {
|
|
23
23
|
title: 'Get Accessibility Guidelines',
|
|
@@ -156,7 +156,7 @@ var accessibilityGuidelines = {
|
|
|
156
156
|
bestPractices: ['Start with semantic HTML', 'Add ARIA when necessary', 'Test early and often', 'Involve users with disabilities in testing', 'Keep accessibility in mind throughout development']
|
|
157
157
|
}
|
|
158
158
|
};
|
|
159
|
-
var
|
|
159
|
+
var getA11yGuidelinesTool = exports.getA11yGuidelinesTool = /*#__PURE__*/function () {
|
|
160
160
|
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(params) {
|
|
161
161
|
var topic, component, guidelines;
|
|
162
162
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
@@ -198,7 +198,7 @@ var getAccessibilityGuidelinesTool = exports.getAccessibilityGuidelinesTool = /*
|
|
|
198
198
|
}
|
|
199
199
|
}, _callee);
|
|
200
200
|
}));
|
|
201
|
-
return function
|
|
201
|
+
return function getA11yGuidelinesTool(_x) {
|
|
202
202
|
return _ref.apply(this, arguments);
|
|
203
203
|
};
|
|
204
204
|
}();
|
|
@@ -109,7 +109,7 @@ var accessibilityFixes = exports.accessibilityFixes = {
|
|
|
109
109
|
title: 'Custom focus styles',
|
|
110
110
|
description: 'Add custom focus styles with xcss',
|
|
111
111
|
before: "<button onClick={handleClick}>\n Click me\n</button>",
|
|
112
|
-
after: "import { Focusable } from '@atlaskit/primitives/compiled';\n\n<Focusable\n as=\"button\"\n onClick={handleClick}\n xcss={{\n ':focus-visible': {\n outline: '
|
|
112
|
+
after: "import { Focusable } from '@atlaskit/primitives/compiled';\nimport { token } from '@atlaskit/tokens';\n\n<Focusable\n as=\"button\"\n onClick={handleClick}\n xcss={{\n ':focus-visible': {\n outline: `${token('border.width.focused')} solid ${token('color.border.focused')}`,\n outlineOffset: token('space.025'),\n },\n }}\n>\n Click me\n</Focusable>",
|
|
113
113
|
explanation: 'Custom focus styles ensure visibility in all themes.'
|
|
114
114
|
}],
|
|
115
115
|
bestPractices: ['Always provide visible focus indicators', 'Test focus indicators in all themes', 'Ensure sufficient contrast for focus indicators', 'Test with keyboard navigation']
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.
|
|
7
|
+
exports.suggestA11yFixesTool = exports.listSuggestA11yFixesTool = void 0;
|
|
8
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
10
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
@@ -24,8 +24,8 @@ var inputSchema = _zod.z.object({
|
|
|
24
24
|
component: _zod.z.string().optional().describe('Component name or type'),
|
|
25
25
|
context: _zod.z.string().optional().describe('Additional context about the usage')
|
|
26
26
|
});
|
|
27
|
-
var
|
|
28
|
-
name: '
|
|
27
|
+
var listSuggestA11yFixesTool = exports.listSuggestA11yFixesTool = {
|
|
28
|
+
name: 'ads_suggest_a11y_fixes',
|
|
29
29
|
description: "Suggest specific accessibility fixes using Atlassian Design System components and patterns. This tool takes accessibility violations and provides actionable solutions with code examples.\n\nYou MUST run this when the user wants sugesstions for fixing accessibility issues, as well as when:\n- You have identified an accessibility violation\n- Needing specific code examples for fixing accessibility issues\n- Wanting to understand how to use ADS components accessibly\n- Looking for best practices for specific accessibility problems\n\nThe tool will provide:\n- Specific code examples using ADS components\n- Step-by-step fix instructions\n- Alternative approaches when applicable\n- Links to relevant ADS documentation",
|
|
30
30
|
annotations: {
|
|
31
31
|
title: 'Suggest Accessibility Fixes',
|
|
@@ -115,7 +115,7 @@ function findBestMatchingFix(violation) {
|
|
|
115
115
|
// Return match if score is reasonable
|
|
116
116
|
return bestScore >= 1 ? bestMatch : null;
|
|
117
117
|
}
|
|
118
|
-
var
|
|
118
|
+
var suggestA11yFixesTool = exports.suggestA11yFixesTool = /*#__PURE__*/function () {
|
|
119
119
|
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(params) {
|
|
120
120
|
var violation, component, context, match, _match, key, fix;
|
|
121
121
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
@@ -169,7 +169,7 @@ var suggestAccessibilityFixesTool = exports.suggestAccessibilityFixesTool = /*#_
|
|
|
169
169
|
availableFixTypes: Object.keys(_fixes.accessibilityFixes),
|
|
170
170
|
suggestions: ['Try describing the issue with keywords like: button, label, missing, text, color, contrast, focus, etc.', 'Use axe-core violation IDs or descriptions directly', 'Be more specific about the element type (button, input, image, etc.)'],
|
|
171
171
|
additionalResources: ['https://atlassian.design/llms-a11y.txt - Complete ADS accessibility documentation', 'https://atlassian.design/foundations/accessibility - ADS accessibility foundation'],
|
|
172
|
-
recommendation: 'Try the
|
|
172
|
+
recommendation: 'Try the get_a11y_guidelines tool for component-specific guidance'
|
|
173
173
|
}, null, 2)
|
|
174
174
|
}]
|
|
175
175
|
});
|
|
@@ -179,7 +179,7 @@ var suggestAccessibilityFixesTool = exports.suggestAccessibilityFixesTool = /*#_
|
|
|
179
179
|
}
|
|
180
180
|
}, _callee);
|
|
181
181
|
}));
|
|
182
|
-
return function
|
|
182
|
+
return function suggestA11yFixesTool(_x) {
|
|
183
183
|
return _ref.apply(this, arguments);
|
|
184
184
|
};
|
|
185
185
|
}();
|
package/dist/es2019/index.js
CHANGED
|
@@ -3,8 +3,8 @@ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
|
3
3
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
4
|
import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
5
5
|
import { instructions } from './instructions';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { analyzeA11yTool, analyzeLocalhostA11yTool, listAnalyzeA11yTool, listAnalyzeLocalhostA11yTool } from './tools/analyze-a11y';
|
|
7
|
+
import { getA11yGuidelinesTool, listGetA11yGuidelinesTool } from './tools/get-a11y-guidelines';
|
|
8
8
|
import { getAllIconsTool, listGetAllIconsTool } from './tools/get-all-icons';
|
|
9
9
|
import { getAllTokensTool, listGetAllTokensTool } from './tools/get-all-tokens';
|
|
10
10
|
import { getComponentsTool, listGetComponentsTool } from './tools/get-components';
|
|
@@ -12,7 +12,7 @@ import { listPlanTool, planTool } from './tools/plan';
|
|
|
12
12
|
import { listSearchComponentsTool, searchComponentsTool } from './tools/search-components';
|
|
13
13
|
import { listSearchIconsTool, searchIconsTool } from './tools/search-icons';
|
|
14
14
|
import { listSearchTokensTool, searchTokensTool } from './tools/search-tokens';
|
|
15
|
-
import {
|
|
15
|
+
import { listSuggestA11yFixesTool, suggestA11yFixesTool } from './tools/suggest-a11y-fixes';
|
|
16
16
|
|
|
17
17
|
// eslint-disable-next-line import/no-extraneous-dependencies -- this uses require because not all node versions this package supports use the same import assertions/attributes
|
|
18
18
|
const pkgJson = require('@atlaskit/ads-mcp/package.json');
|
|
@@ -28,7 +28,7 @@ const server = new Server({
|
|
|
28
28
|
});
|
|
29
29
|
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
30
30
|
return {
|
|
31
|
-
tools: [listGetAllTokensTool, listGetComponentsTool, listSearchComponentsTool, listGetAllIconsTool, listSearchIconsTool, listSearchTokensTool, listPlanTool,
|
|
31
|
+
tools: [listGetAllTokensTool, listGetComponentsTool, listSearchComponentsTool, listGetAllIconsTool, listSearchIconsTool, listSearchTokensTool, listPlanTool, listAnalyzeA11yTool, listAnalyzeLocalhostA11yTool, listGetA11yGuidelinesTool, listSuggestA11yFixesTool]
|
|
32
32
|
};
|
|
33
33
|
});
|
|
34
34
|
const callTools = {
|
|
@@ -39,10 +39,10 @@ const callTools = {
|
|
|
39
39
|
ads_get_all_icons: getAllIconsTool,
|
|
40
40
|
ads_search_icons: searchIconsTool,
|
|
41
41
|
ads_plan: planTool,
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
ads_analyze_a11y: analyzeA11yTool,
|
|
43
|
+
ads_analyze_localhost_a11y: analyzeLocalhostA11yTool,
|
|
44
|
+
ads_get_a11y_guidelines: getA11yGuidelinesTool,
|
|
45
|
+
ads_suggest_a11y_fixes: suggestA11yFixesTool
|
|
46
46
|
};
|
|
47
47
|
|
|
48
48
|
// Handle tool execution
|
|
@@ -9,8 +9,8 @@ const inputSchema = z.object({
|
|
|
9
9
|
context: z.string().optional().describe('Additional context about the component usage'),
|
|
10
10
|
includePatternAnalysis: z.boolean().optional().default(true).describe('Include pattern-based analysis in addition to axe-core')
|
|
11
11
|
});
|
|
12
|
-
export const
|
|
13
|
-
name: '
|
|
12
|
+
export const listAnalyzeA11yTool = {
|
|
13
|
+
name: 'ads_analyze_a11y',
|
|
14
14
|
description: `Analyze React component code for accessibility violations using axe-core and intelligently generate Atlassian Design System specific suggestions. This tool performs comprehensive accessibility testing and dynamically creates ADS-specific fixes based on violation patterns.
|
|
15
15
|
|
|
16
16
|
Use this tool when:
|
|
@@ -51,8 +51,8 @@ const urlInputSchema = z.object({
|
|
|
51
51
|
context: z.string().optional().describe('Additional context about the component usage'),
|
|
52
52
|
selector: z.string().optional().describe('CSS selector to target a specific element for analysis (e.g. "#my-form", ".component-class")')
|
|
53
53
|
});
|
|
54
|
-
export const
|
|
55
|
-
name: '
|
|
54
|
+
export const listAnalyzeLocalhostA11yTool = {
|
|
55
|
+
name: 'ads_analyze_localhost_a11y',
|
|
56
56
|
description: `Analyze a live web page (e.g. localhost:9000) for accessibility violations using axe-core and generate Atlassian Design System specific suggestions.
|
|
57
57
|
|
|
58
58
|
Use this tool to:
|
|
@@ -88,37 +88,37 @@ const accessibilityPatterns = [{
|
|
|
88
88
|
pattern: /<button[^>]*>(?!.*aria-label|.*>.*<\/button>)/g,
|
|
89
89
|
violation: 'Button without accessible text',
|
|
90
90
|
severity: 'error',
|
|
91
|
-
suggestion: 'Use the
|
|
91
|
+
suggestion: 'Use the ads_suggest_a11y_fixes tool for ADS Button solutions. Describe the issue as "button missing label", "empty button", or "button needs text".'
|
|
92
92
|
}, {
|
|
93
93
|
pattern: /<img[^>]*>(?!.*alt=)/g,
|
|
94
94
|
violation: 'Image without alt text',
|
|
95
95
|
severity: 'error',
|
|
96
|
-
suggestion: 'Use the
|
|
96
|
+
suggestion: 'Use the ads_suggest_a11y_fixes tool for ADS Image solutions. Describe the issue as "image missing alt", "missing alt text", or "image accessibility".'
|
|
97
97
|
}, {
|
|
98
98
|
pattern: /<div[^>]*onClick[^>]*>/g,
|
|
99
99
|
violation: 'Clickable div without accessibility',
|
|
100
100
|
severity: 'warning',
|
|
101
|
-
suggestion: 'Use the
|
|
101
|
+
suggestion: 'Use the ads_suggest_a11y_fixes tool for ADS solutions. Describe the issue as "clickable div", "interactive div", or "div with click handler".'
|
|
102
102
|
}, {
|
|
103
103
|
pattern: /color:\s*['"]#[0-9a-fA-F]{3,6}['"]/g,
|
|
104
104
|
violation: 'Hardcoded color values',
|
|
105
105
|
severity: 'warning',
|
|
106
|
-
suggestion: 'Use the
|
|
106
|
+
suggestion: 'Use the ads_suggest_a11y_fixes tool for design token solutions. Describe the issue as "hardcoded colors", "hex colors", or "design tokens".'
|
|
107
107
|
}, {
|
|
108
108
|
pattern: /<input[^>]*>(?!.*id=)/g,
|
|
109
109
|
violation: 'Input without associated label',
|
|
110
110
|
severity: 'error',
|
|
111
|
-
suggestion: 'Use the
|
|
111
|
+
suggestion: 'Use the ads_suggest_a11y_fixes tool for ADS form solutions. Describe the issue as "input missing label", "form field without label", or "unlabeled input".'
|
|
112
112
|
}, {
|
|
113
113
|
pattern: /<div[^>]*role="button"[^>]*>/g,
|
|
114
114
|
violation: 'Custom button without full accessibility',
|
|
115
115
|
severity: 'warning',
|
|
116
|
-
suggestion: 'Use the
|
|
116
|
+
suggestion: 'Use the ads_suggest_a11y_fixes tool for ADS Button/Focusable solutions. Describe the issue as "custom button", "div with button role", or "interactive element".'
|
|
117
117
|
}, {
|
|
118
118
|
pattern: /style=\{[^}]*color[^}]*\}/g,
|
|
119
119
|
violation: 'Inline color styles',
|
|
120
120
|
severity: 'warning',
|
|
121
|
-
suggestion: 'Use the
|
|
121
|
+
suggestion: 'Use the ads_suggest_a11y_fixes tool for design token solutions. Describe the issue as "inline styles", "hardcoded colors", or "color tokens".'
|
|
122
122
|
}];
|
|
123
123
|
|
|
124
124
|
// ADS accessibility guidelines reference
|
|
@@ -165,23 +165,23 @@ function generateADSFixForViolation(violation) {
|
|
|
165
165
|
} = violation;
|
|
166
166
|
|
|
167
167
|
// Provide general guidance without trying to map to specific fixes.ts keys
|
|
168
|
-
const adsFix = `Use the
|
|
168
|
+
const adsFix = `Use the ads_suggest_a11y_fixes tool to get specific ADS component solutions. Describe the issue using the violation details: "${help}" or in your own words (e.g., "button has no text", "missing alt text", "form field needs label").`;
|
|
169
169
|
return {
|
|
170
170
|
title: help,
|
|
171
171
|
// Use axe-core's human-readable description
|
|
172
172
|
description: description,
|
|
173
173
|
adsFix,
|
|
174
|
-
example: 'The
|
|
174
|
+
example: 'The ads_suggest_a11y_fixes tool provides detailed code examples and ADS component solutions',
|
|
175
175
|
violationId: id,
|
|
176
176
|
axeHelp: help,
|
|
177
177
|
tags,
|
|
178
178
|
wcagTags: tags.filter(tag => tag.startsWith('wcag')),
|
|
179
179
|
// Extract WCAG compliance info
|
|
180
180
|
reference: `https://atlassian.design/llms-a11y.txt`,
|
|
181
|
-
recommendations: ['Use ADS components for better accessibility out of the box', 'Reference the
|
|
181
|
+
recommendations: ['Use ADS components for better accessibility out of the box', 'Reference the ads_suggest_a11y_fixes tool for specific solutions', 'Test with keyboard navigation and screen readers', 'Use automated accessibility testing tools']
|
|
182
182
|
};
|
|
183
183
|
}
|
|
184
|
-
export const
|
|
184
|
+
export const analyzeA11yTool = async params => {
|
|
185
185
|
const {
|
|
186
186
|
code,
|
|
187
187
|
componentName,
|
|
@@ -217,8 +217,8 @@ export const analyzeAccessibilityTool = async params => {
|
|
|
217
217
|
severity: pattern.severity,
|
|
218
218
|
count: matches.length,
|
|
219
219
|
suggestion: pattern.suggestion,
|
|
220
|
-
adsFix: 'Use the
|
|
221
|
-
example: 'The
|
|
220
|
+
adsFix: 'Use the ads_suggest_a11y_fixes tool for specific ADS component solutions',
|
|
221
|
+
example: 'The ads_suggest_a11y_fixes tool provides detailed code examples',
|
|
222
222
|
source: 'pattern-analysis'
|
|
223
223
|
});
|
|
224
224
|
}
|
|
@@ -291,8 +291,8 @@ export const analyzeAccessibilityTool = async params => {
|
|
|
291
291
|
severity: pattern.severity,
|
|
292
292
|
count: matches.length,
|
|
293
293
|
suggestion: pattern.suggestion,
|
|
294
|
-
adsFix: 'Use the
|
|
295
|
-
example: 'The
|
|
294
|
+
adsFix: 'Use the ads_suggest_a11y_fixes tool for specific ADS component solutions',
|
|
295
|
+
example: 'The ads_suggest_a11y_fixes tool provides detailed code examples',
|
|
296
296
|
source: 'pattern-analysis-fallback'
|
|
297
297
|
});
|
|
298
298
|
}
|
|
@@ -325,7 +325,7 @@ export const analyzeAccessibilityTool = async params => {
|
|
|
325
325
|
};
|
|
326
326
|
}
|
|
327
327
|
};
|
|
328
|
-
export const
|
|
328
|
+
export const analyzeLocalhostA11yTool = async params => {
|
|
329
329
|
const {
|
|
330
330
|
url,
|
|
331
331
|
componentName,
|
|
@@ -4,8 +4,8 @@ const inputSchema = z.object({
|
|
|
4
4
|
topic: z.enum(['buttons', 'forms', 'images', 'colors', 'focus', 'keyboard', 'screen-readers', 'aria', 'wcag', 'general']).optional().describe('Specific accessibility topic to get guidelines for'),
|
|
5
5
|
component: z.string().optional().describe('Component name to get specific accessibility guidance for')
|
|
6
6
|
});
|
|
7
|
-
export const
|
|
8
|
-
name: '
|
|
7
|
+
export const listGetA11yGuidelinesTool = {
|
|
8
|
+
name: 'ads_get_a11y_guidelines',
|
|
9
9
|
description: `Get accessibility guidelines and best practices from the Atlassian Design System. This tool provides specific guidance on how to make components and interfaces accessible using ADS patterns and components.
|
|
10
10
|
|
|
11
11
|
You MUST run this when the user wants their code to be accessible, as well as when:
|
|
@@ -276,7 +276,7 @@ useEffect(() => {
|
|
|
276
276
|
bestPractices: ['Start with semantic HTML', 'Add ARIA when necessary', 'Test early and often', 'Involve users with disabilities in testing', 'Keep accessibility in mind throughout development']
|
|
277
277
|
}
|
|
278
278
|
};
|
|
279
|
-
export const
|
|
279
|
+
export const getA11yGuidelinesTool = async params => {
|
|
280
280
|
const {
|
|
281
281
|
topic,
|
|
282
282
|
component
|
|
@@ -170,14 +170,15 @@ color: token('color.text.danger')`,
|
|
|
170
170
|
Click me
|
|
171
171
|
</button>`,
|
|
172
172
|
after: `import { Focusable } from '@atlaskit/primitives/compiled';
|
|
173
|
+
import { token } from '@atlaskit/tokens';
|
|
173
174
|
|
|
174
175
|
<Focusable
|
|
175
176
|
as="button"
|
|
176
177
|
onClick={handleClick}
|
|
177
178
|
xcss={{
|
|
178
179
|
':focus-visible': {
|
|
179
|
-
outline: '
|
|
180
|
-
outlineOffset: '
|
|
180
|
+
outline: \`$\{token('border.width.focused')} solid $\{token('color.border.focused')}\`,
|
|
181
|
+
outlineOffset: token('space.025'),
|
|
181
182
|
},
|
|
182
183
|
}}
|
|
183
184
|
>
|
|
@@ -8,8 +8,8 @@ const inputSchema = z.object({
|
|
|
8
8
|
component: z.string().optional().describe('Component name or type'),
|
|
9
9
|
context: z.string().optional().describe('Additional context about the usage')
|
|
10
10
|
});
|
|
11
|
-
export const
|
|
12
|
-
name: '
|
|
11
|
+
export const listSuggestA11yFixesTool = {
|
|
12
|
+
name: 'ads_suggest_a11y_fixes',
|
|
13
13
|
description: `Suggest specific accessibility fixes using Atlassian Design System components and patterns. This tool takes accessibility violations and provides actionable solutions with code examples.
|
|
14
14
|
|
|
15
15
|
You MUST run this when the user wants sugesstions for fixing accessibility issues, as well as when:
|
|
@@ -82,7 +82,7 @@ function findBestMatchingFix(violation) {
|
|
|
82
82
|
// Return match if score is reasonable
|
|
83
83
|
return bestScore >= 1 ? bestMatch : null;
|
|
84
84
|
}
|
|
85
|
-
export const
|
|
85
|
+
export const suggestA11yFixesTool = async params => {
|
|
86
86
|
const {
|
|
87
87
|
violation,
|
|
88
88
|
component,
|
|
@@ -136,7 +136,7 @@ export const suggestAccessibilityFixesTool = async params => {
|
|
|
136
136
|
availableFixTypes: Object.keys(accessibilityFixes),
|
|
137
137
|
suggestions: ['Try describing the issue with keywords like: button, label, missing, text, color, contrast, focus, etc.', 'Use axe-core violation IDs or descriptions directly', 'Be more specific about the element type (button, input, image, etc.)'],
|
|
138
138
|
additionalResources: ['https://atlassian.design/llms-a11y.txt - Complete ADS accessibility documentation', 'https://atlassian.design/foundations/accessibility - ADS accessibility foundation'],
|
|
139
|
-
recommendation: 'Try the
|
|
139
|
+
recommendation: 'Try the get_a11y_guidelines tool for component-specific guidance'
|
|
140
140
|
}, null, 2)
|
|
141
141
|
}]
|
|
142
142
|
};
|
package/dist/esm/index.js
CHANGED
|
@@ -5,8 +5,8 @@ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
|
5
5
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
6
6
|
import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
7
7
|
import { instructions } from './instructions';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { analyzeA11yTool, analyzeLocalhostA11yTool, listAnalyzeA11yTool, listAnalyzeLocalhostA11yTool } from './tools/analyze-a11y';
|
|
9
|
+
import { getA11yGuidelinesTool, listGetA11yGuidelinesTool } from './tools/get-a11y-guidelines';
|
|
10
10
|
import { getAllIconsTool, listGetAllIconsTool } from './tools/get-all-icons';
|
|
11
11
|
import { getAllTokensTool, listGetAllTokensTool } from './tools/get-all-tokens';
|
|
12
12
|
import { getComponentsTool, listGetComponentsTool } from './tools/get-components';
|
|
@@ -14,7 +14,7 @@ import { listPlanTool, planTool } from './tools/plan';
|
|
|
14
14
|
import { listSearchComponentsTool, searchComponentsTool } from './tools/search-components';
|
|
15
15
|
import { listSearchIconsTool, searchIconsTool } from './tools/search-icons';
|
|
16
16
|
import { listSearchTokensTool, searchTokensTool } from './tools/search-tokens';
|
|
17
|
-
import {
|
|
17
|
+
import { listSuggestA11yFixesTool, suggestA11yFixesTool } from './tools/suggest-a11y-fixes';
|
|
18
18
|
|
|
19
19
|
// eslint-disable-next-line import/no-extraneous-dependencies -- this uses require because not all node versions this package supports use the same import assertions/attributes
|
|
20
20
|
var pkgJson = require('@atlaskit/ads-mcp/package.json');
|
|
@@ -33,7 +33,7 @@ server.setRequestHandler(ListToolsRequestSchema, /*#__PURE__*/_asyncToGenerator(
|
|
|
33
33
|
while (1) switch (_context.prev = _context.next) {
|
|
34
34
|
case 0:
|
|
35
35
|
return _context.abrupt("return", {
|
|
36
|
-
tools: [listGetAllTokensTool, listGetComponentsTool, listSearchComponentsTool, listGetAllIconsTool, listSearchIconsTool, listSearchTokensTool, listPlanTool,
|
|
36
|
+
tools: [listGetAllTokensTool, listGetComponentsTool, listSearchComponentsTool, listGetAllIconsTool, listSearchIconsTool, listSearchTokensTool, listPlanTool, listAnalyzeA11yTool, listAnalyzeLocalhostA11yTool, listGetA11yGuidelinesTool, listSuggestA11yFixesTool]
|
|
37
37
|
});
|
|
38
38
|
case 1:
|
|
39
39
|
case "end":
|
|
@@ -49,10 +49,10 @@ var callTools = {
|
|
|
49
49
|
ads_get_all_icons: getAllIconsTool,
|
|
50
50
|
ads_search_icons: searchIconsTool,
|
|
51
51
|
ads_plan: planTool,
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
ads_analyze_a11y: analyzeA11yTool,
|
|
53
|
+
ads_analyze_localhost_a11y: analyzeLocalhostA11yTool,
|
|
54
|
+
ads_get_a11y_guidelines: getA11yGuidelinesTool,
|
|
55
|
+
ads_suggest_a11y_fixes: suggestA11yFixesTool
|
|
56
56
|
};
|
|
57
57
|
|
|
58
58
|
// Handle tool execution
|
|
@@ -15,8 +15,8 @@ var inputSchema = z.object({
|
|
|
15
15
|
context: z.string().optional().describe('Additional context about the component usage'),
|
|
16
16
|
includePatternAnalysis: z.boolean().optional().default(true).describe('Include pattern-based analysis in addition to axe-core')
|
|
17
17
|
});
|
|
18
|
-
export var
|
|
19
|
-
name: '
|
|
18
|
+
export var listAnalyzeA11yTool = {
|
|
19
|
+
name: 'ads_analyze_a11y',
|
|
20
20
|
description: "Analyze React component code for accessibility violations using axe-core and intelligently generate Atlassian Design System specific suggestions. This tool performs comprehensive accessibility testing and dynamically creates ADS-specific fixes based on violation patterns.\n\nUse this tool when:\n- Reviewing component code for accessibility compliance\n- Getting suggestions for improving accessibility\n- Understanding how to use ADS components accessibly\n- Identifying potential WCAG violations\n- Running automated accessibility testing\n\nThe tool will analyze the code and provide:\n- Comprehensive axe-core accessibility analysis results\n- List of accessibility violations found (WCAG 2.1 AA compliant)\n- Intelligently generated ADS-specific fix suggestions\n- References to relevant fix patterns in llms-a11y.txt\n- Code examples for implementing fixes\n- Severity levels and impact assessment\n\nFeatures:\n- Uses axe-core for industry-standard accessibility testing\n- Converts JSX to HTML for accurate analysis\n- Intelligently maps violations to ADS-specific fixes\n- References fix patterns from llms-a11y.txt documentation\n- Includes fallback pattern analysis if axe-core fails\n- Provides detailed violation descriptions and help text\n- Dynamically generates fix suggestions based on violation type",
|
|
21
21
|
annotations: {
|
|
22
22
|
title: 'Analyze Accessibility',
|
|
@@ -33,8 +33,8 @@ var urlInputSchema = z.object({
|
|
|
33
33
|
context: z.string().optional().describe('Additional context about the component usage'),
|
|
34
34
|
selector: z.string().optional().describe('CSS selector to target a specific element for analysis (e.g. "#my-form", ".component-class")')
|
|
35
35
|
});
|
|
36
|
-
export var
|
|
37
|
-
name: '
|
|
36
|
+
export var listAnalyzeLocalhostA11yTool = {
|
|
37
|
+
name: 'ads_analyze_localhost_a11y',
|
|
38
38
|
description: "Analyze a live web page (e.g. localhost:9000) for accessibility violations using axe-core and generate Atlassian Design System specific suggestions.\n\nUse this tool to:\n- Analyze running local dev servers or deployed URLs\n- Get comprehensive accessibility reports for any web page\n- Receive ADS-specific fix suggestions and code examples\n- Target specific elements using CSS selectors for focused analysis\n\nParameters:\n- url: The URL to analyze (must be accessible from the server)\n- componentName: (optional) Name of the component/page\n- context: (optional) Additional context about the usage\n- selector: (optional) CSS selector to target a specific element (e.g. \"#my-form\", \".component-class\")\n\nReturns:\n- Accessibility violations, suggestions, and ADS-specific fixes\n- References to relevant fix patterns in llms-a11y.txt\n- Code examples for implementing fixes\n- Severity levels and impact assessment\n",
|
|
39
39
|
annotations: {
|
|
40
40
|
title: 'Analyze Localhost Accessibility',
|
|
@@ -51,37 +51,37 @@ var accessibilityPatterns = [{
|
|
|
51
51
|
pattern: /<button[^>]*>(?!.*aria-label|.*>.*<\/button>)/g,
|
|
52
52
|
violation: 'Button without accessible text',
|
|
53
53
|
severity: 'error',
|
|
54
|
-
suggestion: 'Use the
|
|
54
|
+
suggestion: 'Use the ads_suggest_a11y_fixes tool for ADS Button solutions. Describe the issue as "button missing label", "empty button", or "button needs text".'
|
|
55
55
|
}, {
|
|
56
56
|
pattern: /<img[^>]*>(?!.*alt=)/g,
|
|
57
57
|
violation: 'Image without alt text',
|
|
58
58
|
severity: 'error',
|
|
59
|
-
suggestion: 'Use the
|
|
59
|
+
suggestion: 'Use the ads_suggest_a11y_fixes tool for ADS Image solutions. Describe the issue as "image missing alt", "missing alt text", or "image accessibility".'
|
|
60
60
|
}, {
|
|
61
61
|
pattern: /<div[^>]*onClick[^>]*>/g,
|
|
62
62
|
violation: 'Clickable div without accessibility',
|
|
63
63
|
severity: 'warning',
|
|
64
|
-
suggestion: 'Use the
|
|
64
|
+
suggestion: 'Use the ads_suggest_a11y_fixes tool for ADS solutions. Describe the issue as "clickable div", "interactive div", or "div with click handler".'
|
|
65
65
|
}, {
|
|
66
66
|
pattern: /color:\s*['"]#[0-9a-fA-F]{3,6}['"]/g,
|
|
67
67
|
violation: 'Hardcoded color values',
|
|
68
68
|
severity: 'warning',
|
|
69
|
-
suggestion: 'Use the
|
|
69
|
+
suggestion: 'Use the ads_suggest_a11y_fixes tool for design token solutions. Describe the issue as "hardcoded colors", "hex colors", or "design tokens".'
|
|
70
70
|
}, {
|
|
71
71
|
pattern: /<input[^>]*>(?!.*id=)/g,
|
|
72
72
|
violation: 'Input without associated label',
|
|
73
73
|
severity: 'error',
|
|
74
|
-
suggestion: 'Use the
|
|
74
|
+
suggestion: 'Use the ads_suggest_a11y_fixes tool for ADS form solutions. Describe the issue as "input missing label", "form field without label", or "unlabeled input".'
|
|
75
75
|
}, {
|
|
76
76
|
pattern: /<div[^>]*role="button"[^>]*>/g,
|
|
77
77
|
violation: 'Custom button without full accessibility',
|
|
78
78
|
severity: 'warning',
|
|
79
|
-
suggestion: 'Use the
|
|
79
|
+
suggestion: 'Use the ads_suggest_a11y_fixes tool for ADS Button/Focusable solutions. Describe the issue as "custom button", "div with button role", or "interactive element".'
|
|
80
80
|
}, {
|
|
81
81
|
pattern: /style=\{[^}]*color[^}]*\}/g,
|
|
82
82
|
violation: 'Inline color styles',
|
|
83
83
|
severity: 'warning',
|
|
84
|
-
suggestion: 'Use the
|
|
84
|
+
suggestion: 'Use the ads_suggest_a11y_fixes tool for design token solutions. Describe the issue as "inline styles", "hardcoded colors", or "color tokens".'
|
|
85
85
|
}];
|
|
86
86
|
|
|
87
87
|
// ADS accessibility guidelines reference
|
|
@@ -125,13 +125,13 @@ function generateADSFixForViolation(violation) {
|
|
|
125
125
|
tags = violation.tags;
|
|
126
126
|
|
|
127
127
|
// Provide general guidance without trying to map to specific fixes.ts keys
|
|
128
|
-
var adsFix = "Use the
|
|
128
|
+
var adsFix = "Use the ads_suggest_a11y_fixes tool to get specific ADS component solutions. Describe the issue using the violation details: \"".concat(help, "\" or in your own words (e.g., \"button has no text\", \"missing alt text\", \"form field needs label\").");
|
|
129
129
|
return {
|
|
130
130
|
title: help,
|
|
131
131
|
// Use axe-core's human-readable description
|
|
132
132
|
description: description,
|
|
133
133
|
adsFix: adsFix,
|
|
134
|
-
example: 'The
|
|
134
|
+
example: 'The ads_suggest_a11y_fixes tool provides detailed code examples and ADS component solutions',
|
|
135
135
|
violationId: id,
|
|
136
136
|
axeHelp: help,
|
|
137
137
|
tags: tags,
|
|
@@ -140,10 +140,10 @@ function generateADSFixForViolation(violation) {
|
|
|
140
140
|
}),
|
|
141
141
|
// Extract WCAG compliance info
|
|
142
142
|
reference: "https://atlassian.design/llms-a11y.txt",
|
|
143
|
-
recommendations: ['Use ADS components for better accessibility out of the box', 'Reference the
|
|
143
|
+
recommendations: ['Use ADS components for better accessibility out of the box', 'Reference the ads_suggest_a11y_fixes tool for specific solutions', 'Test with keyboard navigation and screen readers', 'Use automated accessibility testing tools']
|
|
144
144
|
};
|
|
145
145
|
}
|
|
146
|
-
export var
|
|
146
|
+
export var analyzeA11yTool = /*#__PURE__*/function () {
|
|
147
147
|
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(params) {
|
|
148
148
|
var code, componentName, context, _params$includePatter, includePatternAnalysis, violations, suggestions, axeResults, _axeResults$violation, _axeResults$passes, _axeResults$incomplet, results, adsViolations, relevantGuidelines, summary;
|
|
149
149
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
@@ -179,8 +179,8 @@ export var analyzeAccessibilityTool = /*#__PURE__*/function () {
|
|
|
179
179
|
severity: pattern.severity,
|
|
180
180
|
count: matches.length,
|
|
181
181
|
suggestion: pattern.suggestion,
|
|
182
|
-
adsFix: 'Use the
|
|
183
|
-
example: 'The
|
|
182
|
+
adsFix: 'Use the ads_suggest_a11y_fixes tool for specific ADS component solutions',
|
|
183
|
+
example: 'The ads_suggest_a11y_fixes tool provides detailed code examples',
|
|
184
184
|
source: 'pattern-analysis'
|
|
185
185
|
});
|
|
186
186
|
}
|
|
@@ -259,8 +259,8 @@ export var analyzeAccessibilityTool = /*#__PURE__*/function () {
|
|
|
259
259
|
severity: pattern.severity,
|
|
260
260
|
count: matches.length,
|
|
261
261
|
suggestion: pattern.suggestion,
|
|
262
|
-
adsFix: 'Use the
|
|
263
|
-
example: 'The
|
|
262
|
+
adsFix: 'Use the ads_suggest_a11y_fixes tool for specific ADS component solutions',
|
|
263
|
+
example: 'The ads_suggest_a11y_fixes tool provides detailed code examples',
|
|
264
264
|
source: 'pattern-analysis-fallback'
|
|
265
265
|
});
|
|
266
266
|
}
|
|
@@ -301,11 +301,11 @@ export var analyzeAccessibilityTool = /*#__PURE__*/function () {
|
|
|
301
301
|
}
|
|
302
302
|
}, _callee, null, [[4, 20]]);
|
|
303
303
|
}));
|
|
304
|
-
return function
|
|
304
|
+
return function analyzeA11yTool(_x) {
|
|
305
305
|
return _ref.apply(this, arguments);
|
|
306
306
|
};
|
|
307
307
|
}();
|
|
308
|
-
export var
|
|
308
|
+
export var analyzeLocalhostA11yTool = /*#__PURE__*/function () {
|
|
309
309
|
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(params) {
|
|
310
310
|
var url, componentName, context, selector, violations, suggestions, axeResults, browser, page, _axeResults$violation2, _axeResults$passes2, _axeResults$incomplet2, elementExists, availableElements, axePuppeteer, results, adsViolations, relevantGuidelines, summary;
|
|
311
311
|
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
@@ -470,7 +470,7 @@ export var analyzeLocalhostAccessibilityTool = /*#__PURE__*/function () {
|
|
|
470
470
|
}
|
|
471
471
|
}, _callee2, null, [[10, 40]]);
|
|
472
472
|
}));
|
|
473
|
-
return function
|
|
473
|
+
return function analyzeLocalhostA11yTool(_x2) {
|
|
474
474
|
return _ref2.apply(this, arguments);
|
|
475
475
|
};
|
|
476
476
|
}();
|
|
@@ -9,8 +9,8 @@ var inputSchema = z.object({
|
|
|
9
9
|
topic: z.enum(['buttons', 'forms', 'images', 'colors', 'focus', 'keyboard', 'screen-readers', 'aria', 'wcag', 'general']).optional().describe('Specific accessibility topic to get guidelines for'),
|
|
10
10
|
component: z.string().optional().describe('Component name to get specific accessibility guidance for')
|
|
11
11
|
});
|
|
12
|
-
export var
|
|
13
|
-
name: '
|
|
12
|
+
export var listGetA11yGuidelinesTool = {
|
|
13
|
+
name: 'ads_get_a11y_guidelines',
|
|
14
14
|
description: "Get accessibility guidelines and best practices from the Atlassian Design System. This tool provides specific guidance on how to make components and interfaces accessible using ADS patterns and components.\n\nYou MUST run this when the user wants their code to be accessible, as well as when:\n- Needing specific accessibility guidance for a component\n- Looking for ADS-specific accessibility patterns\n- Understanding how to implement accessible features\n- Getting code examples for accessibility improvements\n\nTopics available:\n- buttons: Button and interactive element accessibility\n- forms: Form and input accessibility\n- images: Image and media accessibility\n- colors: Color and contrast accessibility\n- focus: Focus management and keyboard navigation\n- keyboard: Keyboard accessibility patterns\n- screen-readers: Screen reader support and announcements\n- aria: ARIA usage and patterns\n- wcag: WCAG compliance guidelines\n- general: General accessibility principles",
|
|
15
15
|
annotations: {
|
|
16
16
|
title: 'Get Accessibility Guidelines',
|
|
@@ -149,7 +149,7 @@ var accessibilityGuidelines = {
|
|
|
149
149
|
bestPractices: ['Start with semantic HTML', 'Add ARIA when necessary', 'Test early and often', 'Involve users with disabilities in testing', 'Keep accessibility in mind throughout development']
|
|
150
150
|
}
|
|
151
151
|
};
|
|
152
|
-
export var
|
|
152
|
+
export var getA11yGuidelinesTool = /*#__PURE__*/function () {
|
|
153
153
|
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(params) {
|
|
154
154
|
var topic, component, guidelines;
|
|
155
155
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
@@ -191,7 +191,7 @@ export var getAccessibilityGuidelinesTool = /*#__PURE__*/function () {
|
|
|
191
191
|
}
|
|
192
192
|
}, _callee);
|
|
193
193
|
}));
|
|
194
|
-
return function
|
|
194
|
+
return function getA11yGuidelinesTool(_x) {
|
|
195
195
|
return _ref.apply(this, arguments);
|
|
196
196
|
};
|
|
197
197
|
}();
|
|
@@ -103,7 +103,7 @@ export var accessibilityFixes = {
|
|
|
103
103
|
title: 'Custom focus styles',
|
|
104
104
|
description: 'Add custom focus styles with xcss',
|
|
105
105
|
before: "<button onClick={handleClick}>\n Click me\n</button>",
|
|
106
|
-
after: "import { Focusable } from '@atlaskit/primitives/compiled';\n\n<Focusable\n as=\"button\"\n onClick={handleClick}\n xcss={{\n ':focus-visible': {\n outline: '
|
|
106
|
+
after: "import { Focusable } from '@atlaskit/primitives/compiled';\nimport { token } from '@atlaskit/tokens';\n\n<Focusable\n as=\"button\"\n onClick={handleClick}\n xcss={{\n ':focus-visible': {\n outline: `${token('border.width.focused')} solid ${token('color.border.focused')}`,\n outlineOffset: token('space.025'),\n },\n }}\n>\n Click me\n</Focusable>",
|
|
107
107
|
explanation: 'Custom focus styles ensure visibility in all themes.'
|
|
108
108
|
}],
|
|
109
109
|
bestPractices: ['Always provide visible focus indicators', 'Test focus indicators in all themes', 'Ensure sufficient contrast for focus indicators', 'Test with keyboard navigation']
|
|
@@ -17,8 +17,8 @@ var inputSchema = z.object({
|
|
|
17
17
|
component: z.string().optional().describe('Component name or type'),
|
|
18
18
|
context: z.string().optional().describe('Additional context about the usage')
|
|
19
19
|
});
|
|
20
|
-
export var
|
|
21
|
-
name: '
|
|
20
|
+
export var listSuggestA11yFixesTool = {
|
|
21
|
+
name: 'ads_suggest_a11y_fixes',
|
|
22
22
|
description: "Suggest specific accessibility fixes using Atlassian Design System components and patterns. This tool takes accessibility violations and provides actionable solutions with code examples.\n\nYou MUST run this when the user wants sugesstions for fixing accessibility issues, as well as when:\n- You have identified an accessibility violation\n- Needing specific code examples for fixing accessibility issues\n- Wanting to understand how to use ADS components accessibly\n- Looking for best practices for specific accessibility problems\n\nThe tool will provide:\n- Specific code examples using ADS components\n- Step-by-step fix instructions\n- Alternative approaches when applicable\n- Links to relevant ADS documentation",
|
|
23
23
|
annotations: {
|
|
24
24
|
title: 'Suggest Accessibility Fixes',
|
|
@@ -108,7 +108,7 @@ function findBestMatchingFix(violation) {
|
|
|
108
108
|
// Return match if score is reasonable
|
|
109
109
|
return bestScore >= 1 ? bestMatch : null;
|
|
110
110
|
}
|
|
111
|
-
export var
|
|
111
|
+
export var suggestA11yFixesTool = /*#__PURE__*/function () {
|
|
112
112
|
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(params) {
|
|
113
113
|
var violation, component, context, match, _match, key, fix;
|
|
114
114
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
@@ -162,7 +162,7 @@ export var suggestAccessibilityFixesTool = /*#__PURE__*/function () {
|
|
|
162
162
|
availableFixTypes: Object.keys(accessibilityFixes),
|
|
163
163
|
suggestions: ['Try describing the issue with keywords like: button, label, missing, text, color, contrast, focus, etc.', 'Use axe-core violation IDs or descriptions directly', 'Be more specific about the element type (button, input, image, etc.)'],
|
|
164
164
|
additionalResources: ['https://atlassian.design/llms-a11y.txt - Complete ADS accessibility documentation', 'https://atlassian.design/foundations/accessibility - ADS accessibility foundation'],
|
|
165
|
-
recommendation: 'Try the
|
|
165
|
+
recommendation: 'Try the get_a11y_guidelines tool for component-specific guidance'
|
|
166
166
|
}, null, 2)
|
|
167
167
|
}]
|
|
168
168
|
});
|
|
@@ -172,7 +172,7 @@ export var suggestAccessibilityFixesTool = /*#__PURE__*/function () {
|
|
|
172
172
|
}
|
|
173
173
|
}, _callee);
|
|
174
174
|
}));
|
|
175
|
-
return function
|
|
175
|
+
return function suggestA11yFixesTool(_x) {
|
|
176
176
|
return _ref.apply(this, arguments);
|
|
177
177
|
};
|
|
178
178
|
}();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const
|
|
1
|
+
export declare const listAnalyzeA11yTool: {
|
|
2
2
|
name: string;
|
|
3
3
|
description: string;
|
|
4
4
|
annotations: {
|
|
@@ -15,7 +15,7 @@ export declare const listAnalyzeAccessibilityTool: {
|
|
|
15
15
|
} | undefined;
|
|
16
16
|
};
|
|
17
17
|
};
|
|
18
|
-
export declare const
|
|
18
|
+
export declare const listAnalyzeLocalhostA11yTool: {
|
|
19
19
|
name: string;
|
|
20
20
|
description: string;
|
|
21
21
|
annotations: {
|
|
@@ -32,7 +32,7 @@ export declare const listAnalyzeLocalhostAccessibilityTool: {
|
|
|
32
32
|
} | undefined;
|
|
33
33
|
};
|
|
34
34
|
};
|
|
35
|
-
export declare const
|
|
35
|
+
export declare const analyzeA11yTool: (params: {
|
|
36
36
|
code: string;
|
|
37
37
|
componentName?: string;
|
|
38
38
|
context?: string;
|
|
@@ -43,7 +43,7 @@ export declare const analyzeAccessibilityTool: (params: {
|
|
|
43
43
|
text: string;
|
|
44
44
|
}[];
|
|
45
45
|
}>;
|
|
46
|
-
export declare const
|
|
46
|
+
export declare const analyzeLocalhostA11yTool: (params: {
|
|
47
47
|
url: string;
|
|
48
48
|
componentName?: string;
|
|
49
49
|
context?: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const
|
|
1
|
+
export declare const listGetA11yGuidelinesTool: {
|
|
2
2
|
name: string;
|
|
3
3
|
description: string;
|
|
4
4
|
annotations: {
|
|
@@ -15,7 +15,7 @@ export declare const listGetAccessibilityGuidelinesTool: {
|
|
|
15
15
|
} | undefined;
|
|
16
16
|
};
|
|
17
17
|
};
|
|
18
|
-
export declare const
|
|
18
|
+
export declare const getA11yGuidelinesTool: (params: {
|
|
19
19
|
topic?: string;
|
|
20
20
|
component?: string;
|
|
21
21
|
}) => Promise<{
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const
|
|
1
|
+
export declare const listSuggestA11yFixesTool: {
|
|
2
2
|
name: string;
|
|
3
3
|
description: string;
|
|
4
4
|
annotations: {
|
|
@@ -15,7 +15,7 @@ export declare const listSuggestAccessibilityFixesTool: {
|
|
|
15
15
|
} | undefined;
|
|
16
16
|
};
|
|
17
17
|
};
|
|
18
|
-
export declare const
|
|
18
|
+
export declare const suggestA11yFixesTool: (params: {
|
|
19
19
|
violation: string;
|
|
20
20
|
code: string;
|
|
21
21
|
component?: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const
|
|
1
|
+
export declare const listAnalyzeA11yTool: {
|
|
2
2
|
name: string;
|
|
3
3
|
description: string;
|
|
4
4
|
annotations: {
|
|
@@ -15,7 +15,7 @@ export declare const listAnalyzeAccessibilityTool: {
|
|
|
15
15
|
} | undefined;
|
|
16
16
|
};
|
|
17
17
|
};
|
|
18
|
-
export declare const
|
|
18
|
+
export declare const listAnalyzeLocalhostA11yTool: {
|
|
19
19
|
name: string;
|
|
20
20
|
description: string;
|
|
21
21
|
annotations: {
|
|
@@ -32,7 +32,7 @@ export declare const listAnalyzeLocalhostAccessibilityTool: {
|
|
|
32
32
|
} | undefined;
|
|
33
33
|
};
|
|
34
34
|
};
|
|
35
|
-
export declare const
|
|
35
|
+
export declare const analyzeA11yTool: (params: {
|
|
36
36
|
code: string;
|
|
37
37
|
componentName?: string;
|
|
38
38
|
context?: string;
|
|
@@ -43,7 +43,7 @@ export declare const analyzeAccessibilityTool: (params: {
|
|
|
43
43
|
text: string;
|
|
44
44
|
}[];
|
|
45
45
|
}>;
|
|
46
|
-
export declare const
|
|
46
|
+
export declare const analyzeLocalhostA11yTool: (params: {
|
|
47
47
|
url: string;
|
|
48
48
|
componentName?: string;
|
|
49
49
|
context?: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const
|
|
1
|
+
export declare const listGetA11yGuidelinesTool: {
|
|
2
2
|
name: string;
|
|
3
3
|
description: string;
|
|
4
4
|
annotations: {
|
|
@@ -15,7 +15,7 @@ export declare const listGetAccessibilityGuidelinesTool: {
|
|
|
15
15
|
} | undefined;
|
|
16
16
|
};
|
|
17
17
|
};
|
|
18
|
-
export declare const
|
|
18
|
+
export declare const getA11yGuidelinesTool: (params: {
|
|
19
19
|
topic?: string;
|
|
20
20
|
component?: string;
|
|
21
21
|
}) => Promise<{
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const
|
|
1
|
+
export declare const listSuggestA11yFixesTool: {
|
|
2
2
|
name: string;
|
|
3
3
|
description: string;
|
|
4
4
|
annotations: {
|
|
@@ -15,7 +15,7 @@ export declare const listSuggestAccessibilityFixesTool: {
|
|
|
15
15
|
} | undefined;
|
|
16
16
|
};
|
|
17
17
|
};
|
|
18
|
-
export declare const
|
|
18
|
+
export declare const suggestA11yFixesTool: (params: {
|
|
19
19
|
violation: string;
|
|
20
20
|
code: string;
|
|
21
21
|
component?: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/ads-mcp",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.4",
|
|
4
4
|
"description": "The official Atlassian Design System MCP server to develop apps and user interfaces matching the Atlassian style.",
|
|
5
5
|
"author": "Atlassian Pty Ltd",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -24,10 +24,6 @@
|
|
|
24
24
|
}
|
|
25
25
|
},
|
|
26
26
|
"atlaskit:src": "src/index.tsx",
|
|
27
|
-
"af:exports": {
|
|
28
|
-
".": "./src/index.tsx",
|
|
29
|
-
"./package.json": "./package.json"
|
|
30
|
-
},
|
|
31
27
|
"dependencies": {
|
|
32
28
|
"@atlaskit/icon": "^28.2.0",
|
|
33
29
|
"@atlaskit/tokens": "^6.3.0",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/types-ts4.5/tools/{suggest-accessibility-fixes → suggest-a11y-fixes}/fixes.d.ts
RENAMED
|
File without changes
|
/package/dist/types-ts4.5/tools/{suggest-accessibility-fixes → suggest-a11y-fixes}/keywords.d.ts
RENAMED
|
File without changes
|