import { Agent, callable, routeAgentRequest } from "agents";
export class MyAgent extends Agent {
onStart() {
this.mcp.configureOAuthCallback({
customHandler: (result) => {
if (result.authSuccess) {
return new Response("", {
headers: { "content-type": "text/html" },
status: 200
});
}
const error = result.authError || "Unknown error";
return new Response(`Authentication Failed: ${error}`, {
headers: { "content-type": "text/plain" },
status: 400
});
}
});
}
@callable()
async addServer(name: string, url: string) {
await this.addMcpServer(name, url, {
callbackHost: this.env.HOST
});
}
@callable()
async disconnectServer(serverId: string) {
await this.removeMcpServer(serverId);
}
}
export default {
async fetch(request: Request, env: Env) {
return (
(await routeAgentRequest(request, env, { cors: true })) ||
new Response("Not found", { status: 404 })
);
}
} satisfies ExportedHandler;