Skip to main content
Glama
test-http-transport.sh3.73 kB
#!/bin/bash # Test script for the Streamable HTTP transport # Default values PORT=3000 HOST="127.0.0.1" PATH="/mcp" API_BASE_URL=${API_BASE_URL:-"https://api.example.com"} OPENAPI_SPEC=${OPENAPI_SPEC_PATH:-"https://api.example.com/openapi.json"} # Parse command line arguments while [[ "$#" -gt 0 ]]; do case $1 in --port) PORT="$2"; shift ;; --host) HOST="$2"; shift ;; --path) PATH="$2"; shift ;; --api-base-url) API_BASE_URL="$2"; shift ;; --openapi-spec) OPENAPI_SPEC="$2"; shift ;; --disable-abbreviation) DISABLE_ABBREVIATION="$2"; shift ;; *) echo "Unknown parameter: $1"; exit 1 ;; esac shift done # Function to show usage show_usage() { echo "Usage: $0 [options]" echo "Options:" echo " --port PORT Port number (default: 3000)" echo " --host HOST Host (default: 127.0.0.1)" echo " --path PATH Path (default: /mcp)" echo " --api-base-url URL API base URL" echo " --openapi-spec URL OpenAPI spec URL" echo " --disable-abbreviation Boolean Disable name optimization" exit 1 } # Check required parameters if [[ -z "$API_BASE_URL" || -z "$OPENAPI_SPEC" ]]; then echo "Error: API_BASE_URL and OPENAPI_SPEC_PATH are required" show_usage fi # Colors for output GREEN='\033[0;32m' YELLOW='\033[0;33m' RED='\033[0;31m' NC='\033[0m' # No Color echo -e "${GREEN}Starting MCP Server with HTTP transport...${NC}" echo -e "${YELLOW}Press Ctrl+C to stop the server${NC}" # Start the server in the background node dist/bundle.js \ --transport http \ --port $PORT \ --host $HOST \ --path $PATH \ --api-base-url $API_BASE_URL \ --openapi-spec $OPENAPI_SPEC \ --disable-abbreviation $DISABLE_ABBREVIATION & SERVER_PID=$! # Sleep to let the server start sleep 2 # Function to cleanup on exit cleanup() { echo -e "\n${RED}Stopping server...${NC}" kill $SERVER_PID exit 0 } # Trap ctrl-c trap cleanup INT # URL for requests URL="http://$HOST:$PORT$PATH" # Initialize request data INIT_DATA='{ "jsonrpc": "2.0", "id": 1, "method": "initialize", "params": { "protocolVersion": "2025-03-26", "capabilities": {}, "clientInfo": { "name": "test-client", "version": "1.0.0" } } }' echo -e "${GREEN}Initializing session...${NC}" INIT_RESPONSE=$(curl -s -X POST $URL \ -H "Content-Type: application/json" \ -d "$INIT_DATA") # Extract session ID from response headers SESSION_ID=$(curl -s -i -X POST $URL \ -H "Content-Type: application/json" \ -d "$INIT_DATA" | grep -i "Mcp-Session-Id" | awk '{print $2}' | tr -d '\r') if [ -z "$SESSION_ID" ]; then echo -e "${RED}Failed to get session ID${NC}" cleanup fi echo -e "${GREEN}Session initialized with ID: ${YELLOW}$SESSION_ID${NC}" # Send initialized notification echo -e "${GREEN}Sending initialized notification...${NC}" curl -s -X POST $URL \ -H "Content-Type: application/json" \ -H "Mcp-Session-Id: $SESSION_ID" \ -d '{ "jsonrpc": "2.0", "method": "initialized" }' # List tools echo -e "${GREEN}Listing tools...${NC}" curl -s -X POST $URL \ -H "Content-Type: application/json" \ -H "Mcp-Session-Id: $SESSION_ID" \ -d '{ "jsonrpc": "2.0", "id": 2, "method": "listTools" }' echo -e "\n${GREEN}Server is running. Open a new terminal and try:${NC}" echo -e "${YELLOW}curl -N $URL -H \"Mcp-Session-Id: $SESSION_ID\"${NC}" echo -e "${YELLOW}This will open a streaming connection.${NC}" echo -e "\n${GREEN}In another terminal, try sending requests:${NC}" echo -e "${YELLOW}curl -X POST $URL -H \"Content-Type: application/json\" -H \"Mcp-Session-Id: $SESSION_ID\" -d '{\"jsonrpc\":\"2.0\",\"id\":3,\"method\":\"listTools\"}'${NC}" # Keep the script running while true; do sleep 1 done

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ivo-toby/mcp-openapi-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server