diff --git a/.node-version b/.node-version
index 8b0beab..7c897d9 100644
--- a/.node-version
+++ b/.node-version
@@ -1 +1 @@
-20.11.0
+22.15.1
\ No newline at end of file
diff --git a/README.md b/README.md
index 54168eb..a94eaad 100644
--- a/README.md
+++ b/README.md
@@ -74,7 +74,7 @@ Site Token: SinkCool
- **Framework**: [Nuxt](https://nuxt.com/)
- **Database**: [Cloudflare Workers KV](https://developers.cloudflare.com/kv/)
- **Analytics Engine**: [Cloudflare Workers Analytics Engine](https://developers.cloudflare.com/analytics/)
-- **UI Components**: [Shadcn-vue](https://www.shadcn-vue.com/)
+- **UI Components**: [shadcn-vue](https://www.shadcn-vue.com/)
- **Styling:** [Tailwind CSS](https://tailwindcss.com/)
- **Deployment**: [Cloudflare](https://www.cloudflare.com/)
@@ -94,31 +94,12 @@ We welcome your contributions and PRs.
- [ ] Analytics Enhancements (Support for merging filter conditions)
- [ ] Dashboard Performance Optimization (Infinite loading)
- [ ] Units Test
-- [ ] Support for Other Deployment Platforms
## 🏗️ Deployment
> Video tutorial: [Watch here](https://www.youtube.com/watch?v=MkU23U2VE9E)
-1. [Fork](https://github.com/ccbikai/Sink/fork) the repository to your GitHub account.
-2. Create a project in [Cloudflare Pages](https://developers.cloudflare.com/pages/).
-3. Select the `Sink` repository and choose the `Nuxt.js` preset.
-4. Configure the following environment variables:
- - `NUXT_SITE_TOKEN`: Must be longer than **8** characters. This token grants access to your dashboard.
- - `NUXT_CF_ACCOUNT_ID`: Locate your [account ID](https://developers.cloudflare.com/fundamentals/setup/find-account-and-zone-ids/).
- - `NUXT_CF_API_TOKEN`: Create a [Cloudflare API token](https://developers.cloudflare.com/fundamentals/api/get-started/create-token/) with at least `Account.Account Analytics` permissions. [See reference.](https://developers.cloudflare.com/analytics/analytics-engine/sql-api/#authentication)
-
-5. Save and deploy the project.
-6. Cancel the deployment, then navigate to **Settings** -> **Bindings** -> **Add**:
- - **KV Namespace**: Bind the variable name `KV` to a [KV namespace](https://developers.cloudflare.com/kv/) (create a new one under **Storage & Databases** -> **KV**).
- - **Workers AI** (_Optional_): Bind the variable name `AI` to the Workers AI Catalog.
- - **Analytics Engine**:
- - In **Workers & Pages**, go to **Account details** on the right side, find `Analytics Engine`, and click `Set up` to enable the free version.
- - Return to **Settings** -> **Bindings** -> **Add** and select **Analytics engine**.
- - Bind the variable name `ANALYTICS` to the `sink` dataset.
-
-7. Redeploy the project.
-8. Update code, refer to the official GitHub documentation [Syncing a fork branch from the web UI](https://docs.github.com/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork#syncing-a-fork-branch-from-the-web-ui).
+We currently support deployment to [Cloudflare Workers](./docs/deployment/workers.md) (recommended) and [Cloudflare Pages](./docs/deployment/pages.md).
## ⚒️ Configuration
@@ -128,6 +109,32 @@ We welcome your contributions and PRs.
[API Docs](./docs/api.md)
+## 🧰 MCP
+
+We currently do not support native MCP Server, but we have OpenAPI documentation, and you can use the following method to support MCP.
+
+> Replace the domain name in `OPENAPI_SPEC_URL` with your own domain name.
+>
+> The `API_KEY` is the same as the `NUXT_SITE_TOKEN` in the environment variables.
+
+```json
+{
+ "mcpServers": {
+ "sink": {
+ "command": "uvx",
+ "args": [
+ "mcp-openapi-proxy"
+ ],
+ "env": {
+ "OPENAPI_SPEC_URL": "https://sink.cool/_docs/openapi.json",
+ "API_KEY": "SinkCool",
+ "TOOL_WHITELIST": "/api/link/create"
+ }
+ }
+ }
+}
+```
+
## 🙋🏻 FAQs
[FAQs](./docs/faqs.md)
diff --git a/app/components/dashboard/analysis/metrics/Locations.vue b/app/components/dashboard/analysis/metrics/Locations.vue
index b1f257f..a19ce49 100644
--- a/app/components/dashboard/analysis/metrics/Locations.vue
+++ b/app/components/dashboard/analysis/metrics/Locations.vue
@@ -1,6 +1,6 @@
diff --git a/app/components/spark-ui/AnimatedList.vue b/app/components/spark-ui/AnimatedList.vue
index c90f1a9..e3d14a9 100644
--- a/app/components/spark-ui/AnimatedList.vue
+++ b/app/components/spark-ui/AnimatedList.vue
@@ -1,6 +1,6 @@