@fouradata/mcp 0.4.1 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/http.js +11 -7
- package/dist/http.js.map +1 -1
- package/dist/server.js +1 -1
- package/dist/tools/auto.js +1 -1
- package/dist/tools/browser.js +1 -1
- package/dist/tools/proxy.js +1 -1
- package/dist/tools/single.js +1 -1
- package/package.json +1 -1
package/dist/http.js
CHANGED
|
@@ -5,7 +5,7 @@ import { createServer } from "./server.js";
|
|
|
5
5
|
import { withApiKey } from "./auth.js";
|
|
6
6
|
import { LANDING_REDIRECT, LLMS_TXT } from "./landing.js";
|
|
7
7
|
const PORT = Number(process.env.PORT ?? 3076);
|
|
8
|
-
const SERVER_VERSION = "0.4.
|
|
8
|
+
const SERVER_VERSION = "0.4.3";
|
|
9
9
|
// Spec MUSTs covered in this file:
|
|
10
10
|
// Origin + Host validation (CVE-2025-66414 DNS rebinding)
|
|
11
11
|
// WWW-Authenticate on 401
|
|
@@ -22,8 +22,6 @@ const SERVER_VERSION = "0.4.1";
|
|
|
22
22
|
//
|
|
23
23
|
// SUPPORTED_PROTOCOL_VERSIONS for @modelcontextprotocol/sdk@1.29.0:
|
|
24
24
|
// ['2025-11-25', '2025-06-18', '2025-03-26', '2024-11-05', '2024-10-07']
|
|
25
|
-
const RESOURCE_METADATA_URL = process.env.FOURA_MCP_RESOURCE_METADATA_URL ??
|
|
26
|
-
"https://foura.ai/docs/api/mcp#auth";
|
|
27
25
|
function parseList(env, defaults) {
|
|
28
26
|
const raw = (env ?? "").trim();
|
|
29
27
|
if (!raw)
|
|
@@ -124,15 +122,21 @@ app.get("/llms.txt", (_req, res) => {
|
|
|
124
122
|
});
|
|
125
123
|
function extractBearer(req) {
|
|
126
124
|
const auth = req.header("authorization");
|
|
127
|
-
if (auth
|
|
128
|
-
|
|
125
|
+
if (auth) {
|
|
126
|
+
// "Authorization: Bearer <key>", or a bare "Authorization: <key>" for MCP
|
|
127
|
+
// gateways that forward the raw key without the Bearer prefix.
|
|
128
|
+
return auth.toLowerCase().startsWith("bearer ") ? auth.slice(7).trim() : auth.trim();
|
|
129
|
+
}
|
|
129
130
|
const xKey = req.header("x-api-key");
|
|
130
131
|
if (xKey)
|
|
131
132
|
return xKey.trim();
|
|
132
133
|
return null;
|
|
133
134
|
}
|
|
134
|
-
// emit WWW-Authenticate on 401 so clients
|
|
135
|
-
|
|
135
|
+
// emit WWW-Authenticate on 401 so clients send a bearer token. Intentionally a PLAIN
|
|
136
|
+
// Bearer challenge with NO `resource_metadata` (RFC 9728): we are API-key auth only for
|
|
137
|
+
// now, and advertising OAuth resource metadata makes gateways (e.g. Smithery) attempt an
|
|
138
|
+
// OAuth flow the server does not implement yet, which loops. Re-add when the OAuth AS ships (Phase 4).
|
|
139
|
+
const WWW_AUTHENTICATE = 'Bearer realm="foura-mcp"';
|
|
136
140
|
app.post("/mcp", validateOriginAndHost, validateProtocolVersion, async (req, res) => {
|
|
137
141
|
const apiKey = extractBearer(req);
|
|
138
142
|
if (!apiKey) {
|
package/dist/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,OAAO,OAA2D,MAAM,SAAS,CAAC;AAClF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE1D,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AAC9C,MAAM,cAAc,GAAG,OAAO,CAAC;AAE/B,mCAAmC;AACnC,4DAA4D;AAC5D,4BAA4B;AAC5B,8DAA8D;AAC9D,2BAA2B;AAC3B,6BAA6B;AAC7B,8BAA8B;AAE9B,yEAAyE;AACzE,yEAAyE;AACzE,sEAAsE;AACtE,0EAA0E;AAC1E,0EAA0E;AAC1E,kEAAkE;AAClE,EAAE;AACF,oEAAoE;AACpE,2EAA2E;AAE3E,
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
package/dist/tools/auto.js
CHANGED
|
@@ -296,7 +296,7 @@ export function registerAutoTool(server) {
|
|
|
296
296
|
headers: {
|
|
297
297
|
"X-API-Key": getApiKey(),
|
|
298
298
|
"Content-Type": "application/json",
|
|
299
|
-
"User-Agent": "foura-mcp/0.4.
|
|
299
|
+
"User-Agent": "foura-mcp/0.4.3 (auto)",
|
|
300
300
|
},
|
|
301
301
|
body: JSON.stringify(upstreamBody),
|
|
302
302
|
headersTimeout: 200_000,
|
package/dist/tools/browser.js
CHANGED
|
@@ -216,7 +216,7 @@ export function registerBrowserTool(server) {
|
|
|
216
216
|
headers: {
|
|
217
217
|
"X-API-Key": getApiKey(),
|
|
218
218
|
"Content-Type": "application/json",
|
|
219
|
-
"User-Agent": "foura-mcp/0.4.
|
|
219
|
+
"User-Agent": "foura-mcp/0.4.3 (browser)",
|
|
220
220
|
},
|
|
221
221
|
body: JSON.stringify(upstreamBody),
|
|
222
222
|
});
|
package/dist/tools/proxy.js
CHANGED
|
@@ -271,7 +271,7 @@ export function registerProxyTool(server) {
|
|
|
271
271
|
headers: {
|
|
272
272
|
"X-API-Key": getApiKey(),
|
|
273
273
|
"Content-Type": "application/json",
|
|
274
|
-
"User-Agent": "foura-mcp/0.4.
|
|
274
|
+
"User-Agent": "foura-mcp/0.4.3 (proxy)",
|
|
275
275
|
},
|
|
276
276
|
body: JSON.stringify(upstreamBody),
|
|
277
277
|
});
|
package/dist/tools/single.js
CHANGED
|
@@ -267,7 +267,7 @@ export function registerSingleTool(server) {
|
|
|
267
267
|
headers: {
|
|
268
268
|
"X-API-Key": getApiKey(),
|
|
269
269
|
"Content-Type": "application/json",
|
|
270
|
-
"User-Agent": "foura-mcp/0.4.
|
|
270
|
+
"User-Agent": "foura-mcp/0.4.3 (single)",
|
|
271
271
|
},
|
|
272
272
|
body: JSON.stringify(upstreamBody),
|
|
273
273
|
});
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fouradata/mcp",
|
|
3
3
|
"mcpName": "ai.foura/mcp",
|
|
4
|
-
"version": "0.4.
|
|
4
|
+
"version": "0.4.3",
|
|
5
5
|
"description": "MCP server for the FourA web scraping API - four tools (smart auto-fetch, HTTP request, rotating proxies, full browser) plus six prompts, usable from any MCP client.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/server.js",
|