Skip to content

Commit f3896c2

Browse files
allenwymaDisturbing
andauthored
env variable example (#96)
* env variable example * try to fix ci * regenerate types from wrangler * pass in env to setupServerTools * fix building errors for env var example * updated test suite and tried to solve locally running tests * Working tests + builds for browsers and env project * update worker-configuration.d.ts for dependent-agent * increase test timeout for some tests --------- Co-authored-by: Allen Wyma <> Co-authored-by: Disturbing <hello@xavalabs.com>
1 parent 1bad02a commit f3896c2

40 files changed

+18681
-513
lines changed

examples/browser-mcp/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
"name": "browser-mcp-example",
33
"version": "1.0.0",
44
"description": "Browser Rendering MCP server for web scraping and automation",
5+
"private": true,
56
"type": "module",
6-
"main": "src/index.ts",
77
"scripts": {
88
"build": "tsc",
99
"dev": "concurrently \"npx @modelcontextprotocol/inspector\" \"wrangler dev --remote\" --kill-others",

examples/browser-mcp/src/index.ts

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,27 @@
1-
import { BrowserMcpServer, BrowserMcpServerSqlV2 } from './server.js';
2-
3-
interface Env {
4-
MYBROWSER: Fetcher; // Browser Rendering binding
5-
CACHE_BUCKET?: R2Bucket; // Optional for testing
6-
BROWSER_MCP_SERVER: DurableObjectNamespace<BrowserMcpServerSqlV2>;
7-
8-
// Environment variables
9-
MAX_CONCURRENT_SESSIONS: string;
10-
SESSION_TIMEOUT_MS: string;
11-
CACHE_TTL_HOURS: string;
12-
MAX_PAGE_SIZE_MB: string;
13-
}
1+
import { BrowserMcpServer, BrowserMcpServerSqlV2 } from "./server.js";
142

153
// Export both classes for Durable Object binding
164
export { BrowserMcpServer, BrowserMcpServerSqlV2 };
175

186
// Worker entrypoint for handling incoming requests
197
export default {
20-
async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
8+
async fetch(
9+
request: Request,
10+
env: Env,
11+
ctx: ExecutionContext
12+
): Promise<Response> {
2113
const url = new URL(request.url);
22-
const sessionIdStr = url.searchParams.get('sessionId');
14+
const sessionIdStr = url.searchParams.get("sessionId");
2315
const id = sessionIdStr
2416
? env.BROWSER_MCP_SERVER.idFromString(sessionIdStr)
2517
: env.BROWSER_MCP_SERVER.newUniqueId();
2618

2719
console.log(`Fetching sessionId: ${sessionIdStr} with id: ${id}`);
28-
29-
url.searchParams.set('sessionId', id.toString());
3020

31-
return env.BROWSER_MCP_SERVER.get(id).fetch(new Request(
32-
url.toString(),
33-
request
34-
));
35-
}
36-
};
21+
url.searchParams.set("sessionId", id.toString());
22+
23+
return env.BROWSER_MCP_SERVER.get(id).fetch(
24+
new Request(url.toString(), request)
25+
);
26+
},
27+
};

examples/browser-mcp/src/repository.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ export class BrowserRepository {
170170
if (list.objects.length === 0) return null;
171171

172172
// Get the most recent cache entry
173-
const latestObject = list.objects.sort((a, b) =>
173+
const latestObject = list.objects.sort((a: R2Object, b: R2Object) =>
174174
new Date(b.uploaded).getTime() - new Date(a.uploaded).getTime()
175175
)[0];
176176

examples/browser-mcp/src/resources.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -173,17 +173,17 @@ export function setupBrowserResources(
173173

174174
const cacheStats = {
175175
totalCachedPages: cacheObjects.length,
176-
totalSize: cacheObjects.reduce((sum, obj) => sum + obj.size, 0),
176+
totalSize: cacheObjects.reduce((sum: number, obj: R2Object) => sum + obj.size, 0),
177177
oldestCache: cacheObjects.length > 0
178-
? Math.min(...cacheObjects.map(obj => new Date(obj.uploaded).getTime()))
178+
? Math.min(...cacheObjects.map((obj: R2Object) => new Date(obj.uploaded).getTime()))
179179
: null,
180180
newestCache: cacheObjects.length > 0
181-
? Math.max(...cacheObjects.map(obj => new Date(obj.uploaded).getTime()))
181+
? Math.max(...cacheObjects.map((obj: R2Object) => new Date(obj.uploaded).getTime()))
182182
: null,
183183
};
184184

185185
// Get sample of cached URLs
186-
const sampleCache = cacheObjects.slice(0, 20).map(obj => {
186+
const sampleCache = cacheObjects.slice(0, 20).map((obj: R2Object) => {
187187
const urlPart = obj.key.split('/')[1];
188188
return {
189189
url: decodeURIComponent(urlPart || ''),

0 commit comments

Comments
 (0)