Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions examples/server-deployment/docker/deploy/caddy/Caddyfile
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
}
handle {
root * /srv/site
templates
file_server
}
}
2 changes: 1 addition & 1 deletion examples/server-deployment/docker/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ services:
mcp:
condition: service_healthy
environment:
# Set this to your DuckDNS (or real) domain, e.g. teradata-mcp.duckdns.org
# Set this to your (sub.)domain, e.g. mcp.teradata.org and ensure DNS points to this server
- DOMAIN=${DOMAIN}
ports:
- "80:80"
Expand Down
9 changes: 9 additions & 0 deletions examples/server-deployment/docker/env
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# --- MCP server (FastMCP) ---
DATABASE_URI=teradata://USER:PASS@HOST:1025/DEFAULT_DB_SCHEMA # <-- Update here
MCP_TRANSPORT=streamable-http
MCP_HOST=0.0.0.0
MCP_PORT=8001

# --- Caddy / HTTPS ---
# Set this to the DNS name that points at your server
DOMAIN=teradata-mcp.duckdns.org # <-- Update here
2 changes: 1 addition & 1 deletion examples/server-deployment/docker/site/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
<body style="font-family:sans-serif;text-align:center;margin-top:10%;">
<img src="/favicon.png" width="96" alt="Teradata">
<h2>Teradata MCP Server is running</h2>
<p>Secure endpoint: <b>/mcp/</b></p>
<p>Secure endpoint: <b>https://{{.Host}}/mcp/</b></p>
<p>
⚙️ Need to configure your client? See the
<a href="https://github.com/Teradata/teradata-mcp-server/tree/main/docs#-client-guide" target="_blank">
Expand Down
33 changes: 17 additions & 16 deletions examples/server-deployment/quickstart-docker.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,12 @@ cd teradata-mcp-service

## 2) `.env` — runtime configuration

Update the `.env` file with your database connection string for `DATABASE_URI` and domain name for `DOMAIN`:

Copy the `env` file to `.env` and edit it to update your database connection string for `DATABASE_URI` and domain name for `DOMAIN`:

```bash
cp env .env
```

```dotenv
# --- MCP server (FastMCP) ---
DATABASE_URI=teradata://USER:PASS@HOST:1025/DEFAULT_DB_SCHEMA # <-- Update here
Expand All @@ -65,21 +69,19 @@ DOMAIN=teradata-mcp.duckdns.org # <-- Update her

---

## 3) (Optional) landing page / favicon

Add files under `examples/server-deployment/docker/site/` if you want a root page or custom icon:
## 3) (Optional) landing page

- Update `favicon.ico` and `favicon.png` with your preferred icon
- Update `index.html` (minimal example)
You can update or add files under `examples/server-deployment/docker/site/` to customize the landing page.
The current setup indicates that the server is running and points the viewer to the client tool setup documentation.

---

## 4) Start the stack

From your directory:

```bash
docker compose up -d --build
docker compose up -d --remove-orphans
docker compose ps
```

Expand All @@ -91,7 +93,7 @@ docker compose logs -f caddy

---

## 7) Verify
## 5) Verify

```bash
# Expect 200/401/405 from the app (not HTML)
Expand All @@ -105,7 +107,7 @@ If you added a landing page: visit `https://${DOMAIN}/`.

---

## 8) Use with Claude Desktop
## 6) Use with Claude Desktop

With HTTPS you **do not** need `--allow-http`:

Expand All @@ -124,11 +126,11 @@ Add headers if you enforce auth at the app or proxy (e.g., `--header "Authorizat

---

## 9) Operations
## 7) Operations

```bash
# Update/recreate
docker compose pull && docker compose up -d --build
docker compose pull && docker compose up -d --remove-orphans --build

# Logs
docker compose logs -f mcp
Expand All @@ -143,11 +145,10 @@ docker compose down
## 10) Troubleshooting

- **TLS errors right after deploy** → DNS propagation or first ACME run; retry in a minute and check `docker compose logs -f caddy`.
- **HTML/404 served at `/mcp/`** → ensure the `@mcp` matcher appears *before* the static handlers in `Caddyfile`.
- **80/443 blocked** → open in Security Group / firewall; confirm public IPv4 resolves for `${DOMAIN}`.
- **Icon still shows DuckDNS duck** → Claude may brand by base domain (`duckdns.org`). Use your own domain to fully customize.

---

**That’s it.** You now have a clean, HTTPS-protected MCP server via Docker Compose with Caddy.
**That’s it.** You now have a HTTPS-protected MCP server via Docker Compose with Caddy.

-----