this is a prototype of an mcp server that dynamically populates 176 (out of 572) of Stripe's APIs through three MCP metatools:
- list-api-endpoints
- get-api-endpoint-schema
- invoke-api-endpoint
176 APIs are programmatically parsed from top-level APIs in Stripe's OpenAPI spec.
instructions.txt is used as a system prompt for grounding the user's LLM to:
- call tools in this sequence: list-api-endpoints, then get-api-endpoint-schema, then invoke-api-endpoint
- adhering to "deprecated" or best-practice descriptions in the OpenAPI spec
Prompt: update the prices of all my products to be 10 dollars more than they are (5-6 step workflow):
git clone https://github.com/tomchen-stripe/mcp-server-prototype
cp .env.template .env
# set your STRIPE_SECRET_KEY in .env
npm install
npm run build
claude mcp add --transport stdio mcp-server-prototype -- npx -y npm run start
claude- apply this PR as a patch: https://git.corp.stripe.com/stripe-internal/pay-server/pull/1235888
- on a devbox:
cd ~/stripe
git clone https://github.com/tomchen-stripe/mcp-server-prototype
cp .env.template .env
# set your STRIPE_SECRET_KEY in .env
npm install
npm run build
npm run start streamableHttpThen follow: https://stripe.sourcegraphcloud.com/stripe-internal/pay-server/-/blob/lib/mcp_stripe/evals/README.md
npm run start <stdio|streamableHttp> <static|dynamic><stdio|streamableHttp>: protocol to talk to MCP server (default: stdio)
<static|dynamic|code>:
- static (default): all 176 tools are listed statically during
tools/listresponse - dynamic: all 176 tools are returned in a response from the static
list-api-endpointstool duringtools/listresponse - code: code execution