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

Function handleMcpRequest

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

Source from the content-addressed store, hash-verified

123 };
124
125 const handleMcpRequest = (
126 request: http.IncomingMessage,
127 response: http.ServerResponse,
128 ): Effect.Effect<void> =>
129 Effect.gen(function* () {
130 const requestUrl = request.url ?? "/";
131 const sessionId = Array.isArray(request.headers["mcp-session-id"])
132 ? request.headers["mcp-session-id"][0]
133 : request.headers["mcp-session-id"];
134 const authorization = Array.isArray(request.headers.authorization)
135 ? request.headers.authorization[0]
136 : request.headers.authorization;
137 const origin = request.headers.host
138 ? `http://${request.headers.host}`
139 : "http://127.0.0.1";
140
141 yield* Ref.update(requests, (all) => [
142 ...all,
143 {
144 method: request.method ?? "GET",
145 url: requestUrl,
146 authorization,
147 sessionId,
148 },
149 ]);
150
151 if (
152 options.auth?.authorizationServerUrls &&
153 requestUrl.startsWith(protectedResourcePath)
154 ) {
155 const resourcePath = requestUrl.slice(protectedResourcePath.length);
156 writeJson(response, 200, {
157 resource: `${origin}${resourcePath}`,
158 authorization_servers: options.auth.authorizationServerUrls,
159 bearer_methods_supported: ["header"],
160 scopes_supported: options.auth.scopes ?? ["read"],
161 });
162 return;
163 }
164
165 if (!isMcpPath(requestUrl, path)) {
166 writeJson(response, 404, { error: "not_found" });
167 return;
168 }
169
170 if (options.auth) {
171 const accepted = yield* options.auth.validateAuthorization(authorization);
172 if (!accepted) {
173 writeUnauthorized(response, origin);
174 return;
175 }
176 }
177
178 if (sessionId && request.method === "POST" && nextSessionRequestStatus !== undefined) {
179 const status = nextSessionRequestStatus;
180 nextSessionRequestStatus = undefined;
181 writeText(response, status, `Forced HTTP ${status}`);
182 return;

Callers 1

serveMcpServerFunction · 0.85

Calls 13

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

Tested by

no test coverage detected