Cloud Tools Gateway
Provides tools to start CrewAI automations, call CrewAI API endpoints, run workflows with custom inputs, and poll for status and results.
Click on "Install 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., "@Cloud Tools Gatewayfetch the text from https://example.com"
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.
Cloud Tools Gateway
Remote MCP tools server built with Python, FastMCP, Streamable HTTP, and static bearer-token authentication.
Local Development
uv sync
$env:MCP_BEARER_TOKEN = "replace-with-a-long-random-secret"
uv run uvicorn main:app --host 0.0.0.0 --port 8000MCP endpoint:
http://localhost:8000/mcpClients must send:
Authorization: Bearer replace-with-a-long-random-secretFor ChatGPT custom connectors, use OAuth authentication. The server exposes:
Authorization metadata:
/.well-known/oauth-authorization-serverAuthorization URL:
/oauth/authorizeToken URL:
/oauth/tokenMCP resource:
/mcp
Set PUBLIC_BASE_URL in production, for example https://mcp-dh2a.onrender.com.
Related MCP server: Shark-no-Kari
Tools
fetch_webpage: fetches a URL and returns clean text plus page metadata.extract_links: extracts normalized links from a URL.check_url_status: checks URL reachability, status, timing, and headers.analyze_text: returns basic text statistics and top terms.run_crewai_automation: sends an order to a configured CrewAI deployment.call_crewai_endpoint: calls safe GET/POST paths on the configured CrewAI deployment API.run_crewai_workflow: starts the configured CrewAI workflow with{"inputs": {...}}.run_crewai_workflow_and_wait: starts a CrewAI workflow, polls until completion, and returns the finished report.get_crewai_status: pollsGET /status/{kickoff_id}.get_crewai_result: reads final output from the status response.get_crewai_workflow_result: fetches a completed workflow result later byworkflow_idandkickoff_id.create_life_insurance_campaign_package: runs the Life Insurance Marketing OS sequence and returns one combined compliant campaign package.run_ping_os_objective: lets ChatGPT give Ping OS a business objective; the supervisor plans and runs the needed workflows.get_ping_os_run: fetches a stored Ping OS supervisor run byrun_id.
Docker
Build:
docker build -t cloud-tools-gateway .Run:
docker run --rm -p 8000:8000 -e MCP_BEARER_TOKEN="replace-with-a-long-random-secret" cloud-tools-gatewayCloud Deployment
Use these settings on Render, Railway, Fly.io, Google Cloud Run, or a similar container host:
Build command:
docker build -t cloud-tools-gateway .Run command:
uv run --frozen uvicorn main:app --host 0.0.0.0 --port $PORTRequired environment variable:
MCP_BEARER_TOKENRecommended environment variable:
PUBLIC_BASE_URLOptional environment variable:
MCP_CLIENT_IDOptional CrewAI bridge variables:
CREWAI_API_URL,CREWAI_BEARER_TOKENPublic MCP URL:
https://<your-domain>/mcp
For container platforms that run the Dockerfile directly, set only MCP_BEARER_TOKEN; the CMD is already included.
CrewAI
CrewAI can connect to the same remote MCP endpoint with direct bearer-token headers.
Install CrewAI MCP support in your agent project:
uv add crewaiSet environment variables:
export MCP_URL="https://mcp-dh2a.onrender.com/mcp"
export MCP_BEARER_TOKEN="your-render-mcp-token"Use examples/crewai_remote_mcp.py as a starting point. The key configuration is:
from crewai.mcp import MCPServerHTTP
tools = MCPServerHTTP(
url="https://mcp-dh2a.onrender.com/mcp",
headers={"Authorization": f"Bearer {MCP_BEARER_TOKEN}"},
cache_tools_list=True,
)ChatGPT To CrewAI Bridge
To let ChatGPT give orders to a CrewAI deployment through this MCP server, configure these environment variables on the MCP deployment:
CREWAI_API_URL="https://your-crew-deployment.crewai.com"
CREWAI_BEARER_TOKEN="your-crewai-deployment-bearer-token"Optional per-workflow override for the Life Insurance Lead Crew:
CREWAI_LIFE_INSURANCE_API_URL="https://your-life-insurance-crew.crewai.com"
CREWAI_LIFE_INSURANCE_BEARER_TOKEN="your-life-insurance-crew-token"If those override variables are not set, life_insurance_leads uses CREWAI_API_URL and CREWAI_BEARER_TOKEN.
Optional per-workflow override for the Life Insurance Research Crew:
CREWAI_LIFE_INSURANCE_RESEARCH_API_URL="https://your-life-insurance-research-crew.crewai.com"
CREWAI_LIFE_INSURANCE_RESEARCH_BEARER_TOKEN="your-life-insurance-research-crew-token"If those override variables are not set, life_insurance_research uses CREWAI_API_URL and CREWAI_BEARER_TOKEN.
The downstream Life Insurance Marketing OS workflows are available through the same MCP tools:
life_insurance_contentlife_insurance_seolife_insurance_retelllife_insurance_emaillife_insurance_compliance
These currently run as MCP Gateway workflow handlers, so they do not need separate CrewAI Cloud deployments. Dedicated CrewAI deployments can be added later by setting each workflow's env vars and replacing the local handler.
After redeploying, refresh the ChatGPT connector actions. ChatGPT will see:
run_crewai_automation: starts the configured CrewAI deployment via/kickoff.call_crewai_endpoint: makes constrained GET/POST calls to a CrewAI deployment API. Passworkflow_idto inspect non-default routes.run_crewai_workflow: sendsPOST /kickoffwith nested inputs, such as{"inputs": {"user_name": "Jean"}}.run_crewai_workflow_and_wait: sendsPOST /kickoff, polls result endpoints, and returns the final JSON plus markdown report.get_crewai_status: checks run state withGET /status/{kickoff_id}.get_crewai_result: returns the final result fromGET /status/{kickoff_id}.get_crewai_workflow_result: fetches final output later using the workflow route.create_life_insurance_campaign_package: creates a full MotherlyQuotes-style campaign package by chaining research, content, Retell, email, and compliance workflows.run_ping_os_objective: accepts a plain-English business objective, selects a plan, runs workflows, and returns one strategy package.get_ping_os_run: retrieves the stored supervisor run record, final JSON, and markdown report.
CrewAI status is the source of truth for output. This deployment returns final output in the /status/{kickoff_id} payload. The gateway also probes /result/{kickoff_id}, /kickoff/{kickoff_id}, /runs/{kickoff_id}, and /tasks/{kickoff_id} as fallbacks.
Life insurance lead workflow input example:
run_crewai_workflow(
workflow_id="life_insurance_leads",
inputs={
"client_name": "MotherlyQuotes",
"target_audience": "new and expecting moms",
"licensed_states": ["CA"],
"offer": "free life insurance quote check",
"crm_destination": "HubSpot",
"followup_channel": "Brevo",
},
)Life insurance research workflow input example:
run_crewai_workflow_and_wait(
workflow_id="life_insurance_research",
inputs={
"user_name": "Jean Pierre",
"client_name": "MotherlyQuotes",
"target_audience": "new and expecting moms",
"licensed_states": ["CA"],
"product_focus": "term life insurance",
"competitors": ["Policygenius", "Ethos", "Ladder", "SelectQuote"],
"offer": "free life insurance quote check",
"crm_destination": "HubSpot",
"followup_channel": "Brevo",
"output_format": "markdown_and_json",
},
timeout_seconds=180,
poll_interval_seconds=5,
)The gateway adds workflow_id="life_insurance_research" into the nested CrewAI inputs payload when the MCP workflow parameter is used.
Route debug endpoint:
curl https://mcp-dh2a.onrender.com/debug/routesThis returns configured CrewAI API URLs and token presence flags without exposing bearer token values.
Ping OS supervisor debug endpoint:
curl https://mcp-dh2a.onrender.com/debug/ping-osThis returns supervisor health, supported verticals, supported objective types, available workflows, and current in-process run count.
To inspect the life insurance research deployment inputs through MCP, call:
call_crewai_endpoint(
method="GET",
path="/inputs",
workflow_id="life_insurance_research",
)Full campaign package example:
create_life_insurance_campaign_package(
user_name="Jean Pierre",
client_name="MotherlyQuotes",
target_audience="new and expecting moms",
licensed_states=["CA"],
product_focus="term life insurance",
competitors=["Policygenius", "Ethos", "Ladder", "SelectQuote"],
offer="free life insurance quote check",
crm_destination="HubSpot",
followup_channel="Brevo",
timeout_seconds=300,
)Ping OS Supervisor
Ping OS is the supervisor/orchestrator layer for ChatGPT. Instead of calling workflow tools manually, ChatGPT can submit a business objective and let Ping OS choose the workflow graph.
Supported verticals:
life_insurance
Supported objective types:
lead_generation_campaignmarket_researchcontent_enginevoice_agent_setupcompliance_review
The default life insurance lead-generation plan runs:
life_insurance_researchlife_insurance_seolife_insurance_contentlife_insurance_retelllife_insurance_emaillife_insurance_compliance
ChatGPT should call the supervisor like this:
run_ping_os_objective(
objective="Generate a compliant campaign package to acquire 500 qualified life insurance leads in California this month.",
business_name="MotherlyQuotes",
vertical="life_insurance",
target_audience="new and expecting moms",
geography=["CA"],
offer="free life insurance quote check",
constraints={
"product_focus": "term life insurance",
"crm_destination": "HubSpot",
"followup_channel": "Brevo",
"competitors": ["Policygenius", "Ethos", "Ladder", "SelectQuote"],
},
output_format="markdown_and_json",
timeout_seconds=300,
)The response includes:
{
"ok": true,
"run_id": "ping-os-...",
"objective": "...",
"business_name": "MotherlyQuotes",
"vertical": "life_insurance",
"execution_plan": [
{
"step": 1,
"workflow_id": "life_insurance_research",
"reason": "Research audience, competitors, buyer intent, objections, and campaign angles."
}
],
"workflow_results": {},
"final_strategy": {},
"markdown_report": ""
}Fetch a stored run later:
get_ping_os_run(run_id="ping-os-...")Run records are stored in the MCP Gateway process memory and include:
run_idobjectivebusiness_nameverticalcreated_atstatusexecution_planworkflow_idskickoff_idsfinal_outputmarkdown_report
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/jpgreen30/mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server