Skip to content

Commit 59f83a5

Browse files
committed
fix: Remove ResourceTemplate usage and simplify resource handlers
- Replaced `ResourceTemplate` with direct `uri` definition for accessibility, cookies, and elements resources. - Streamlined handlers by removing variable parsing and unused parameters.
1 parent 4a301fe commit 59f83a5

3 files changed

Lines changed: 12 additions & 27 deletions

File tree

src/resources/accessibility.resource.ts

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
import type { ResourceDefinition } from '../types/resource';
2-
import { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp';
32
import { getBrowser } from '../session/state';
43
import { getBrowserAccessibilityTree } from '../scripts/get-browser-accessibility-tree';
54
import { encode } from '@toon-format/toon';
6-
import { parseNumber, parseStringArray } from '../utils/parse-variables';
75

86
export async function readAccessibilityTree(params: {
97
limit?: number;
@@ -69,14 +67,10 @@ export async function readAccessibilityTree(params: {
6967

7068
export const accessibilityResource: ResourceDefinition = {
7169
name: 'session-current-accessibility',
72-
template: new ResourceTemplate('wdio://session/current/accessibility{?limit,offset,roles}', { list: undefined }),
70+
uri: 'wdio://session/current/accessibility',
7371
description: 'Accessibility tree for the current page',
74-
handler: async (uri, variables) => {
75-
const result = await readAccessibilityTree({
76-
limit: parseNumber(variables.limit as string | undefined, 100),
77-
offset: parseNumber(variables.offset as string | undefined, 0),
78-
roles: parseStringArray(variables.roles as string | undefined),
79-
});
80-
return { contents: [{ uri: uri.href, mimeType: result.mimeType, text: result.text }] };
72+
handler: async () => {
73+
const result = await readAccessibilityTree({});
74+
return { contents: [{ uri: 'wdio://session/current/accessibility', mimeType: result.mimeType, text: result.text }] };
8175
},
8276
};

src/resources/cookies.resource.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import type { ResourceDefinition } from '../types/resource';
2-
import { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp';
32
import { getBrowser } from '../session/state';
43

54
async function readCookies(name?: string): Promise<{ mimeType: string; text: string }> {
@@ -22,10 +21,10 @@ async function readCookies(name?: string): Promise<{ mimeType: string; text: str
2221

2322
export const cookiesResource: ResourceDefinition = {
2423
name: 'session-current-cookies',
25-
template: new ResourceTemplate('wdio://session/current/cookies{?name}', { list: undefined }),
24+
uri: 'wdio://session/current/cookies',
2625
description: 'Cookies for the current session',
27-
handler: async (uri, variables) => {
28-
const result = await readCookies(variables.name as string | undefined);
29-
return { contents: [{ uri: uri.href, mimeType: result.mimeType, text: result.text }] };
26+
handler: async () => {
27+
const result = await readCookies();
28+
return { contents: [{ uri: 'wdio://session/current/cookies', mimeType: result.mimeType, text: result.text }] };
3029
},
3130
};

src/resources/elements.resource.ts

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import type { ResourceDefinition } from '../types/resource';
2-
import { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp';
32
import { getBrowser } from '../session/state';
4-
import { parseBool, parseNumber } from '../utils/parse-variables';
53
import { getInteractableBrowserElements } from '../scripts/get-interactable-browser-elements';
64
import { getMobileVisibleElements } from '../scripts/get-visible-mobile-elements';
75
import { encode } from '@toon-format/toon';
@@ -61,16 +59,10 @@ async function readVisibleElements(params: {
6159

6260
export const elementsResource: ResourceDefinition = {
6361
name: 'session-current-elements',
64-
template: new ResourceTemplate('wdio://session/current/elements{?inViewportOnly,includeContainers,includeBounds,limit,offset}', { list: undefined }),
62+
uri: 'wdio://session/current/elements',
6563
description: 'Interactable elements on the current page',
66-
handler: async (uri, variables) => {
67-
const result = await readVisibleElements({
68-
inViewportOnly: parseBool(variables.inViewportOnly as string | undefined, true),
69-
includeContainers: parseBool(variables.includeContainers as string | undefined, false),
70-
includeBounds: parseBool(variables.includeBounds as string | undefined, false),
71-
limit: parseNumber(variables.limit as string | undefined, 0),
72-
offset: parseNumber(variables.offset as string | undefined, 0),
73-
});
74-
return { contents: [{ uri: uri.href, mimeType: result.mimeType, text: result.text }] };
64+
handler: async () => {
65+
const result = await readVisibleElements({});
66+
return { contents: [{ uri: 'wdio://session/current/elements', mimeType: result.mimeType, text: result.text }] };
7567
},
7668
};

0 commit comments

Comments
 (0)