@mastra/mcp-docs-server 1.1.48 → 1.1.49-alpha.1

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.
@@ -44,7 +44,7 @@ You get a stable API endpoint, environment variable management, custom domain su
44
44
 
45
45
  If you're not already authenticated, the CLI prompts you to log in. It stores your credentials locally and any subsequent CLI commands use these credentials.
46
46
 
47
- The command runs `mastra build`, uploads the artifact, builds a Docker image, and deploys it to Railway. On first deploy, the CLI creates a `.mastra-project.json` file linking your local project to the platform. Commit this file so subsequent deploys and CI/CD target the same project.
47
+ The command runs `mastra build`, uploads the artifact, builds a Docker image, and deploys it. On first deploy, the CLI creates a `.mastra-project.json` file linking your local project to the platform. Commit this file so subsequent deploys and CI/CD target the same project.
48
48
 
49
49
  > **Note:** Environment variables from `.env`, `.env.local`, and `.env.production` are included automatically. On the first deploy, these seed the project if no env vars are set yet. After that, manage env vars through the web dashboard. Review and sanitize these files before first deploy to avoid uploading development-only or personal secrets.
50
50
 
@@ -56,7 +56,77 @@ You get a stable API endpoint, environment variable management, custom domain su
56
56
 
57
57
  ## Deploy lifecycle
58
58
 
59
- A deploy transitions through **queued → uploading → building → deploying → running** (or **failed**, **cancelled**, **crashed**, or **stopped**). Only one build runs per project at a time. If multiple deploys queue up, only the latest proceeds and the rest are cancelled. Builds running longer than 15 minutes are automatically failed. The first deploy provisions Railway infrastructure and seeds environment variables from your local `.env`. Your server URL remains stable across deploys.
59
+ A deploy transitions through **queued → uploading → building → deploying → running** (or **failed**, **cancelled**, **crashed**, or **stopped**). Only one build runs per project at a time. If multiple deploys queue up, only the latest proceeds and the rest are cancelled. Builds running longer than 15 minutes are automatically failed. The first deploy provisions infrastructure and seeds environment variables from your local `.env`. Your server URL remains stable across deploys.
60
+
61
+ ## Idle behavior
62
+
63
+ Server on Mastra platform can sleep a service after a period of inactivity to save resources. Inactivity is measured by outbound network traffic. A service is considered idle only after roughly 10 minutes with no outbound packets. Any recurring outbound traffic resets this timer and keeps the service awake.
64
+
65
+ A server that never sleeps usually has a background task or a long-lived connection sending traffic on a timer. Check for the following common causes.
66
+
67
+ ### Persistent database connections
68
+
69
+ A database client that stays open keeps the connection alive even when the server is idle. Many drivers also run a background health check that pings the database on an interval, which counts as outbound traffic. For example, a MongoDB client that's never closed keeps a monitoring socket open and sends a heartbeat about every 10 seconds.
70
+
71
+ Connection pool settings that drain idle connections aren't enough on their own, because the driver's monitoring connection stays open and keeps pinging. To let the server sleep, close the client after a period of inactivity and reconnect on the next request.
72
+
73
+ > **Note:** Closing the client adds a short reconnect delay to the first request after the server wakes. If your workload can't tolerate that delay, keep the connection open and don't rely on idle sleep.
74
+
75
+ ### Scheduled tasks and timers
76
+
77
+ A `setInterval`, cron job, or polling loop that makes network calls keeps the server awake. If you need scheduled work, run it as a separate service or use an external scheduler that wakes the server with a request.
78
+
79
+ ### External pings and keep-alive checks
80
+
81
+ An uptime monitor, health check, or keep-alive ping that hits the server on an interval resets the idle timer. Remove these checks or increase their interval beyond the idle window if you want the server to sleep.
82
+
83
+ ### Observability exporters
84
+
85
+ An exporter that streams traces, logs, or metrics to a remote endpoint sends outbound traffic. Confirm the exporter batches and stops sending when the server is idle, rather than flushing on a fixed interval.
86
+
87
+ ### Long-lived streams
88
+
89
+ An open server-sent events (SSE) stream, WebSocket, or other long-lived connection holds traffic open until it closes. A streaming response that stays subscribed in the background keeps the connection active. Confirm streams close when the client disconnects and that no stream stays open while the server is otherwise idle.
90
+
91
+ ### Chat integrations
92
+
93
+ Some chat integrations hold a persistent connection and send a regular heartbeat, which keeps the server awake. For example, a Slack app in Socket Mode opens a WebSocket and pings about every 30 seconds, and a Discord bot keeps its gateway WebSocket open with a heartbeat on a timer. Both the open socket and the heartbeat prevent idle.
94
+
95
+ If you want the server to sleep, receive events over HTTP webhooks instead of a persistent connection where the integration supports it. Slack apps, for example, can use the Events API with a request URL instead of Socket Mode. If your app needs a persistent connection, keep the service running with the **Persistent Server add-on** described below.
96
+
97
+ ### Inspect active connections
98
+
99
+ To find what keeps the server awake, inspect the process's active handles during idle periods. A handle that remains after all requests finish is the cause to investigate. Open sockets point to a persistent connection that needs to close, and active timers point to a `setInterval` or self-rescheduling `setTimeout`.
100
+
101
+ Drop the following helper into your app, then watch the log after traffic stops. Anything still listed once the server is idle is keeping it awake:
102
+
103
+ ```typescript
104
+ export function logActiveHandles() {
105
+ // process._getActiveHandles is undocumented but useful for diagnosis.
106
+ const handles = (process as any)._getActiveHandles() as Array<any>
107
+
108
+ const summary = handles.map(handle => {
109
+ const type = handle?.constructor?.name ?? typeof handle
110
+ if (type === 'Socket') {
111
+ return `Socket -> ${handle.remoteAddress}:${handle.remotePort}`
112
+ }
113
+ return type
114
+ })
115
+
116
+ console.log(`[idle] ${handles.length} active handles:`, summary)
117
+ }
118
+
119
+ // Log every 30 seconds so you can see what persists while the server is idle.
120
+ setInterval(logActiveHandles, 30_000).unref()
121
+ ```
122
+
123
+ Call `unref()` on the diagnostic interval so the helper itself doesn't keep the server awake.
124
+
125
+ ### Keep a service running
126
+
127
+ Some applications genuinely need the connections or tasks described above, such as a persistent database connection for low first-request latency, a background scheduler, or a long-lived stream. If your app requires any of these, don't force the service to sleep. Use the **Persistent Server add-on** to keep the service running continuously instead.
128
+
129
+ With the **Persistent Server add-on** enabled, the service stays awake even with no traffic, so persistent connections, scheduled tasks, and open streams keep working without being interrupted by idle sleep.
60
130
 
61
131
  ## CI/CD
62
132
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # @mastra/mcp-docs-server
2
2
 
3
+ ## 1.1.49-alpha.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`b7dff0a`](https://github.com/mastra-ai/mastra/commit/b7dff0a3d1022eb6868f48dc40a2b1febd5c277f), [`02087e1`](https://github.com/mastra-ai/mastra/commit/02087e1fbc54aa07f3071f7a200df1bf5be601a8), [`ab975d4`](https://github.com/mastra-ai/mastra/commit/ab975d4dd9488752f05bda7afa03166d207e3e2a)]:
8
+ - @mastra/core@1.44.0-alpha.1
9
+
10
+ ## 1.1.49-alpha.0
11
+
12
+ ### Patch Changes
13
+
14
+ - Security remediation for the 2026-06-17 "easy-day-js" supply-chain incident. Patch bump to publish clean versions and move the `latest` dist-tag forward, superseding the compromised versions that declared the malicious `easy-day-js` dependency. ([#18056](https://github.com/mastra-ai/mastra/pull/18056))
15
+
16
+ - Updated dependencies [[`77a2351`](https://github.com/mastra-ai/mastra/commit/77a2351ee79296e360bce822cb3391f7cfd6489d)]:
17
+ - @mastra/core@1.43.1-alpha.0
18
+ - @mastra/mcp@1.10.1-alpha.0
19
+
3
20
  ## 1.1.47
4
21
 
5
22
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/mcp-docs-server",
3
- "version": "1.1.48",
3
+ "version": "1.1.49-alpha.1",
4
4
  "description": "MCP server for accessing Mastra.ai documentation, changelogs, and news.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -28,8 +28,8 @@
28
28
  "jsdom": "^26.1.0",
29
29
  "local-pkg": "^1.1.2",
30
30
  "zod": "^4.4.3",
31
- "@mastra/core": "1.43.0",
32
- "@mastra/mcp": "^1.10.0"
31
+ "@mastra/core": "1.44.0-alpha.1",
32
+ "@mastra/mcp": "^1.10.1-alpha.0"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@hono/node-server": "^1.19.11",
@@ -45,9 +45,9 @@
45
45
  "tsx": "^4.22.4",
46
46
  "typescript": "^6.0.3",
47
47
  "vitest": "4.1.8",
48
- "@internal/types-builder": "0.0.80",
49
48
  "@internal/lint": "0.0.105",
50
- "@mastra/core": "1.43.0"
49
+ "@internal/types-builder": "0.0.80",
50
+ "@mastra/core": "1.44.0-alpha.1"
51
51
  },
52
52
  "homepage": "https://mastra.ai",
53
53
  "repository": {