Documentation Index Fetch the complete documentation index at: https://mcp-server-langgraph.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Automate your LangGraph Platform deployments with continuous integration and deployment pipelines. Deploy on every commit, with automated testing and rollback capabilities.
Automated Deployments : Push to main → CI/CD tests → Auto-deploy to production
GitHub Actions
Quick Setup
Add LangSmith API Key
Go to GitHub repo → Settings → Secrets → New repository secret Name: LANGCHAIN_API_KEY
Value: Your LangSmith API key from smith.langchain.com/settings
Create Workflow File
mkdir -p .github/workflows
cp .github/workflows/deploy-langgraph-platform.yml .github/workflows/
Push to GitHub
git add .github/workflows/deploy-langgraph-platform.yml
git commit -m "Add LangGraph Platform CI/CD"
git push
Full Workflow
.github/workflows/deploy-langgraph-platform.yml
name : Deploy to LangGraph Platform
on :
push :
branches : [ main ]
pull_request :
branches : [ main ]
workflow_dispatch :
jobs :
test :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
- name : Set up Python
uses : actions/setup-python@v5
with :
python-version : '3.11'
- name : Install dependencies
run : |
uv sync
- name : Run tests
run : pytest tests/ -v
deploy-staging :
needs : test
if : github.event_name == 'push' && github.ref == 'refs/heads/main'
runs-on : ubuntu-latest
environment : staging
steps :
- uses : actions/checkout@v4
- name : Set up Python
uses : actions/setup-python@v5
with :
python-version : '3.11'
- name : Install LangGraph CLI
run : uv tool install langgraph-cli
- name : Deploy to Staging
env :
LANGCHAIN_API_KEY : ${{ secrets.LANGCHAIN_API_KEY }}
run : |
langgraph deploy staging-mcp-server-langgraph --tag staging
- name : Smoke Test Staging
run : |
langgraph deployment invoke staging-mcp-server-langgraph \
--input '{"messages": [{"role": "user", "content": "test"}]}'
deploy-production :
needs : deploy-staging
if : github.event_name == 'push' && github.ref == 'refs/heads/main'
runs-on : ubuntu-latest
environment : production
steps :
- uses : actions/checkout@v4
- name : Set up Python
uses : actions/setup-python@v5
with :
python-version : '3.11'
- name : Install LangGraph CLI
run : uv tool install langgraph-cli
- name : Deploy to Production
env :
LANGCHAIN_API_KEY : ${{ secrets.LANGCHAIN_API_KEY }}
run : |
langgraph deploy mcp-server-langgraph-prod \
--tag production \
--tag "$(git rev-parse --short HEAD)"
- name : Verify Deployment
run : |
langgraph deployment get mcp-server-langgraph-prod
- name : Smoke Test Production
run : |
langgraph deployment invoke mcp-server-langgraph-prod \
--input '{"messages": [{"role": "user", "content": "Hello"}]}'
Environment Protection Rules
Set up deployment approvals in GitHub:
Go to Repository Settings
Settings → Environments → New environment
Create 'production' Environment
Name: production
Enable “Required reviewers”
Add reviewers (team leads)
Set deployment branch: main only
Create 'staging' Environment
Name: staging
No approvals needed
Auto-deploy on push to main
GitLab CI/CD
stages :
- test
- deploy-staging
- deploy-production
variables :
PYTHON_VERSION : "3.11"
test :
stage : test
image : python:${PYTHON_VERSION}
script :
- curl -LsSf https://astral.sh/uv/install.sh | sh
- uv sync
- uv run pytest tests/ -v
deploy-staging :
stage : deploy-staging
image : python:${PYTHON_VERSION}
environment :
name : staging
url : https://staging-mcp-server-langgraph.langchain.com
script :
- curl -LsSf https://astral.sh/uv/install.sh | sh
- uv tool install langgraph-cli
- langgraph deploy staging-mcp-server-langgraph --tag staging
- |
langgraph deployment invoke staging-mcp-server-langgraph \
--input '{"messages": [{"role": "user", "content": "test"}]}'
only :
- main
deploy-production :
stage : deploy-production
image : python:${PYTHON_VERSION}
environment :
name : production
url : https://mcp-server-langgraph-prod.langchain.com
when : manual
script :
- curl -LsSf https://astral.sh/uv/install.sh | sh
- uv tool install langgraph-cli
- langgraph deploy mcp-server-langgraph-prod --tag production --tag "$CI_COMMIT_SHORT_SHA"
- langgraph deployment get mcp-server-langgraph-prod
only :
- main
CircleCI
version : 2.1
orbs :
python : circleci/python@2.1.1
jobs :
test :
docker :
- image : cimg/python:3.12
steps :
- checkout
- python/install-packages :
pkg-manager : pip
- run :
name : Run tests
command : pytest tests/ -v
deploy-staging :
docker :
- image : cimg/python:3.12
steps :
- checkout
- run :
name : Install LangGraph CLI
command : uv tool install langgraph-cli
- run :
name : Deploy to Staging
command : |
langgraph deploy staging-mcp-server-langgraph --tag staging
- run :
name : Smoke Test
command : |
langgraph deployment invoke staging-mcp-server-langgraph \
--input '{"messages": [{"role": "user", "content": "test"}]}'
deploy-production :
docker :
- image : cimg/python:3.12
steps :
- checkout
- run :
name : Install LangGraph CLI
command : uv tool install langgraph-cli
- run :
name : Deploy to Production
command : |
langgraph deploy mcp-server-langgraph-prod \
--tag production \
--tag "${CIRCLE_SHA1:0:7}"
workflows :
test-and-deploy :
jobs :
- test
- deploy-staging :
requires :
- test
filters :
branches :
only : main
- hold-production :
type : approval
requires :
- deploy-staging
- deploy-production :
requires :
- hold-production
Best Practices
Always Test Before Deploy
jobs :
test :
# Run unit tests, integration tests
deploy :
needs : test # Only deploy if tests pass
deploy-staging :
# Deploy to staging first
# Run smoke tests
deploy-production :
needs : deploy-staging # Only deploy to prod if staging succeeds
# Tag with git commit SHA
langgraph deploy my-agent-prod --tag "$( git rev-parse --short HEAD)"
# Tag with semantic version
langgraph deploy my-agent-prod --tag "v1.2.3"
# Tag with timestamp
langgraph deploy my-agent-prod --tag "deploy-$( date +%Y%m%d-%H%M%S)"
Require Approvals for Production
Use GitHub Environments or GitLab’s manual approval: deploy-production :
environment : production # Requires approval
when : manual
# After deployment, verify it works
langgraph deployment invoke my-agent-prod \
--input '{"messages": [{"role": "user", "content": "health check"}]}' \
--timeout 30
- name : Notify Slack
if : success()
uses : slackapi/slack-github-action@v1
with :
payload : |
{
"text": "✅ Deployed to production: ${{ github.sha }}"
}
env :
SLACK_WEBHOOK_URL : ${{ secrets.SLACK_WEBHOOK }}
Rollback Strategy
Automatic Rollback on Failure
- name : Deploy to Production
id : deploy
run : langgraph deploy my-agent-prod --tag production
- name : Smoke Test
id : test
run : |
langgraph deployment invoke my-agent-prod \
--input '{"messages": [{"role": "user", "content": "test"}]}'
- name : Rollback on Failure
if : failure() && steps.deploy.outcome == 'success'
run : |
# Get previous revision
PREV_REVISION=$(langgraph deployment list | grep my-agent-prod | awk 'NR==2 {print $2}')
# Rollback
langgraph deployment rollback my-agent-prod --revision $PREV_REVISION
Manual Rollback
## List revisions
langgraph deployment list my-agent-prod
## Rollback to specific revision
langgraph deployment rollback my-agent-prod --revision 42
## Or rollback to previous
langgraph deployment rollback my-agent-prod
Multi-Environment Strategy
Development
Staging
Production
Trigger : Every push to develop branch
NOTE: Automatic deploys only run when the repository variable ENABLE_DEV_AUTODEPLOY is set to true. This keeps CI from waiting on environment approvals by default.
deploy-dev :
if : github.ref == 'refs/heads/develop'
run : langgraph deploy my-agent-dev --tag development
Trigger : Every push to main branch
NOTE: Set the repository variable ENABLE_STAGING_AUTODEPLOY to true to enable automated staging deploys. Leaving it unset keeps CI from stalling on staging approvals.
deploy-staging :
if : github.ref == 'refs/heads/main'
run : langgraph deploy my-agent-staging --tag staging
Trigger : Manual approval or git tagdeploy-production :
if : startsWith(github.ref, 'refs/tags/v')
environment : production
run : langgraph deploy my-agent-prod --tag ${{ github.ref_name }}
Monitoring Deployments
View deployment status:
## Get deployment info
langgraph deployment get my-agent-prod
## Stream logs
langgraph deployment logs my-agent-prod --follow
## View in LangSmith
## https://smith.langchain.com → Select project → View traces
Troubleshooting
Symptom : 401 UnauthorizedSolution : Verify LANGCHAIN_API_KEY secret is set correctly in CI/CD platform.
Symptom : Deployment takes too longSolution :
Optimize dependencies in langgraph/requirements.txt
Reduce Docker image size
Check network connectivity
Symptom : Test invocation returns errorSolution :
Check deployment logs: langgraph deployment logs
Verify secrets are set
Test locally first with langgraph dev
Next Steps
Quickstart Deploy your first agent
Monitoring Monitor deployments
Secrets Manage secrets in CI/CD
Configuration Configure deployments
CI/CD Ready! Your LangGraph Platform deployments are now automated with testing, staging, and production workflows.