Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/bundle-only-deps.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@taskade/mcp-server": patch
---

Install no runtime dependencies. `bin/cli.mjs` already bundles the MCP SDK, `node-fetch` and `zod`, so these packages and `mcp-proxy` move to `devDependencies`. `npx @taskade/mcp-server` now installs 1 package instead of 120. The README no longer documents a `--http` mode, because the package runs over stdio only.
3 changes: 2 additions & 1 deletion .github/workflows/force-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,9 @@ jobs:
registry-url: "https://registry.npmjs.org"

# npm OIDC trusted publishing requires npm >= 11.5.1; Node 22 bundles npm 10.x.
# Do not use npm 12. See release.yml.
- name: Upgrade npm for trusted publishing
run: npm install -g npm@latest && npm --version
run: npm install -g npm@^11.5.1 && npm --version

- name: Use OIDC instead of a classic npm token
run: |
Expand Down
8 changes: 5 additions & 3 deletions .github/workflows/publish-mcp-registry.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@ name: Publish to MCP Registry
# (https://registry.modelcontextprotocol.io) using GitHub OIDC — no secrets.
#
# Trigger:
# - automatically when a release tags the server package (changesets pushes a
# `@taskade/mcp-server@<version>` tag right after the npm publish succeeds), so
# the npm version always exists before we register it.
# - automatically when a `@taskade/mcp-server@<version>` tag is pushed. The
# "Push release tags" step in release.yml pushes it after the npm publish, so
# the npm version always exists before we register it. That step runs only
# with the release App token, because a tag pushed with GITHUB_TOKEN does not
# start this workflow.
# - manually via "Run workflow" to (re)publish the current npm version.
#
# Note: the server.json version is auto-synced from packages/server/package.json
Expand Down
30 changes: 28 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,27 @@ jobs:
contents: write
pull-requests: write
steps:
# Optional release GitHub App. When the repository has the variable
# RELEASE_APP_ID, the App token opens the version PR and pushes the
# release tags. Events from an App token start other workflows (CI on the
# version PR, the MCP Registry publish on the tag). Events from GITHUB_TOKEN
# do not. Without the variable, this step does not run and the job uses GITHUB_TOKEN.
- name: Create release App token
id: app-token
if: vars.RELEASE_APP_ID != ''
uses: actions/create-github-app-token@v3
with:
app-id: ${{ vars.RELEASE_APP_ID }}
private-key: ${{ secrets.RELEASE_APP_PRIVATE_KEY }}
permission-contents: write
permission-pull-requests: write

- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
# git push uses this token. github.token is the checkout default.
token: ${{ steps.app-token.outputs.token || github.token }}

- name: Install Node.js
uses: actions/setup-node@v4
Expand All @@ -27,8 +44,10 @@ jobs:
registry-url: "https://registry.npmjs.org"

# npm OIDC trusted publishing requires npm >= 11.5.1; Node 22 bundles npm 10.x.
# Do not use npm 12. npm 12 returns `npm info --json` as an array. `changeset publish`
# then finds no published versions and tries to publish the current version again.
- name: Upgrade npm for trusted publishing
run: npm install -g npm@latest && npm --version
run: npm install -g npm@^11.5.1 && npm --version

# setup-node's registry-url writes `_authToken=${NODE_AUTH_TOKEN}`. An empty
# token makes npm skip OIDC and fail E404. Strip it so publish uses GitHub OIDC.
Expand All @@ -50,11 +69,18 @@ jobs:
title: 'chore: release'
commit: 'chore: release'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_TOKEN: ${{ steps.app-token.outputs.token || secrets.GITHUB_TOKEN }}

- name: Publish
if: steps.changesets.outputs.hasChangesets == 'false'
run: yarn run publish
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_CONFIG_PROVENANCE: true

# `changeset publish` creates a tag for each new version but does not push it.
# The tag push starts publish-mcp-registry.yml. A tag push with GITHUB_TOKEN
# does not start it, so this step runs only with the App token.
- name: Push release tags
if: steps.changesets.outputs.hasChangesets == 'false' && steps.app-token.outputs.token != ''
run: git push origin --tags
8 changes: 2 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -288,13 +288,9 @@ Add a `.vscode/mcp.json` to your workspace (VS Code uses the `servers` key; `${i
}
```

### 7. HTTP / SSE Mode (remote & custom clients)
### 7. Remote and HTTP clients

```bash
TASKADE_API_KEY=your-api-key npx @taskade/mcp-server --http
```

The server starts at `http://localhost:3000` (configure with `PORT` env var). Connect via SSE at `http://localhost:3000/sse?access_token=your-api-key`.
The local package runs over stdio only. It has no HTTP or SSE mode. For a client that connects over HTTP, use the hosted server at `https://www.taskade.com/mcp` (see [Quick Start: hosted server](#quick-start-hosted-server)).

---

Expand Down
4 changes: 3 additions & 1 deletion packages/server/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,6 @@ npx -y @taskade/mcp-server

You'll need a Taskade personal access token — generate one at [https://www.taskade.com/settings/api](https://www.taskade.com/settings/api).

See the [root README](https://github.com/taskade/mcp#readme) for client configuration (Claude Desktop, Cursor, Claude Code), HTTP/SSE mode, and the complete tool list.
See the [root README](https://github.com/taskade/mcp#readme) for client configuration (Claude Desktop, Cursor, Claude Code) and the complete tool list.

This package runs over stdio only. For a client that connects over HTTP, use the hosted server at `https://www.taskade.com/mcp`.
4 changes: 1 addition & 3 deletions packages/server/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,8 @@
"start:server": "tsx src/http.ts --watch"
},
"devDependencies": {
"@taskade/mcp-openapi-codegen": "*"
},
"dependencies": {
"@modelcontextprotocol/sdk": "^1.12.0",
"@taskade/mcp-openapi-codegen": "*",
"mcp-proxy": "^3.2.0",
"node-fetch": "^3.3.2",
"zod": "^3.25.28"
Expand Down
Loading