Postman: use the local MCP server so runCollection is available - #176
Open
christosgkoros wants to merge 1 commit into
Open
Postman: use the local MCP server so runCollection is available#176christosgkoros wants to merge 1 commit into
christosgkoros wants to merge 1 commit into
Conversation
The Postman power's core workflow is running a collection and reporting test results — the Step 2 hook explicitly asks the agent to "run the collection, showing me the results and propose fixes for any errors found." That is not possible with the current config. `runCollection` is only exposed by the local (stdio) Postman MCP server; Postman's hosted remote endpoints do not include it. Verified against a live tools/list: | Server | Tools | runCollection | |-------------------------------------|-------|---------------| | Remote https://mcp.postman.com/minimal | 41 | no | | Remote https://mcp.postman.com/mcp | 124 | no | | Local npx (default/minimal) | 42 | yes | | Local npx --full | 125 | yes | The local minimal toolset is exactly the remote minimal toolset plus `runCollection`, so this switch costs no other capability. Running locally also makes collections that target `localhost` work. `runCollection` executes Newman in-process, so requests originate from the developer's machine; the remote server has no network route to a user's workstation. Changes: - mcp.json: switch to `npx -y @postman/postman-mcp-server@latest` with `POSTMAN_API_KEY` forwarded via `${POSTMAN_API_KEY}`. - POWER.md: document API key auth (the local server does not support OAuth), add an onboarding step for the key, explain why the local server is required, and update the Configuration and Troubleshooting sections. - POWER.md: correct the tool list to match the server's actual 42 tools — add `updateCollectionRequest` and `searchPostmanElements`, and replace `getStatusOfAnAsyncApiTask` (does not exist) with `getDuplicateCollectionTaskStatus`. - steering.md: note that runs execute locally, so private hosts are reachable.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The Postman power's core workflow is running a collection and reporting test results. The onboarding hook says so explicitly:
That isn't possible with the current configuration.
runCollectionis only exposed by the local (stdio) Postman MCP server — Postman's hosted remote endpoints don't include it, and the power currently points athttps://mcp.postman.com/minimal. So the tool the hook depends on isn't there.This PR switches the power to the local server.
Verification
Live
tools/listagainst each server (protocol2025-06-18, authenticated):runCollectionhttps://mcp.postman.com/minimalhttps://mcp.postman.com/mcp(full)npx @postman/postman-mcp-server@latest(minimal, default)npx … --fullThe local minimal toolset is exactly the remote minimal toolset plus
runCollection— a set difference of one tool, in our favour. Nothing is lost by switching.I also launched the server using the exact
command/argsfrom the newmcp.jsonand confirmed it completes the MCP handshake and advertises all 42 tools.Why local, beyond tool availability
runCollectionruns Newman in-process, so requests originate from wherever the MCP server runs. On the local server that's the developer's machine, which means collections targetinghttp://localhost:3000— the exact case in this power's owncreateEnvironmentexample — actually work. The remote server has no network route to a user's workstation. This matches the guidance in the server README:Changes
postman/mcp.json— local stdio server, API key forwarded with Kiro's${VAR}substitution (same idiom as thelocalstackpower):{ "mcpServers": { "postman": { "command": "npx", "args": ["-y", "@postman/postman-mcp-server@latest"], "env": { "POSTMAN_API_KEY": "${POSTMAN_API_KEY}" }, "disabled": false } } }postman/POWER.mdlocalstackpower's convention, it tells the agent to confirm with the user in chat rather than probing the secret from the shell, and to use agetAuthenticatedUsercall as the real connectivity check.--fulland--region eu.getStatusOfAnAsyncApiTask, which the server doesn't expose, and omittedupdateCollectionRequestandsearchPostmanElements. Now 42/42, cross-checked programmatically againsttools/list.postman/steering/steering.md— one line under "Verify API availability" noting runs execute locally, so private hosts are reachable.Trade-off worth flagging
This does trade browser-based OAuth for a manually exported API key, which is a small step backwards on first-run friction. It's unavoidable if the power is to run collections at all: the local server only supports API key auth. Happy to adjust the onboarding wording if you'd prefer it framed differently.
🤖 Generated with Claude Code