biz-mcp
Deploys the MCP server as an AWS Lambda function behind a Lambda Function URL, using the streamable HTTP transport.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@biz-mcpwhat's the current USD to EUR exchange rate?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
biz-mcp
A custom MCP (Model Context Protocol) server with 7 tools that connect to an LLM/MCP client. It combines:
2 external API wrappers - live FX rates (ECB/Frankfurter) and crypto prices (CoinGecko), both free and key-less.
2 database operations - a key-value store backed by DynamoDB on AWS (falls back to a local JSON file for development).
3 business-logic tools - invoice calculation, shipping estimation, and inventory-status assessment.
It runs on AWS Lambda behind a Lambda Function URL using the modern streamable HTTP MCP transport. The same code runs locally over stdio (for Claude Desktop) or streamable HTTP.
Tools
Name | Category | Description |
| External API | ECB reference-rate FX conversion (frankfurter.app, no key) |
| External API | Current crypto price (CoinGecko public API, no key) |
| Database | Put an arbitrary JSON object under |
| Database | Read a JSON object under |
| Business logic | Subtotal / discount / tax / total from line items |
| Business logic | Shipping cost from weight, distance and zone |
| Business logic | Reads a record and classifies stock as in_stock / low_stock / out_of_stock |
Related MCP server: cob-shopify-mcp
Architecture
MCP client (Claude Desktop, Cursor, mcp inspector)
│ streamable HTTP (POST JSON-RPC / SSE)
▼
Lambda Function URL ──► lambda_function.py (protocol adapter)
│
▼
mcp_server.py (FastMCP, 7 tools)
├── apis.py → frankfurter.app, CoinGecko
├── db.py → DynamoDB (or local JSON)
└── business.py → invoice, shipping, inventoryProject layout
apis.py External API wrappers
business.py Pure business logic
db.py Key-value store (DynamoDB or local JSON)
mcp_server.py FastMCP server defining the 7 tools
lambda_function.py Streamable-HTTP JSON-RPC adapter for Lambda
template.yaml SAM template (Lambda + Function URL + DynamoDB)
deploy.ps1 One-command deployment for Windows
tests/ pytest suite (unit + lambda handler + stdio E2E)Local setup
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements-dev.txtCheck the tests
pytestRun locally
stdio (default, for Claude Desktop and the inspector):
python mcp_server.pystreamable HTTP (for browsers / HTTP clients):
python mcp_server.py --transport http
# serves at http://127.0.0.1:8000/mcpTry it with the MCP Inspector
npx @modelcontextprotocol/inspector python mcp_server.pyDeploy to AWS Lambda
Prerequisites: AWS CLI (aws configure) and SAM CLI.
.\deploy.ps1The script builds dependencies (build_deps.ps1), packages the template, and creates/updates the stack. sam deploy/sam package creates:
a Lambda function (
biz-mcp) with the Python 3.12 runtime,a Lambda Function URL (public, HTTPS,
AuthType: NONE) with permissive CORS,a DynamoDB table (
biz-mcp-store,pk/skcomposite key, on-demand capacity) plus the IAM policy so the Lambda can access it,Lambda
url:InvokeandFunction:Invokepermissions (both are required since Oct 2025 for Function URLs withAuthType: NONE).
Notes on the deploy path:
FunctionUrl.Cors.AllowMethodsdoes not acceptOPTIONS(supported enum:GET | PUT | HEAD | POST | PATCH | DELETE | *). Omit it; Lambda handles preflight automatically.Deployment uses
sam package+aws cloudformation create-stack/update-stackdirectly rather than a changeset, because the CloudFormationAWS::EarlyValidation::PropertyValidationhook (Nov 2025) can spuriously fail changeset creation.sam buildis not run on Windows; dependencies are built intobuild/mcp.zipbybuild_deps.ps1viauv.
Manual equivalents:
.\build_deps.ps1 # build build/mcp.zip
sam package --template-file template.yaml --resolve-s3 --output-template-file packaged.yaml
aws cloudformation create-stack --stack-name biz-mcp --template-body file://packaged.yaml `
--capabilities CAPABILITY_IAM CAPABILITY_AUTO_EXPANDPoint an MCP client at it
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"biz-mcp": {
"type": "http",
"url": "https://YOUR_ENDPOINT/"
}
}
}The MCP Inspector also accepts an HTTP server URL directly.
Run the bundled agent (free Groq brain)
agent/agent.py is a ready-made agent that connects to the MCP endpoint and uses a
free-tier Groq model to drive the 7 tools with native function calling.
# use the project venv so openai/mcp deps don't clash with other Python installs
& "C:\Users\lenovo\AppData\Local\Programs\Python\Python312\python.exe" -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -r agent/requirements.txt
# get a free key once at https://console.groq.com/keys
setx GROQ_API_KEY "gsk_..."
python agent/agent.py --url https://YOUR_ENDPOINT/
# or a one-shot question:
python agent/agent.py --url https://YOUR_ENDPOINT/ `
--question "Convert 250 USD to EUR, then save it as pk=1201 sk=usd-eur"The agent lists the MCP tools, then chains tool calls until it can answer (it can
save/read records in DynamoDB, check inventory, price orders and shipping, and pull
live FX/crypto rates). Check the current free model id with GET /openai/v1/models
and pass it via --model if the default is unavailable.
Smoke test without a client
curl -s -X POST https://YOUR_ENDPOINT/ `
-H "Content-Type: application/json" `
-H "Accept: application/json, text/event-stream" `
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18"}}'tools/list will return the 7 tools:
curl -s -X POST https://YOUR_ENDPOINT/ `
-H "Content-Type: application/json" `
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'How the transport works
lambda_function.py implements the MCP streamable HTTP protocol directly on Lambda:
POSTwith a JSON-RPC body; notifications return202, requests return200.If the client sends
Accept: application/jsonit receives a single JSON-RPC response.If the client sends
Accept: text/event-streamit receives the same response wrapped in one SSEmessageevent, so streaming-capable clients work without requiring API Gateway's response-streaming features.OPTIONSpreflight plus plain API-Gateway v1/v2 proxy and Lambda-Function-URL events are handled by the same normalizer.
No long-lived connections are needed, which is exactly what makes this Lambda-friendly.
Security notes (read before going public)
The Function URL is
AuthType: NONE, meaning anyone with the URL can invoke the Lambda.Each public call invokes billing and lets anyone read/write the DynamoDB table.
For production: set
AuthType: AWS_IAMand use a SigV4-signed MCP client, add request throttling, or front the URL with WAF. The tools also accept arbitrarypk/sk, so add an authorization layer (e.g. per-tenant key prefix) if the data is sensitive.CoinGecko and Frankfurter free tiers have rate limits; failures surface as tool errors.
Customization
Add tools: define a function in
mcp_server.pywith the@mcp.tool()decorator and a docstring; the JSON schema is generated automatically. Rebuild/sam deployto publish.Note:
mcpis pinned to>=1.30,<2because mcp 2.x hard-depends onpywin32on Windows, which breakssam buildon Windows hosts. The API used here is identical in v2 (just importMCPServerinstead ofFastMCP).Swap the store: keep
db.py's interface (save_item,get_item,list_items) and implement a new backend (e.g. RDS, S3).Switch transport: the built-in
mcp.run(transport="streamable-http")path runs the same tools as a plain web server if you ever move to EC2 instead.
This server cannot be deployed
Maintenance
Related MCP Connectors
Pay-per-use tool marketplace for AI agents. Search, price-check, and call APIs via MCP.
The OpenRouter for tools. One MCP connection gives any AI agent 254 hosted tools, pay per call.
Unified MCP Server is a remote MCP connector for AI agents and vertical AI products that provides access to 22,000+ authorized SaaS tools across 400+ integrations and 24 categories directly inside LLMs (Claude, GPT, Gemini, Cohere). Tools operate only on explicitly authorized customer connections, enabling agents to safely read and write against live third-party systems.
AI Reasoning Cache & Consensus Layer with 11 MCP tools via Streamable HTTP.
Related MCP Servers
- AlicenseCqualityDmaintenanceAggregates multiple third-party APIs into unified MCP tools, providing out-of-the-box access to 10 popular services including OpenWeather, Google Maps, GitHub, Notion, Spotify, and more. Enables users to interact with weather data, search places, manage repositories, create content, and access various web services through a single MCP server.34MIT
- AlicenseNot gradedqualityAmaintenanceA production-grade MCP server and CLI tool that enables AI agents to manage Shopify stores through 49 built-in tools across products, orders, inventory, and analytics. It supports natural language workflows for tasks like inventory tracking, customer support, and sales reporting.433 npm18MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents and users to manage workspace files, monitor system metrics, take persistent notes, and retrieve weather data via MCP tools and resources.-
- FlicenseNot gradedqualityBmaintenanceExposes 20 deterministic tools for finance, data, content, and lifestyle tasks via MCP, A2A, and REST interfaces, enabling automation and multi-agent workflows.-