fix: Smithery installs (env token) + honest HTTP docs - #43
Conversation
The published CLI reads only the TASKADE_API_KEY env var and parses no argv,
so smithery.yaml passing ['--token', config.apiKey] meant every Smithery stdio
install started with no token and exited with the validateAccessToken error.
Switch the commandFunction to set env: { TASKADE_API_KEY: config.apiKey }.
Also correct the n8n example docs: the --http/--token flags are not supported
by the published CLI (stdio only); point HTTP/remote use to hosted endpoint #6.
|
There was a problem hiding this comment.
Pull request overview
This PR aligns installation and example documentation with the actual published @taskade/mcp-server CLI behavior (stdio-only, token via TASKADE_API_KEY), fixing Smithery installs and correcting misleading HTTP/SSE guidance.
Changes:
- Update
smithery.yamlto pass the Taskade token viaTASKADE_API_KEYinstead of unsupported--tokenCLI args. - Replace the broken n8n “HTTP/SSE mode” example in
examples/README.mdwith stdio-only guidance and a pointer to the hosted endpoint roadmap (#6).
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
smithery.yaml |
Switches Smithery install to provide the token via environment variable (but currently introduces a YAML indentation/parsing issue). |
examples/README.md |
Updates n8n example docs to reflect stdio-only CLI usage and removes unsupported HTTP/SSE CLI instructions. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| commandFunction: | ||
| |- | ||
| (config) => ({ command: 'npx', args: ['-y', '@taskade/mcp-server', '--token', config.apiKey] }) | ||
| (config) => ({ command: 'npx', args: ['-y', '@taskade/mcp-server'], env: { TASKADE_API_KEY: config.apiKey } }) |
| ``` | ||
|
|
||
| Then configure the n8n MCP node to use **HTTP Streamable** transport with URL `http://localhost:3001/mcp`. | ||
| > **Note:** The published `@taskade/mcp-server` CLI runs over **stdio** only — configure the n8n MCP Client node with the command `npx -y @taskade/mcp-server` and a `TASKADE_API_KEY` environment variable. The `--http`/`--token` flags are **not** supported by the published CLI. A standalone HTTP/SSE transport is not yet exposed; track the hosted remote endpoint at [#6](https://github.com/taskade/mcp/issues/6). |
Addresses Copilot review: the n8n workflow node still used the ignored --token CLI flag. Pass TASKADE_API_KEY via the node's environments field so the imported workflow actually authenticates (consistent with the stdio docs).
| |- | ||
| (config) => ({ command: 'npx', args: ['-y', '@taskade/mcp-server', '--token', config.apiKey] }) | ||
| (config) => ({ command: 'npx', args: ['-y', '@taskade/mcp-server'], env: { TASKADE_API_KEY: config.apiKey } }) |
Move the |- block-scalar indicator onto the key line (commandFunction: |-) so the YAML is unambiguous for stricter parsers. Parsed value is identical.
✅ Validated → fixed → ready to merge
QA: {"command":"npx","args":["-y","@taskade/mcp-server"],"env":{"TASKADE_API_KEY":"K"}}workflow JSON valid; 0 |
What & why
The published
@taskade/mcp-serverreads only theTASKADE_API_KEYenv var and parses no CLI args (cli.ts). Two places contradicted that:smithery.yamlpassed['--token', config.apiKey], an arg the binary ignores, so every stdio install started tokenless and exited with thevalidateAccessTokenerror.--http --token+ alocalhost:3001/mcpURL that the CLI can't produce.Changes
smithery.yaml:commandFunctionnow setsenv: { TASKADE_API_KEY: config.apiKey }(verified the JS evaluates and emits the right env).examples/README.md: replace the broken--http --tokenblock with accurate stdio guidance + a pointer to the hosted-endpoint roadmap (enhance(mcp): deploy public MCP server at https://mcp.taskade.com for external clients #6).Zero-regression
smithery.yamlvalidates as YAML;commandFunctionreturns{command,args,env}.Scoped out (conflict avoidance)
### 4. HTTP / SSE Modeblock overlaps docs: lead with Taskade's story (demote n8n, add ToC) #41's edits to the same region — its accuracy fix is deferred to avoid a merge conflict; the real remote story is the hosted endpoint (enhance(mcp): deploy public MCP server at https://mcp.taskade.com for external clients #6).