Enables secure hosting on Google Cloud Run with user-based IAM authentication, providing controlled access to custom ser...
Created byApr 22, 2025
Host MCP SSE Server on Google Cloud Run
At the moment (03/04/2024) MCP is still addressing Authentication and Authorization. They plan to complete this in H1 2025. The issue is, I want to share my MCP server with my team NOW. So here we are. The only immediate answer to use a SSE MCP server in Cursor, etc.. right now is a network layer based solution (e.g., a proxy). Basic auth, api keys, forget about it.
Utilizing GCP Cloud Run and User Based IAM Authentication, I have created a simple, secure way to allow clients to access a custom MCP server over the internet.
The MCP server is hosted on Google Cloud Run. Utilizing Cloud Run IAM Authentication, we can securely connect to the server from the internet by utilizing the Google Cloud SDK to create a proxy connection.
TLDR README
This **should work out of the box** with minimal config if you already have docker and the gcloud CLI set up locally.
Step 1: Update deploy.sh with your project id, service account email, etc.
Step 2: On deploy success, grab the cloud run URL that was provided, and add it to mcp_proxy.ts along with your project id.
Step 3: Run the proxy npx ts-node mcp_proxy.ts
Running proxy asking question
Step 3: Access your MCP server using http://localhost:3030 - Add it to Cursor under Settings > Features > MCP Servers (make sure you select SSE not command)
Update the deploy.sh script with your project details:
Run the deployment script:
The deployment script will:
Build a Docker container for your MCP server
Push it to Google Container Registry
Deploy it to Cloud Run with authentication enabled
Connecting to your deployed MCP server
To connect to your deployed MCP server:
Run the MCP proxy locally:
The proxy will:
Configure your MCP client to connect to the local proxy URL
Use the MCP server in Cursor
First, let's run our proxy to establish a connection between our local machine and the MCP server hosted on Google Cloud Run.
Now let's add our local proxy server to cursor within the Setting > Features tab in the MCP server section.
Adding proxy to cursor
Adding proxy to cursor
Now, we're good to go! Start a new composer (ensure you are in agent mode) and ask what the weather is in a location. Your ouput in your terminal where the proxy is connected + the output of your composer should look like this:
Running proxy asking question
Security
This setup provides several security benefits:
Your MCP server is not publicly accessible without authentication
All connections are secured with Google Cloud IAM
Team members need Google Cloud SDK access to connect
Connection Issues
Verify the Cloud Run URL in mcp_proxy.ts matches your deployed service
Check Cloud Run logs for any server-side errors
Contributing
Contributions are welcome! Feel free to submit issues or pull requests.
License
MIT
Host MCP SSE Server on Google Cloud Run
At the moment (03/04/2024) MCP is still addressing Authentication and Authorization. They plan to complete this in H1 2025. The issue is, I want to share my MCP server with my team NOW. So here we are. The only immediate answer to use a SSE MCP server in Cursor, etc.. right now is a network layer based solution (e.g., a proxy). Basic auth, api keys, forget about it.
Utilizing GCP Cloud Run and User Based IAM Authentication, I have created a simple, secure way to allow clients to access a custom MCP server over the internet.
The MCP server is hosted on Google Cloud Run. Utilizing Cloud Run IAM Authentication, we can securely connect to the server from the internet by utilizing the Google Cloud SDK to create a proxy connection.
TLDR README
This **should work out of the box** with minimal config if you already have docker and the gcloud CLI set up locally.
Step 1: Update deploy.sh with your project id, service account email, etc.
Step 2: On deploy success, grab the cloud run URL that was provided, and add it to mcp_proxy.ts along with your project id.
Step 3: Run the proxy npx ts-node mcp_proxy.ts
Running proxy asking question
Step 3: Access your MCP server using http://localhost:3030 - Add it to Cursor under Settings > Features > MCP Servers (make sure you select SSE not command)
Update the deploy.sh script with your project details:
Run the deployment script:
The deployment script will:
Build a Docker container for your MCP server
Push it to Google Container Registry
Deploy it to Cloud Run with authentication enabled
Connecting to your deployed MCP server
To connect to your deployed MCP server:
Run the MCP proxy locally:
The proxy will:
Configure your MCP client to connect to the local proxy URL
Use the MCP server in Cursor
First, let's run our proxy to establish a connection between our local machine and the MCP server hosted on Google Cloud Run.
Now let's add our local proxy server to cursor within the Setting > Features tab in the MCP server section.
Adding proxy to cursor
Adding proxy to cursor
Now, we're good to go! Start a new composer (ensure you are in agent mode) and ask what the weather is in a location. Your ouput in your terminal where the proxy is connected + the output of your composer should look like this:
Running proxy asking question
Security
This setup provides several security benefits:
Your MCP server is not publicly accessible without authentication
All connections are secured with Google Cloud IAM
Team members need Google Cloud SDK access to connect
Connection Issues
Verify the Cloud Run URL in mcp_proxy.ts matches your deployed service
Check Cloud Run logs for any server-side errors
Contributing
Contributions are welcome! Feel free to submit issues or pull requests.