@cyanheads/mcp-ts-core 0.1.4 → 0.1.8

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.
Files changed (102) hide show
  1. package/CLAUDE.md +5 -1
  2. package/README.md +1 -1
  3. package/dist/core/app.d.ts +2 -0
  4. package/dist/core/app.d.ts.map +1 -1
  5. package/dist/core/app.js +19 -4
  6. package/dist/core/app.js.map +1 -1
  7. package/dist/core/context.d.ts +2 -2
  8. package/dist/core/context.d.ts.map +1 -1
  9. package/dist/core/context.js +9 -5
  10. package/dist/core/context.js.map +1 -1
  11. package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts.map +1 -1
  12. package/dist/mcp-server/resources/utils/resourceHandlerFactory.js +4 -2
  13. package/dist/mcp-server/resources/utils/resourceHandlerFactory.js.map +1 -1
  14. package/dist/mcp-server/server.d.ts +6 -0
  15. package/dist/mcp-server/server.d.ts.map +1 -1
  16. package/dist/mcp-server/server.js +2 -11
  17. package/dist/mcp-server/server.js.map +1 -1
  18. package/dist/mcp-server/tasks/core/taskManager.js +1 -1
  19. package/dist/mcp-server/tasks/core/taskManager.js.map +1 -1
  20. package/dist/mcp-server/tools/tool-registration.d.ts.map +1 -1
  21. package/dist/mcp-server/tools/tool-registration.js +28 -12
  22. package/dist/mcp-server/tools/tool-registration.js.map +1 -1
  23. package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts.map +1 -1
  24. package/dist/mcp-server/tools/utils/toolHandlerFactory.js +12 -2
  25. package/dist/mcp-server/tools/utils/toolHandlerFactory.js.map +1 -1
  26. package/dist/mcp-server/transports/auth/authMiddleware.js +1 -1
  27. package/dist/mcp-server/transports/auth/authMiddleware.js.map +1 -1
  28. package/dist/mcp-server/transports/auth/lib/authUtils.d.ts.map +1 -1
  29. package/dist/mcp-server/transports/auth/lib/authUtils.js +3 -2
  30. package/dist/mcp-server/transports/auth/lib/authUtils.js.map +1 -1
  31. package/dist/mcp-server/transports/auth/lib/checkScopes.d.ts.map +1 -1
  32. package/dist/mcp-server/transports/auth/lib/checkScopes.js +4 -4
  33. package/dist/mcp-server/transports/auth/lib/checkScopes.js.map +1 -1
  34. package/dist/mcp-server/transports/http/httpTransport.d.ts.map +1 -1
  35. package/dist/mcp-server/transports/http/httpTransport.js +28 -18
  36. package/dist/mcp-server/transports/http/httpTransport.js.map +1 -1
  37. package/dist/mcp-server/transports/http/sessionStore.d.ts.map +1 -1
  38. package/dist/mcp-server/transports/http/sessionStore.js +23 -13
  39. package/dist/mcp-server/transports/http/sessionStore.js.map +1 -1
  40. package/dist/services/graph/core/GraphService.js +2 -2
  41. package/dist/services/graph/core/GraphService.js.map +1 -1
  42. package/dist/services/llm/providers/openrouter.provider.js +1 -1
  43. package/dist/services/llm/providers/openrouter.provider.js.map +1 -1
  44. package/dist/services/speech/core/speechMetrics.js +1 -1
  45. package/dist/services/speech/core/speechMetrics.js.map +1 -1
  46. package/dist/services/speech/providers/elevenlabs.provider.js +1 -1
  47. package/dist/services/speech/providers/elevenlabs.provider.js.map +1 -1
  48. package/dist/services/speech/providers/whisper.provider.js +1 -1
  49. package/dist/services/speech/providers/whisper.provider.js.map +1 -1
  50. package/dist/storage/core/StorageService.js +2 -2
  51. package/dist/storage/core/StorageService.js.map +1 -1
  52. package/dist/storage/core/storageValidation.d.ts.map +1 -1
  53. package/dist/storage/core/storageValidation.js +0 -13
  54. package/dist/storage/core/storageValidation.js.map +1 -1
  55. package/dist/utils/index.d.ts +2 -2
  56. package/dist/utils/index.d.ts.map +1 -1
  57. package/dist/utils/index.js +3 -3
  58. package/dist/utils/index.js.map +1 -1
  59. package/dist/utils/internal/error-handler/errorHandler.js +1 -1
  60. package/dist/utils/internal/error-handler/errorHandler.js.map +1 -1
  61. package/dist/utils/internal/performance.d.ts +10 -19
  62. package/dist/utils/internal/performance.d.ts.map +1 -1
  63. package/dist/utils/internal/performance.js +35 -118
  64. package/dist/utils/internal/performance.js.map +1 -1
  65. package/dist/utils/internal/requestContext.d.ts.map +1 -1
  66. package/dist/utils/internal/requestContext.js +13 -10
  67. package/dist/utils/internal/requestContext.js.map +1 -1
  68. package/dist/utils/telemetry/{semconv.d.ts → attributes.d.ts} +14 -129
  69. package/dist/utils/telemetry/attributes.d.ts.map +1 -0
  70. package/dist/utils/telemetry/{semconv.js → attributes.js} +27 -148
  71. package/dist/utils/telemetry/attributes.js.map +1 -0
  72. package/dist/utils/telemetry/index.d.ts +3 -3
  73. package/dist/utils/telemetry/index.d.ts.map +1 -1
  74. package/dist/utils/telemetry/index.js +3 -3
  75. package/dist/utils/telemetry/index.js.map +1 -1
  76. package/dist/utils/telemetry/instrumentation.d.ts.map +1 -1
  77. package/dist/utils/telemetry/instrumentation.js +23 -19
  78. package/dist/utils/telemetry/instrumentation.js.map +1 -1
  79. package/dist/utils/telemetry/metrics.d.ts +0 -64
  80. package/dist/utils/telemetry/metrics.d.ts.map +1 -1
  81. package/dist/utils/telemetry/metrics.js +0 -78
  82. package/dist/utils/telemetry/metrics.js.map +1 -1
  83. package/package.json +14 -14
  84. package/skills/add-test/SKILL.md +216 -0
  85. package/skills/api-utils/SKILL.md +5 -7
  86. package/skills/design-mcp-server/SKILL.md +153 -9
  87. package/skills/polish-docs-meta/SKILL.md +137 -0
  88. package/skills/polish-docs-meta/references/agent-protocol.md +78 -0
  89. package/skills/polish-docs-meta/references/package-meta.md +63 -0
  90. package/skills/polish-docs-meta/references/readme.md +183 -0
  91. package/skills/polish-docs-meta/references/server-json.md +142 -0
  92. package/skills/release/SKILL.md +102 -30
  93. package/skills/setup/SKILL.md +3 -2
  94. package/templates/.env.example +6 -1
  95. package/templates/AGENTS.md +3 -1
  96. package/templates/CLAUDE.md +3 -1
  97. package/templates/Dockerfile +84 -0
  98. package/templates/_.gitignore +6 -0
  99. package/templates/package.json +3 -0
  100. package/templates/src/mcp-server/tools/definitions/echo.tool.ts +2 -0
  101. package/dist/utils/telemetry/semconv.d.ts.map +0 -1
  102. package/dist/utils/telemetry/semconv.js.map +0 -1
@@ -0,0 +1,142 @@
1
+ # server.json — MCP Server Manifest
2
+
3
+ Optional metadata file that describes the server for MCP registries, clients, and tooling. Place at the project root.
4
+
5
+ ## When to Create
6
+
7
+ Create `server.json` if:
8
+
9
+ - Publishing to npm or a registry
10
+ - The server will be listed in an MCP client's server catalog
11
+ - You want machine-readable metadata beyond what `package.json` provides
12
+
13
+ Skip for internal/private servers where discoverability doesn't matter.
14
+
15
+ ## Schema
16
+
17
+ ```json
18
+ {
19
+ "name": "my-mcp-server",
20
+ "version": "0.1.0",
21
+ "description": "MCP server for the Acme API — project management and task tracking.",
22
+ "author": "your-name",
23
+ "license": "Apache-2.0",
24
+ "repository": "https://github.com/your-org/my-mcp-server",
25
+ "transport": {
26
+ "stdio": {
27
+ "command": "npx",
28
+ "args": ["my-mcp-server"]
29
+ }
30
+ },
31
+ "env": {
32
+ "ACME_API_KEY": {
33
+ "description": "API key for the Acme service",
34
+ "required": true
35
+ },
36
+ "ACME_BASE_URL": {
37
+ "description": "API base URL",
38
+ "required": false,
39
+ "default": "https://api.acme.com"
40
+ }
41
+ },
42
+ "tools": [
43
+ {
44
+ "name": "search_projects",
45
+ "description": "Search projects by name or status"
46
+ },
47
+ {
48
+ "name": "create_task",
49
+ "description": "Create a new task in a project"
50
+ }
51
+ ],
52
+ "resources": [
53
+ {
54
+ "uriTemplate": "acme://projects/{projectId}",
55
+ "description": "Project details by ID"
56
+ }
57
+ ],
58
+ "prompts": [
59
+ {
60
+ "name": "project_summary",
61
+ "description": "Summarize a project's status and open tasks"
62
+ }
63
+ ]
64
+ }
65
+ ```
66
+
67
+ ## Field Reference
68
+
69
+ | Field | Required | Description |
70
+ |:------|:---------|:------------|
71
+ | `name` | Yes | Package name, matches `package.json` |
72
+ | `version` | Yes | Semver version, matches `package.json` |
73
+ | `description` | Yes | One-line description of the server |
74
+ | `author` | No | Author name or org |
75
+ | `license` | No | SPDX license identifier |
76
+ | `repository` | No | URL to source repository |
77
+ | `transport` | Yes | How to start the server (see below) |
78
+ | `env` | No | Environment variables the server reads |
79
+ | `tools` | No | Tool name + description pairs |
80
+ | `resources` | No | Resource URI template + description pairs |
81
+ | `prompts` | No | Prompt name + description pairs |
82
+
83
+ ### Transport
84
+
85
+ Describes how clients launch the server. At minimum include `stdio`:
86
+
87
+ ```json
88
+ "transport": {
89
+ "stdio": {
90
+ "command": "npx",
91
+ "args": ["my-mcp-server"]
92
+ }
93
+ }
94
+ ```
95
+
96
+ For HTTP:
97
+
98
+ ```json
99
+ "transport": {
100
+ "stdio": { "command": "npx", "args": ["my-mcp-server"] },
101
+ "http": {
102
+ "url": "http://localhost:3000/mcp"
103
+ }
104
+ }
105
+ ```
106
+
107
+ ### Env
108
+
109
+ Each key is the env var name. Value is an object:
110
+
111
+ ```json
112
+ {
113
+ "description": "Human-readable purpose",
114
+ "required": true,
115
+ "default": "optional-default-value"
116
+ }
117
+ ```
118
+
119
+ Derive from the server config Zod schema and `.env.example`.
120
+
121
+ ### Tools / Resources / Prompts
122
+
123
+ Lightweight summaries — just `name` and `description`. Derive directly from the definition files. Don't include full schemas; this is for discovery, not invocation.
124
+
125
+ ## Generating / Updating
126
+
127
+ If `server.json` doesn't exist, create it from the audit in step 1 of the `polish-docs-meta` skill. If it exists, diff it against current state and update stale fields.
128
+
129
+ 1. Sync `name`, `version`, `description`, `author`, `license`, `repository` from `package.json`
130
+ 2. Set `transport.stdio.command` to `npx` and `args` to `[packageName]` (or `node dist/index.js` for non-published servers)
131
+ 3. Sync env vars from server config schema — add missing, remove stale
132
+ 4. Sync tools/resources/prompts from the definition barrels
133
+
134
+ ## Keeping in Sync
135
+
136
+ `server.json` is a snapshot. Update it when:
137
+
138
+ - Adding or removing tools/resources/prompts
139
+ - Bumping the version
140
+ - Changing required env vars
141
+
142
+ The `polish-docs-meta` skill handles both creation and updates. Between polish runs, treat it like any other metadata file in the release checklist.
@@ -4,7 +4,7 @@ description: >
4
4
  Prepare and publish a core package release. Use when bumping the version, updating the changelog, and publishing to npm/Docker/GitHub. Stops before publish commands for user confirmation.
5
5
  metadata:
6
6
  author: cyanheads
7
- version: "1.0"
7
+ version: "1.1"
8
8
  audience: internal
9
9
  type: workflow
10
10
  ---
@@ -15,23 +15,101 @@ Publishing is a multi-step process with irreversible actions (npm publish, Docke
15
15
 
16
16
  ## Steps
17
17
 
18
- 1. **Determine version bump** — ask the user: patch, minor, or major?
19
- 2. **Update version** in:
20
- - `package.json` (`version` field)
21
- - `server.json` — **3 fields**: root `version` + `version` inside each of the two `packages[]` entries
22
- - `CLAUDE.md` (version reference at the top)
23
- - `README.md` (version badge, if present)
24
- 3. **Update CHANGELOG.md** add a new entry with:
25
- - Concrete version number and date (NEVER use `[Unreleased]`)
26
- - Grouped changes: Added, Changed, Fixed, Removed
27
- - Reference relevant PRs or commits
28
- 4. **Run `bun run devcheck`** — must pass cleanly
29
- 5. **Run `bun run test`** all tests must pass
30
- 6. **Run `bun run build`** verify build succeeds
31
- 7. **Commit** with message: `chore: bump version to {{VERSION}} and add changelog entry`
32
- 8. **Stop and inform the user** — the following commands require manual execution:
18
+ ### 1. Determine Version Bump
19
+
20
+ Ask the user: patch, minor, or major? Use the CHANGELOG diff to guide the recommendation — breaking changes → major, new features → minor, fixes only → patch.
21
+
22
+ ### 2. Update Version Strings
23
+
24
+ Update the version in **all** of these locations:
25
+
26
+ | File | What to Update |
27
+ |:-----|:---------------|
28
+ | `package.json` | `version` field |
29
+ | `server.json` | Root `version` + `version` in each `packages[]` entry (3 total) |
30
+ | `CLAUDE.md` | Version in the header (`**Version:** X.Y.Z`) |
31
+ | `README.md` | Version badge (`Version-X.Y.Z-blue`) and any other version references |
32
+
33
+ Search for the old version string across the repo to catch anything else.
34
+
35
+ ### 3. Update README.md
36
+
37
+ Beyond the version badge, review and update:
38
+
39
+ - Feature counts (tool count, resource count, etc.) if the surface area changed
40
+ - Descriptions and capability lists if new features were added
41
+ - MCP SDK version badge if the SDK dependency was bumped
42
+ - Code examples if APIs changed
43
+
44
+ ### 4. Update Template Files
45
+
46
+ Update version in scaffolded templates so new projects start with the correct version:
47
+
48
+ | File | What to Update |
49
+ |:-----|:---------------|
50
+ | `templates/CLAUDE.md` | `**Version:** X.Y.Z` in the header |
51
+ | `templates/AGENTS.md` | Same — these files are identical |
52
+
53
+ ### 5. Bump Modified Skill Versions
54
+
55
+ For any skills whose `SKILL.md` was modified in this release cycle, bump `metadata.version` in their YAML frontmatter. This is how the `maintenance` skill detects updates — if the version doesn't bump, consumers won't get the new content on `bun update`.
56
+
57
+ ### 6. Update CHANGELOG.md
58
+
59
+ Add a new entry with:
60
+
61
+ - Concrete version number and date (NEVER use `[Unreleased]`)
62
+ - Grouped changes: Added, Changed, Fixed, Removed
63
+ - Reference relevant PRs or commits
64
+
65
+ ### 7. Regenerate `docs/tree.md`
66
+
67
+ ```bash
68
+ bun run tree
69
+ ```
70
+
71
+ Review the output for accuracy. Skip if no structural changes occurred.
72
+
73
+ ### 8. Verify
74
+
75
+ Run all checks — all must pass:
33
76
 
34
77
  ```bash
78
+ bun run devcheck
79
+ bun run test
80
+ bun run build
81
+ ```
82
+
83
+ ### 9. Commit
84
+
85
+ ```
86
+ chore: release v{{VERSION}}
87
+ ```
88
+
89
+ ### 10. Tag
90
+
91
+ Create an **annotated** git tag with a concise summary of the release:
92
+
93
+ ```bash
94
+ git tag -a v{{VERSION}} -m "v{{VERSION}}: <one-line summary of key changes>"
95
+ ```
96
+
97
+ The tag message should capture the most important change(s) — not the full changelog, just enough to orient someone browsing tags. Examples:
98
+
99
+ ```
100
+ v0.2.0: Cloudflare Workers support, task tools, Graph service
101
+ v0.1.7: OTel instrumentation refactor, lighter semconv
102
+ v0.1.6: Error factory functions, auto-classification patterns
103
+ ```
104
+
105
+ ### 11. Stop and Inform the User
106
+
107
+ The following commands are irreversible and require manual execution:
108
+
109
+ ```bash
110
+ # Push commit and tag
111
+ git push && git push --tags
112
+
35
113
  # Publish to npm
36
114
  bun publish --access public
37
115
 
@@ -45,23 +123,17 @@ docker buildx build --platform linux/amd64,linux/arm64 \
45
123
  mcp-publisher publish
46
124
  ```
47
125
 
48
- ## Wrapup Checklist
49
-
50
- Before committing, verify these files are in sync:
51
-
52
- - `README.md` — version badge, feature counts, descriptions
53
- - `package.json` — version
54
- - `server.json` — root `version` + both `packages[]` version fields (3 total)
55
- - `CHANGELOG.md` — new entry with concrete version and date
56
- - `CLAUDE.md` — version reference
57
- - `docs/tree.md` — updated if structure changed
58
-
59
126
  ## Checklist
60
127
 
61
128
  - [ ] Version bumped in all locations (package.json, server.json ×3, CLAUDE.md, README.md)
62
- - [ ] CHANGELOG.md updated with concrete version number and date
129
+ - [ ] README.md reviewed feature counts, badges, descriptions current
130
+ - [ ] Template files updated (templates/CLAUDE.md, templates/AGENTS.md)
131
+ - [ ] Modified skill versions bumped in YAML frontmatter
132
+ - [ ] CHANGELOG.md updated with concrete version and date
133
+ - [ ] `docs/tree.md` regenerated (if structure changed)
63
134
  - [ ] `bun run devcheck` passes
64
135
  - [ ] `bun run test` passes
65
136
  - [ ] `bun run build` succeeds
66
- - [ ] Release commit created: `chore: bump version to {{VERSION}} and add changelog entry`
67
- - [ ] User informed of publish commands (npm, Docker, mcp-publisher)
137
+ - [ ] Release commit created
138
+ - [ ] Annotated git tag created: `v{{VERSION}}`
139
+ - [ ] User informed of publish commands (push, npm, Docker, mcp-publisher)
@@ -96,8 +96,9 @@ After the initial copy, use the `maintenance` skill to keep them in sync after p
96
96
 
97
97
  After `bun install`, complete these one-time setup tasks:
98
98
 
99
- 1. **Initialize git** — `git init && git add -A && git commit -m "chore: scaffold from @cyanheads/mcp-ts-core"`
100
- 2. **Verify agent protocol placeholders** — if the `init` CLI was run without a `[name]` argument, `{{PACKAGE_NAME}}` may remain as a literal in `CLAUDE.md`/`AGENTS.md` and `package.json`. Replace it with the actual server name.
99
+ 1. **Update dependencies to latest** — `bun update --latest` (or `npm update` / `npx npm-check-updates -u && npm install` for npm). The scaffolded `package.json` pins minimum versions from when the framework was published; updating ensures you start with the latest compatible releases.
100
+ 2. **Initialize git** — `git init && git add -A && git commit -m "chore: scaffold from @cyanheads/mcp-ts-core"`
101
+ 3. **Verify agent protocol placeholders** — if the `init` CLI was run without a `[name]` argument, `{{PACKAGE_NAME}}` may remain as a literal in `CLAUDE.md`/`AGENTS.md` and `package.json`. Replace it with the actual server name.
101
102
 
102
103
  ## Checklist
103
104
 
@@ -2,16 +2,21 @@
2
2
  # MCP_TRANSPORT_TYPE=stdio # stdio | http (default: stdio)
3
3
  # MCP_HTTP_PORT=3000 # HTTP port (default: 3000)
4
4
  # MCP_HTTP_HOST=localhost # HTTP host (default: localhost)
5
+ # MCP_HTTP_ENDPOINT_PATH=/mcp # HTTP endpoint path (default: /mcp)
5
6
 
6
7
  # ── Auth ──────────────────────────────────────────────────────────────
7
8
  # MCP_AUTH_MODE=none # none | jwt | oauth (default: none)
8
9
  # MCP_AUTH_SECRET_KEY= # JWT secret (required for jwt mode)
9
10
 
10
11
  # ── Storage ───────────────────────────────────────────────────────────
11
- # STORAGE_PROVIDER_TYPE=in-memory # in-memory | filesystem | supabase
12
+ # STORAGE_PROVIDER_TYPE=in-memory # in-memory | filesystem | supabase | cloudflare-r2 | cloudflare-kv | cloudflare-d1
12
13
 
13
14
  # ── Logging ───────────────────────────────────────────────────────────
14
15
  # MCP_LOG_LEVEL=info # debug | info | notice | warning | error
15
16
 
17
+ # ── Telemetry ─────────────────────────────────────────────────────────
18
+ # OTEL_ENABLED=false # Enable OpenTelemetry (default: false)
19
+ # OTEL_EXPORTER_OTLP_ENDPOINT= # OTLP endpoint URL (e.g., http://localhost:4318)
20
+
16
21
  # ── Server-specific ──────────────────────────────────────────────────
17
22
  # Add your server's environment variables below
@@ -1,7 +1,7 @@
1
1
  # Agent Protocol
2
2
 
3
3
  **Server:** {{PACKAGE_NAME}}
4
- **Version:** 0.1.2
4
+ **Version:** 0.1.0
5
5
  **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)
6
6
 
7
7
  > **Read the framework docs first:** `node_modules/@cyanheads/mcp-ts-core/CLAUDE.md` contains the full API reference — builders, Context, error codes, exports, patterns. This file covers server-specific conventions only.
@@ -203,7 +203,9 @@ Available skills:
203
203
  | `add-resource` | Scaffold a new resource definition |
204
204
  | `add-prompt` | Scaffold a new prompt definition |
205
205
  | `add-service` | Scaffold a new service integration |
206
+ | `add-test` | Scaffold test file for a tool, resource, or service |
206
207
  | `devcheck` | Lint, format, typecheck, audit |
208
+ | `polish-docs-meta` | Finalize docs, README, metadata, and agent protocol for shipping |
207
209
  | `maintenance` | Sync skills and dependencies after updates |
208
210
  | `migrate-mcp-ts-template` | Migrate legacy template fork to package dependency |
209
211
  | `api-auth` | Auth modes, scopes, JWT/OAuth |
@@ -1,7 +1,7 @@
1
1
  # Agent Protocol
2
2
 
3
3
  **Server:** {{PACKAGE_NAME}}
4
- **Version:** 0.1.2
4
+ **Version:** 0.1.0
5
5
  **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)
6
6
 
7
7
  > **Read the framework docs first:** `node_modules/@cyanheads/mcp-ts-core/CLAUDE.md` contains the full API reference — builders, Context, error codes, exports, patterns. This file covers server-specific conventions only.
@@ -203,7 +203,9 @@ Available skills:
203
203
  | `add-resource` | Scaffold a new resource definition |
204
204
  | `add-prompt` | Scaffold a new prompt definition |
205
205
  | `add-service` | Scaffold a new service integration |
206
+ | `add-test` | Scaffold test file for a tool, resource, or service |
206
207
  | `devcheck` | Lint, format, typecheck, audit |
208
+ | `polish-docs-meta` | Finalize docs, README, metadata, and agent protocol for shipping |
207
209
  | `maintenance` | Sync skills and dependencies after updates |
208
210
  | `migrate-mcp-ts-template` | Migrate legacy template fork to package dependency |
209
211
  | `api-auth` | Auth modes, scopes, JWT/OAuth |
@@ -0,0 +1,84 @@
1
+ # ==============================================================================
2
+ # Build Stage
3
+ #
4
+ # This stage installs all dependencies (including dev), builds the TypeScript
5
+ # source code into JavaScript, and prepares the production assets.
6
+ # ==============================================================================
7
+ FROM oven/bun:1 AS build
8
+
9
+ WORKDIR /usr/src/app
10
+
11
+ # Copy dependency manifests for optimized layer caching
12
+ COPY package.json bun.lock ./
13
+
14
+ # Install all dependencies (including dev dependencies for building)
15
+ RUN bun install --frozen-lockfile
16
+
17
+ # Copy the rest of the source code
18
+ COPY . .
19
+
20
+ # Build the application
21
+ RUN bun run build
22
+
23
+
24
+ # ==============================================================================
25
+ # Production Stage
26
+ #
27
+ # This stage creates a minimal, optimized, and secure image for running the
28
+ # application. It uses a slim base image and only includes production
29
+ # dependencies and build artifacts.
30
+ # ==============================================================================
31
+ FROM oven/bun:1-slim AS production
32
+
33
+ WORKDIR /usr/src/app
34
+
35
+ # Set the environment to production for performance and to ensure only
36
+ # production dependencies are installed.
37
+ ENV NODE_ENV=production
38
+
39
+ # OCI image metadata (https://github.com/opencontainers/image-spec/blob/main/annotations.md)
40
+ LABEL org.opencontainers.image.title="{{PACKAGE_NAME}}"
41
+ LABEL org.opencontainers.image.description=""
42
+ LABEL org.opencontainers.image.licenses="Apache-2.0"
43
+
44
+ # Copy dependency manifests
45
+ COPY package.json bun.lock ./
46
+
47
+ # Install only production dependencies, ignoring any lifecycle scripts (like 'prepare')
48
+ # that are not needed in the final production image.
49
+ # Remove platform-specific bun/rollup binaries pulled as optionalDependencies
50
+ # by @modelcontextprotocol/ext-apps — only needed for its build toolchain, not runtime.
51
+ RUN bun install --production --frozen-lockfile --ignore-scripts \
52
+ && rm -rf node_modules/@oven node_modules/@rollup
53
+
54
+ # Copy the compiled application code from the build stage
55
+ COPY --from=build /usr/src/app/dist ./dist
56
+
57
+ # The 'oven/bun' image already provides a non-root user named 'bun'.
58
+ # We will use this existing user for enhanced security.
59
+
60
+ # Create and set permissions for the log directory, assigning ownership to the 'bun' user.
61
+ RUN mkdir -p /var/log/{{PACKAGE_NAME}} && chown -R bun:bun /var/log/{{PACKAGE_NAME}}
62
+
63
+ # Switch to the non-root user
64
+ USER bun
65
+
66
+ # Define an argument for the port, allowing it to be overridden at build time.
67
+ # The `PORT` variable is often injected by cloud environments at runtime.
68
+ ARG PORT
69
+
70
+ # Set runtime environment variables
71
+ # Note: PORT is an automatic variable in many cloud environments (e.g., Cloud Run)
72
+ ENV MCP_HTTP_PORT=${PORT:-3010}
73
+ ENV MCP_HTTP_HOST="0.0.0.0"
74
+ ENV MCP_TRANSPORT_TYPE="http"
75
+ ENV MCP_SESSION_MODE="stateless"
76
+ ENV MCP_LOG_LEVEL="info"
77
+ ENV LOGS_DIR="/var/log/{{PACKAGE_NAME}}"
78
+ ENV MCP_FORCE_CONSOLE_LOGGING="true"
79
+
80
+ # Expose the port the server listens on
81
+ EXPOSE ${MCP_HTTP_PORT}
82
+
83
+ # The command to start the server
84
+ CMD ["bun", "run", "dist/index.js"]
@@ -1,4 +1,10 @@
1
1
  node_modules/
2
2
  dist/
3
3
  .env
4
+ .env.local
4
5
  .tsbuildinfo
6
+ *.log
7
+ coverage/
8
+ .DS_Store
9
+ .vscode/
10
+ .idea/
@@ -5,6 +5,9 @@
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
+ "bin": {
9
+ "{{PACKAGE_NAME}}": "dist/index.js"
10
+ },
8
11
  "files": [
9
12
  "dist/"
10
13
  ],
@@ -20,4 +20,6 @@ export const echoTool = tool('template_echo_message', {
20
20
  handler(input) {
21
21
  return { message: input.message };
22
22
  },
23
+
24
+ format: (result) => [{ type: 'text', text: result.message }],
23
25
  });
@@ -1 +0,0 @@
1
- {"version":3,"file":"semconv.d.ts","sourceRoot":"","sources":["../../../src/utils/telemetry/semconv.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"semconv.js","sourceRoot":"","sources":["../../../src/utils/telemetry/semconv.ts"],"names":[],"mappings":"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"}