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

Function handleMcpRequest

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

Source from the content-addressed store, hash-verified

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

Callers 1

serveMcpServerFunction · 0.85

Calls 11

isMcpPathFunction · 0.85
writeTextFunction · 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
syncMethod · 0.65

Tested by

no test coverage detected