You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
description: Rulesets now support split, join, has_key, and has_value functions for advanced expression logic.
4
+
date: 2026-01-20
5
+
---
6
+
7
+
## New functions for array and map operations
8
+
9
+
Cloudflare Rulesets now include new functions that enable advanced expression logic for evaluating arrays and maps. These functions allow you to build rules that match against lists of values in request or response headers, enabling use cases like country-based blocking using custom headers.
10
+
11
+
---
12
+
13
+
### New functions
14
+
15
+
| Function | Description |
16
+
| --- | --- |
17
+
|`split(source, delimiter)`| Splits a string into an array of strings using the specified delimiter. |
18
+
|`join(array, delimiter)`| Joins an array of strings into a single string using the specified delimiter. |
19
+
|`has_key(map, key)`| Returns `true` if the specified key exists in the map. |
20
+
|`has_value(map, value)`| Returns `true` if the specified value exists in the map. |
21
+
22
+
---
23
+
24
+
### Example use cases
25
+
26
+
**Check if a country code exists in a header list:**
Copy file name to clipboardExpand all lines: src/content/changelog/waf/scheduled-waf-release.mdx
+3-25Lines changed: 3 additions & 25 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,7 @@
1
1
---
2
-
title: WAF Release - Scheduled changes for 2026-01-19
3
-
description: WAF managed ruleset changes scheduled for 2026-01-19
4
-
date: 2026-01-15
2
+
title: WAF Release - Scheduled changes for 2026-01-26
3
+
description: WAF managed ruleset changes scheduled for 2026-01-26
4
+
date: 2026-01-20
5
5
scheduled: true
6
6
---
7
7
@@ -22,28 +22,6 @@ The planned release has been postponed to ensure a smooth deployment.
22
22
</tr>
23
23
</thead>
24
24
<tbody>
25
-
<tr>
26
-
<td>2025-12-01</td>
27
-
<td>2026-01-19</td>
28
-
<td>Log</td>
29
-
<td>N/A</td>
30
-
<td>
31
-
<RuleIDid="a291bd530fa346d18cc1ce5a68d90c8f" />
32
-
</td>
33
-
<td>SQLi - Comment - Beta</td>
34
-
<td>This is a beta detection and will replace the action on original detection "SQLi - Comment" (ID: <RuleIDid="42c424998d2a42c9808ab49c6d8d8fe4" />)</td>
35
-
</tr>
36
-
<tr>
37
-
<td>2025-12-01</td>
38
-
<td>2026-01-19</td>
39
-
<td>Log</td>
40
-
<td>N/A</td>
41
-
<td>
42
-
<RuleIDid="da289f9e692e4f5397d915fbfaa045cf" />
43
-
</td>
44
-
<td>SQLi - Comparison - Beta</td>
45
-
<td>This is a beta detection and will replace the action on original detection "SQLi - Comparison" (ID: <RuleIDid="8166da327a614849bfa29317e7907480" />)</td>
title: Use auxiliary Workers alongside full-stack frameworks
3
+
description: Auxiliary Workers are now fully supported when using full-stack frameworks with the Cloudflare Vite plugin
4
+
products:
5
+
- workers
6
+
date: 2026-01-20
7
+
---
8
+
9
+
Auxiliary Workers are now fully supported when using full-stack frameworks, such as [React Router](/workers/framework-guides/web-apps/react-router/) and [TanStack Start](/workers/framework-guides/web-apps/tanstack-start/), that integrate with the [Cloudflare Vite plugin](/workers/vite-plugin/reference/api/).
10
+
They are included alongside the framework's build output in the build output directory.
11
+
Note that this feature requires Vite 7 or above.
12
+
13
+
Auxiliary Workers are additional Workers that can be called via [service bindings](/workers/runtime-apis/bindings/service-bindings/) from your main (entry) Worker.
14
+
They are defined in the plugin config, as in the example below:
title: Import SQL files as additional modules by default
3
+
description: The `.sql` file extension is now automatically configured to be importable in your Worker code
4
+
products:
5
+
- workers
6
+
date: 2026-01-20
7
+
---
8
+
9
+
The `.sql` file extension is now automatically configured to be importable in your Worker code when using [Wrangler](/workers/wrangler/bundling/#including-non-javascript-modules) or the [Cloudflare Vite plugin](/workers/vite-plugin/reference/non-javascript-modules/).
10
+
This is particular useful for importing migrations in Durable Objects and means you no longer need to configure custom rules when using [Drizzle](https://orm.drizzle.team/docs/connect-cloudflare-do).
This guide will show you how to deploy your own remote MCP server on Cloudflare, with two options:
14
+
This guide will show you how to deploy your own remote MCP server on Cloudflare using [Streamable HTTP transport](/agents/model-context-protocol/transport/), the current MCP specification standard. You have two options:
15
15
16
16
-**Without authentication** — anyone can connect and use the server (no login required).
17
17
-**With [authentication and authorization](/agents/guides/remote-mcp-server/#add-authentication)** — users sign in before accessing tools, and you can control which tools an agent can call based on the user's permissions.
@@ -22,7 +22,7 @@ The button below will guide you through everything you need to do to deploy this
22
22
23
23
[](https://deploy.workers.cloudflare.com/?url=https://github.com/cloudflare/ai/tree/main/demos/remote-mcp-authless)
24
24
25
-
Once deployed, this server will be live at your workers.dev subdomain (e.g. remote-mcp-server-authless.your-account.workers.dev/sse). You can connect to it immediately using the [AI Playground](https://playground.ai.cloudflare.com/) (a remote MCP client), [MCP inspector](https://github.com/modelcontextprotocol/inspector) or [other MCP clients](/agents/guides/remote-mcp-server/#connect-your-remote-mcp-server-to-claude-and-other-mcp-clients-via-a-local-proxy). Then, once you're ready, you can customize the MCP server and add your own [tools](/agents/model-context-protocol/tools/).
25
+
Once deployed, this server will be live at your workers.dev subdomain (e.g. remote-mcp-server-authless.your-account.workers.dev/mcp). You can connect to it immediately using the [AI Playground](https://playground.ai.cloudflare.com/) (a remote MCP client), [MCP inspector](https://github.com/modelcontextprotocol/inspector) or [other MCP clients](/agents/guides/remote-mcp-server/#connect-your-remote-mcp-server-to-claude-and-other-mcp-clients-via-a-local-proxy). Then, once you're ready, you can customize the MCP server and add your own [tools](/agents/model-context-protocol/tools/).
26
26
27
27
If you're using the "Deploy to Cloudflare" button, a new git repository will be set up on your GitHub or GitLab account for your MCP server, configured to automatically deploy to Cloudflare each time you push a change or merge a pull request to the main branch of the repository. You can then clone this repository, [develop locally](/agents/guides/remote-mcp-server/#local-development), and start writing code and building.
28
28
@@ -50,7 +50,7 @@ In the directory of your new project, run the following command to start the dev
50
50
npm start
51
51
```
52
52
53
-
Your MCP server is now running on `http://localhost:8788/sse`.
53
+
Your MCP server is now running on `http://localhost:8788/mcp`.
54
54
55
55
In a new terminal, run the [MCP inspector](https://github.com/modelcontextprotocol/inspector). The MCP inspector is an interactive MCP client that allows you to connect to your MCP server and invoke tools from a web browser.
56
56
@@ -64,7 +64,7 @@ Open the MCP inspector in your web browser:
64
64
open http://localhost:5173
65
65
```
66
66
67
-
In the inspector, enter the URL of your MCP server, `http://localhost:8788/sse`, and click **Connect**. You should see the "List Tools" button, which will list the tools that your MCP server exposes.
67
+
In the inspector, enter the URL of your MCP server, `http://localhost:8788/mcp`, and click **Connect**. You should see the "List Tools" button, which will list the tools that your MCP server exposes.
@@ -84,7 +84,7 @@ After deploying, take the URL of your deployed MCP server, and enter it in the M
84
84
85
85
Now that your MCP server is running, you can use the [`mcp-remote` local proxy](https://www.npmjs.com/package/mcp-remote) to connect Claude Desktop or other MCP clients to it — even though these tools aren't yet _remote_ MCP clients, and don't support remote transport or authorization on the client side. This lets you test what an interaction with your MCP server will be like with a real MCP client.
86
86
87
-
Update your Claude Desktop configuration to point to the URL of your MCP server. You can use either the `localhost:8787/sse` URL, or the URL of your deployed MCP server:
87
+
Update your Claude Desktop configuration to point to the URL of your MCP server. You can use either the `localhost:8788/mcp` URL, or the URL of your deployed MCP server:
88
88
89
89
```json
90
90
{
@@ -93,7 +93,7 @@ Update your Claude Desktop configuration to point to the URL of your MCP server.
@@ -138,7 +138,7 @@ You'll notice that in the example MCP server, if you open `src/index.ts`, the pr
138
138
importGitHubHandlerfrom"./github-handler";
139
139
140
140
exportdefaultnewOAuthProvider({
141
-
apiRoute: "/sse",
141
+
apiRoute: "/mcp",
142
142
apiHandler: MyMCP.Router,
143
143
defaultHandler: GitHubHandler,
144
144
authorizeEndpoint: "/authorize",
@@ -178,7 +178,7 @@ Run the following command to start the development server:
178
178
npm start
179
179
```
180
180
181
-
Your MCP server is now running on `http://localhost:8788/sse`.
181
+
Your MCP server is now running on `http://localhost:8788/mcp`.
182
182
183
183
In a new terminal, run the [MCP inspector](https://github.com/modelcontextprotocol/inspector). The MCP inspector is an interactive MCP client that allows you to connect to your MCP server and invoke tools from a web browser.
184
184
@@ -192,9 +192,9 @@ Open the MCP inspector in your web browser:
192
192
open http://localhost:5173
193
193
```
194
194
195
-
In the inspector, set **Transport Type** to `SSE` and enter the URL of your MCP server, `http://localhost:8788/sse`
195
+
In the inspector, enter the URL of your MCP server, `http://localhost:8788/mcp`
196
196
197
-
In the main panel on the right, click the **Open OAuth Settings** button and then click **Quick OAuth Flow**.
197
+
In the main panel on the right, click the **OAuth Settings** button and then click **Quick OAuth Flow**.
198
198
199
199
You should be redirected to a GitHub login or authorization page. After authorizing the MCP Client (the inspector) access to your GitHub account, you will be redirected back to the inspector.
200
200
@@ -229,32 +229,37 @@ When you create the first secret, Wrangler will ask if you want to create a new
229
229
:::
230
230
231
231
#### Set up a KV namespace
232
-
- Create the KV namespace:
232
+
233
+
- Create the KV namespace:
234
+
233
235
```bash
234
236
npx wrangler kv namespace create "OAUTH_KV"
235
237
```
238
+
236
239
- Update the `wrangler.jsonc` file with the resulting KV ID:
237
240
238
241
```json
239
242
{
240
-
"kvNamespaces": [
241
-
{
242
-
"binding": "OAUTH_KV",
243
-
"id": "<YOUR_KV_NAMESPACE_ID>"
244
-
}
245
-
]
243
+
"kvNamespaces": [
244
+
{
245
+
"binding": "OAUTH_KV",
246
+
"id": "<YOUR_KV_NAMESPACE_ID>"
247
+
}
248
+
]
246
249
}
247
250
```
251
+
248
252
#### Deploy your server
249
253
250
254
Deploy the MCP server to your Cloudflare `workers.dev` domain:
255
+
251
256
```bash
252
257
npm run deploy
253
258
```
254
259
255
260
#### Finally, connect to your MCP server
256
261
257
-
Now that you've added the ID and secret of your production OAuth app, you should now be able to connect to your MCP server running at `worker-name.account-name.workers.dev/sse` using the [AI Playground](https://playground.ai.cloudflare.com/), MCP inspector or ([other MCP clients](/agents/guides/remote-mcp-server/#connect-your-mcp-server-to-claude-and-other-mcp-clients)), and authenticate with GitHub.
262
+
Now that you've added the ID and secret of your production OAuth app, you should now be able to connect to your MCP server running at `worker-name.account-name.workers.dev/mcp` using the [AI Playground](https://playground.ai.cloudflare.com/), MCP inspector or ([other MCP clients](/agents/guides/remote-mcp-server/#connect-your-mcp-server-to-claude-and-other-mcp-clients)), and authenticate with GitHub.
Copy file name to clipboardExpand all lines: src/content/docs/agents/model-context-protocol/index.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,7 +25,7 @@ You can build and deploy [Model Context Protocol (MCP)](https://modelcontextprot
25
25
26
26
The MCP standard supports two modes of operation:
27
27
28
-
-**Remote MCP connections**: MCP clients connect to MCP servers over the Internet, establishing a [long-lived connection using HTTP and Server-Sent Events (SSE)](/agents/model-context-protocol/transport/), and authorizing the MCP client access to resources on the user's account using [OAuth](/agents/model-context-protocol/authorization/).
28
+
-**Remote MCP connections**: MCP clients connect to MCP servers over the Internet, establishing a connection using [Streamable HTTP](/agents/model-context-protocol/transport/), and authorizing the MCP client access to resources on the user's account using [OAuth](/agents/model-context-protocol/authorization/).
29
29
-**Local MCP connections**: MCP clients connect to MCP servers on the same machine, using [stdio](https://spec.modelcontextprotocol.io/specification/draft/basic/transports/#stdio) as a local transport method.
0 commit comments