MCPcopy Create free account
hub / github.com/UsefulSoftwareCo/executor / handleMcpRequest

Function handleMcpRequest

packages/plugins/mcp/src/testing/server.ts:94–223  ·  view source on GitHub ↗
(
        request: http.IncomingMessage,
        response: http.ServerResponse,
      )

Source from the content-addressed store, hash-verified

92 let nextSessionRequestStatus: number | undefined;
93
94 const handleMcpRequest = (
95 request: http.IncomingMessage,
96 response: http.ServerResponse,
97 ): Effect.Effect<void> =>
98 Effect.gen(function* () {
99 const requestUrl = request.url ?? "/";
100 const sessionId = Array.isArray(request.headers["mcp-session-id"])
101 ? request.headers["mcp-session-id"][0]
102 : request.headers["mcp-session-id"];
103 const authorization = Array.isArray(request.headers.authorization)
104 ? request.headers.authorization[0]
105 : request.headers.authorization;
106 const origin = request.headers.host
107 ? `http://${request.headers.host}`
108 : "http://127.0.0.1";
109
110 yield* Ref.update(requests, (all) => [
111 ...all,
112 {
113 method: request.method ?? "GET",
114 url: requestUrl,
115 authorization,
116 sessionId,
117 },
118 ]);
119
120 if (
121 options.auth?.authorizationServerUrls &&
122 requestUrl.startsWith(protectedResourcePath)
123 ) {
124 const resourcePath = requestUrl.slice(protectedResourcePath.length);
125 writeJson(response, 200, {
126 resource: `${origin}${resourcePath}`,
127 authorization_servers: options.auth.authorizationServerUrls,
128 bearer_methods_supported: ["header"],
129 scopes_supported: options.auth.scopes ?? ["read"],
130 });
131 return;
132 }
133
134 if (!isMcpPath(requestUrl, path)) {
135 writeJson(response, 404, { error: "not_found" });
136 return;
137 }
138
139 if (options.auth) {
140 const accepted = yield* options.auth.validateAuthorization(authorization);
141 if (!accepted) {
142 writeJson(
143 response,
144 401,
145 { error: "invalid_token" },
146 {
147 "www-authenticate":
148 options.auth.wwwAuthenticate ??
149 `Bearer resource_metadata="${origin}${protectedResourcePath}${path}", error="invalid_token"`,
150 },
151 );

Callers 1

serveMcpServerFunction · 0.85

Calls 11

isMcpPathFunction · 0.85
writeTextFunction · 0.85
factoryFunction · 0.85
setMethod · 0.80
endMethod · 0.80
writeJsonFunction · 0.70
readRequestBodyFunction · 0.70
updateMethod · 0.65
getMethod · 0.65
connectMethod · 0.65
syncMethod · 0.65

Tested by

no test coverage detected