accessflow-mcp-server 1.6.0-beta.2 → 2.0.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/README.md +14 -5
- package/dist/server.d.ts +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +41 -4
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
[](http://accessibe.com/accessflow)
|
|
2
2
|
|
|
3
3
|
# AccessFlow MCP Server
|
|
4
4
|
|
|
5
|
-
A Model Context Protocol (MCP) server that provides intelligent accessibility issue analysis and remediation guidance. This server connects to the
|
|
5
|
+
A Model Context Protocol (MCP) server that provides intelligent accessibility issue analysis and remediation guidance. This server connects to the accessFlow platform to help developers identify, prioritize, and fix accessibility issues in their web applications.
|
|
6
6
|
|
|
7
7
|
## 🎯 Purpose
|
|
8
8
|
|
|
9
|
-
The
|
|
9
|
+
The accessFlow MCP Server enables AI clients (like Copilot) to:
|
|
10
10
|
|
|
11
11
|
- **Identify Priority Issues**: Get the most urgent accessibility issues ordered by severity and impact
|
|
12
12
|
- **Provide Fix Guidance**: Generate detailed remediation instructions with code examples
|
|
@@ -43,6 +43,15 @@ Provides detailed remediation guidance for a specific accessibility issue.
|
|
|
43
43
|
- Step-by-step remediation instructions
|
|
44
44
|
- Links to tutorials and additional resources
|
|
45
45
|
|
|
46
|
+
### `resolveIssue`
|
|
47
|
+
|
|
48
|
+
Marks the specified issue as resolved in accessFlow.
|
|
49
|
+
Note: If the next audit still detects this issue, it will be reopened automatically.
|
|
50
|
+
|
|
51
|
+
**Parameters**:
|
|
52
|
+
|
|
53
|
+
- `issueDisplayName` (string, required): The unique identifier for the accessibility issue
|
|
54
|
+
|
|
46
55
|
## 📋 Usage
|
|
47
56
|
|
|
48
57
|
### Configuration
|
|
@@ -67,7 +76,7 @@ Add the following configuration to your MCP client (e.g., VS Code Copilot Agent)
|
|
|
67
76
|
|
|
68
77
|
#### Configuration Parameters
|
|
69
78
|
|
|
70
|
-
- **`API_KEY`** (required): Your
|
|
79
|
+
- **`API_KEY`** (required): Your accessFlow API key for authentication
|
|
71
80
|
- **`DOMAIN`** (required): The domain of your application being analyzed (e.g., `example.com` - without protocol)
|
|
72
81
|
- **`ENVIRONMENT`** (optional): API environment URL (defaults to `https://accessflow.accessibe.com`)
|
|
73
82
|
|
|
@@ -79,7 +88,7 @@ For local development, create a `.env` file in the project root:
|
|
|
79
88
|
# Required: Your domain name (without protocol)
|
|
80
89
|
DOMAIN=your-domain.com
|
|
81
90
|
|
|
82
|
-
# Required: Your
|
|
91
|
+
# Required: Your accessFlow API key
|
|
83
92
|
API_KEY=your-api-key-here
|
|
84
93
|
|
|
85
94
|
# Optional: Environment URL (defaults to production)
|
package/dist/server.d.ts
CHANGED
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAQvB,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAGrC,OAAO,CAAC,eAAe,CAAC,CAAa;gBAEzB,eAAe,EAAE,eAAe;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAQvB,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAGrC,OAAO,CAAC,eAAe,CAAC,CAAa;gBAEzB,eAAe,EAAE,eAAe;IA2GtC,IAAI,CAAC,eAAe,EAAE,eAAe;IAwErC,IAAI;CAGX"}
|
package/dist/server.js
CHANGED
|
@@ -23,21 +23,56 @@ export class FlowMcpServer {
|
|
|
23
23
|
name: 'accessFlow MCP Server',
|
|
24
24
|
version: packageJson.version,
|
|
25
25
|
authenticate: async (request) => {
|
|
26
|
+
// Helper function for case-insensitive header lookup
|
|
27
|
+
const getHeader = (name) => {
|
|
28
|
+
const lowerName = name.toLowerCase();
|
|
29
|
+
// Try lowercase first (most common)
|
|
30
|
+
if (request.headers[lowerName]) {
|
|
31
|
+
return request.headers[lowerName];
|
|
32
|
+
}
|
|
33
|
+
// Try exact case
|
|
34
|
+
if (request.headers[name]) {
|
|
35
|
+
return request.headers[name];
|
|
36
|
+
}
|
|
37
|
+
// Search case-insensitively through all headers
|
|
38
|
+
for (const [key, value] of Object.entries(request.headers)) {
|
|
39
|
+
if (key.toLowerCase() === lowerName) {
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return undefined;
|
|
44
|
+
};
|
|
45
|
+
// Log all headers for debugging
|
|
46
|
+
logger.debug({ headers: Object.keys(request.headers) }, 'Incoming HTTP request headers');
|
|
26
47
|
// Extract Authorization header (Bearer token)
|
|
27
|
-
const authHeader =
|
|
48
|
+
const authHeader = getHeader('authorization');
|
|
28
49
|
const apiKey = authHeader?.replace(/^Bearer\s+/i, '') || '';
|
|
29
50
|
// Extract X-Domain header
|
|
30
|
-
const
|
|
51
|
+
const domainHeader = getHeader('x-domain');
|
|
52
|
+
const domain = sanitizeDomain(domainHeader || '');
|
|
53
|
+
// Extract optional X-Environment header (defaults to production)
|
|
54
|
+
const environmentHeader = getHeader('x-environment');
|
|
55
|
+
const environment = environmentHeader || 'https://accessflow.accessibe.com';
|
|
31
56
|
if (!apiKey || !domain) {
|
|
57
|
+
logger.warn({
|
|
58
|
+
hasAuthHeader: !!authHeader,
|
|
59
|
+
hasDomainHeader: !!domainHeader,
|
|
60
|
+
headerKeys: Object.keys(request.headers),
|
|
61
|
+
}, 'Authentication failed: missing headers');
|
|
32
62
|
throw new Response(null, {
|
|
33
63
|
status: 401,
|
|
34
64
|
statusText: 'Unauthorized: Missing Authorization or X-Domain header',
|
|
35
65
|
});
|
|
36
66
|
}
|
|
37
|
-
logger.debug({
|
|
67
|
+
logger.debug({
|
|
68
|
+
domain,
|
|
69
|
+
environment,
|
|
70
|
+
apiKeyPrefix: apiKey.substring(0, 10) + '...',
|
|
71
|
+
}, 'HTTP request authenticated');
|
|
38
72
|
return {
|
|
39
73
|
apiKey,
|
|
40
74
|
domain,
|
|
75
|
+
environment,
|
|
41
76
|
};
|
|
42
77
|
},
|
|
43
78
|
};
|
|
@@ -75,7 +110,9 @@ export class FlowMcpServer {
|
|
|
75
110
|
registerTools(this.server, {
|
|
76
111
|
mode: 'http',
|
|
77
112
|
createApiService: (session) => {
|
|
78
|
-
|
|
113
|
+
// Use environment from session (X-Environment header) or fall back to default
|
|
114
|
+
const environment = session.environment || 'https://accessflow.accessibe.com';
|
|
115
|
+
return new ApiService(environment, session.domain, session.apiKey, nonProdUserName, nonProdPassword);
|
|
79
116
|
},
|
|
80
117
|
});
|
|
81
118
|
}
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAsB,MAAM,SAAS,CAAC;AACtD,OAAO,WAAW,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|