mcp-ts-template 3.0.2 → 3.0.4
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/README.md +16 -1
- package/dist/index.js +18 -7
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
<div align="center">
|
|
9
9
|
|
|
10
|
-
[](./CHANGELOG.md) [](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/main/docs/specification/2025-11-25/changelog.mdx) [](https://modelcontextprotocol.io/) [](./LICENSE)
|
|
11
11
|
|
|
12
12
|
[](https://github.com/cyanheads/mcp-ts-template/issues) [](https://www.typescriptlang.org/) [](https://bun.sh/) [](./coverage/index.html)
|
|
13
13
|
|
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
18
|
+
> **Try it live** — A public demo instance is running at `https://mcp-ts-template.caseyjhand.com/mcp`. Connect any MCP client to test the template's tools and resources without installing anything.
|
|
19
|
+
|
|
18
20
|
## Features
|
|
19
21
|
|
|
20
22
|
- Define tools and resources in single, self-contained files. The framework handles registration.
|
|
@@ -120,6 +122,19 @@ Add the following to your MCP client configuration file.
|
|
|
120
122
|
}
|
|
121
123
|
```
|
|
122
124
|
|
|
125
|
+
Or connect to the public demo server over HTTP — no installation required:
|
|
126
|
+
|
|
127
|
+
```json
|
|
128
|
+
{
|
|
129
|
+
"mcpServers": {
|
|
130
|
+
"mcp-ts-template": {
|
|
131
|
+
"type": "streamable-http",
|
|
132
|
+
"url": "https://mcp-ts-template.caseyjhand.com/mcp"
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
123
138
|
### Prerequisites
|
|
124
139
|
|
|
125
140
|
- [Bun v1.2.0](https://bun.sh/) or higher.
|
package/dist/index.js
CHANGED
|
@@ -144586,7 +144586,7 @@ config(en_default());
|
|
|
144586
144586
|
// package.json
|
|
144587
144587
|
var package_default = {
|
|
144588
144588
|
name: "mcp-ts-template",
|
|
144589
|
-
version: "3.0.
|
|
144589
|
+
version: "3.0.4",
|
|
144590
144590
|
mcpName: "io.github.cyanheads/mcp-ts-template",
|
|
144591
144591
|
description: "TypeScript template for MCP servers with declarative tools/resources, pluggable auth, multi-backend storage, OpenTelemetry observability, and Cloudflare Workers support.",
|
|
144592
144592
|
main: "dist/index.js",
|
|
@@ -169300,6 +169300,7 @@ var Pe = g.object({ method: g.literal("ui/notifications/host-context-changed"),
|
|
|
169300
169300
|
var M6 = g.object({ method: g.literal("ui/update-model-context"), params: g.object({ content: g.array(ContentBlockSchema).optional().describe("Context content blocks (text, image, etc.)."), structuredContent: g.record(g.string(), g.unknown().describe("Structured content for machine-readable context data.")).optional().describe("Structured content for machine-readable context data.") }) });
|
|
169301
169301
|
var R6 = g.object({ method: g.literal("ui/initialize"), params: g.object({ appInfo: ImplementationSchema.describe("App identification (name and version)."), appCapabilities: XI.describe("Features and capabilities this app provides."), protocolVersion: g.string().describe("Protocol version this app supports.") }) });
|
|
169302
169302
|
var je = g.object({ protocolVersion: g.string().describe('Negotiated protocol version string (e.g., "2025-11-21").'), hostInfo: ImplementationSchema.describe("Host application identification and version."), hostCapabilities: VI.describe("Features and capabilities provided by the host."), hostContext: Se.describe("Rich context about the host environment.") }).passthrough();
|
|
169303
|
+
var Je = "ui/resourceUri";
|
|
169303
169304
|
var AI = "text/html;profile=mcp-app";
|
|
169304
169305
|
|
|
169305
169306
|
class h6 extends Protocol {
|
|
@@ -169586,7 +169587,7 @@ var APP_HTML = `<!DOCTYPE html>
|
|
|
169586
169587
|
</div>
|
|
169587
169588
|
|
|
169588
169589
|
<script type="module">
|
|
169589
|
-
import { App } from "https://
|
|
169590
|
+
import { App } from "https://unpkg.com/@modelcontextprotocol/ext-apps@1/app-with-deps";
|
|
169590
169591
|
|
|
169591
169592
|
const app = new App({ name: "Data Explorer", version: "1.0.0" });
|
|
169592
169593
|
|
|
@@ -169712,7 +169713,7 @@ var APP_HTML = `<!DOCTYPE html>
|
|
|
169712
169713
|
const text = "User selected " + selectedRows.length + " row(s):\\n" +
|
|
169713
169714
|
JSON.stringify(selectedRows, null, 2);
|
|
169714
169715
|
try {
|
|
169715
|
-
await app.sendMessage({ role: "user", content: { type: "text", text } });
|
|
169716
|
+
await app.sendMessage({ role: "user", content: [{ type: "text", text }] });
|
|
169716
169717
|
} catch (err) {
|
|
169717
169718
|
console.error("Failed to send selection:", err);
|
|
169718
169719
|
}
|
|
@@ -169772,7 +169773,16 @@ var dataExplorerUiResource = {
|
|
|
169772
169773
|
}),
|
|
169773
169774
|
logic: withResourceAuth(["resource:data-explorer-ui:read"], dataExplorerUiLogic),
|
|
169774
169775
|
responseFormatter: (result, meta3) => [
|
|
169775
|
-
{
|
|
169776
|
+
{
|
|
169777
|
+
uri: meta3.uri.href,
|
|
169778
|
+
mimeType: meta3.mimeType,
|
|
169779
|
+
text: result,
|
|
169780
|
+
_meta: {
|
|
169781
|
+
ui: {
|
|
169782
|
+
csp: { resource_domains: ["https://unpkg.com"] }
|
|
169783
|
+
}
|
|
169784
|
+
}
|
|
169785
|
+
}
|
|
169776
169786
|
]
|
|
169777
169787
|
};
|
|
169778
169788
|
|
|
@@ -171909,7 +171919,7 @@ class TaskManager {
|
|
|
171909
171919
|
// src/mcp-server/tools/definitions/template-async-countdown.task-tool.ts
|
|
171910
171920
|
var TOOL_NAME = "template_async_countdown";
|
|
171911
171921
|
var TOOL_TITLE = "Async Countdown (Task Demo)";
|
|
171912
|
-
var TOOL_DESCRIPTION = "Demonstrates the MCP Tasks API with a countdown timer.
|
|
171922
|
+
var TOOL_DESCRIPTION = "Demonstrates the MCP Tasks API with a countdown timer. When the client supports tasks, returns immediately with a task handle for polling. Otherwise, runs synchronously and returns the result directly.";
|
|
171913
171923
|
var InputSchema = exports_external.object({
|
|
171914
171924
|
seconds: exports_external.number().int().min(1).max(60).describe("Number of seconds to count down (1-60)"),
|
|
171915
171925
|
message: exports_external.string().optional().describe("Optional message to include in the final result"),
|
|
@@ -172016,7 +172026,7 @@ var asyncCountdownTaskTool = {
|
|
|
172016
172026
|
openWorldHint: false
|
|
172017
172027
|
},
|
|
172018
172028
|
execution: {
|
|
172019
|
-
taskSupport: "
|
|
172029
|
+
taskSupport: "optional"
|
|
172020
172030
|
},
|
|
172021
172031
|
taskHandlers: {
|
|
172022
172032
|
createTask: async (args, extra) => {
|
|
@@ -172323,7 +172333,8 @@ var dataExplorerAppTool = {
|
|
|
172323
172333
|
logic: withToolAuth(["tool:data-explorer:read"], dataExplorerLogic),
|
|
172324
172334
|
responseFormatter: responseFormatter3,
|
|
172325
172335
|
_meta: {
|
|
172326
|
-
ui: { resourceUri: UI_RESOURCE_URI }
|
|
172336
|
+
ui: { resourceUri: UI_RESOURCE_URI },
|
|
172337
|
+
[Je]: UI_RESOURCE_URI
|
|
172327
172338
|
}
|
|
172328
172339
|
};
|
|
172329
172340
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mcp-ts-template",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.4",
|
|
4
4
|
"mcpName": "io.github.cyanheads/mcp-ts-template",
|
|
5
5
|
"description": "TypeScript template for MCP servers with declarative tools/resources, pluggable auth, multi-backend storage, OpenTelemetry observability, and Cloudflare Workers support.",
|
|
6
6
|
"main": "dist/index.js",
|