diff --git a/deployment/README.md b/deployment/README.md new file mode 100644 index 0000000..53444b6 --- /dev/null +++ b/deployment/README.md @@ -0,0 +1,46 @@ +## Deployment Guide for Atlan MCP Server + +This document explains the various ways you can start the **Atlan MCP Server** and when to choose a given transport mechanism. + +### Quick-start + +```bash +# Default (stdio – recommended for local development) +python modelcontextprotocol/server.py + +# Stream over Server-Sent Events (SSE) – great for browsers or reverse proxies +python modelcontextprotocol/server.py --transport sse --host 0.0.0.0 --port 8000 + +# Stream over plain HTTP ("streamable-http") – useful when SSE is not available +python modelcontextprotocol/server.py --transport streamable-http --host 0.0.0.0 --port 8000 --path / +``` + +### Transport options + +- **`stdio` (default)** + Communicates over standard input/output. + • Benefits: Zero network overhead; perfect for running the agent as a local subprocess. + • When to use: Local development or when integrating directly with parent processes or editors that spawn the server. + +- **`sse`** + Uses **Server-Sent Events** over HTTP—the server keeps an HTTP connection open and pushes a `text/event-stream` as new data arrives. + • Benefits: Built-in support in modern browsers & many HTTP reverse proxies; uni-directional and firewall-friendly; low-latency streaming suited for real-time UI updates. + • When to use: When you are building a Web UI that consumes streamed completions, or you want a push-based model but do not need the bi-directionality of WebSockets. + +- **`streamable-http`** + Sends a standard HTTP response whose body is streamed incrementally (chunked transfer-encoding). + • Benefits: Works with any HTTP client (curl, Python `requests`, Java `HttpClient`, etc.); no special SSE handling required; plays nicely with infrastructure that terminates or transforms HTTP but does **not** understand event streams. + • When to use: The consumer is a language or runtime lacking SSE support, or you want to keep the transport strictly within the HTTP spec without custom headers. + +> **Note** +> The CLI flag is `--transport streamable-http` (with a hyphen), while you may see it described conceptually as *HTTP-streamable*. + + +### Environment variables & production tips + +* Ensure `ATLAN_BASE_URL` and `ATLAN_API_KEY` are provided (e.g., via a secrets manager). +* Expose the chosen port (`--port`, default `8000`) in your container or deployment manifest. + +--- + +For additional configuration (timeouts, logging, etc.) refer to `modelcontextprotocol/settings.py` and the root `README.md`. diff --git a/modelcontextprotocol/README.md b/modelcontextprotocol/README.md index 026aeef..c970fe2 100644 --- a/modelcontextprotocol/README.md +++ b/modelcontextprotocol/README.md @@ -144,6 +144,10 @@ Open `Cursor > Settings > Tools & Integrations > New MCP Server` to include the | `traverse_lineage` | Retrieve lineage for an asset | | `update_assets` | Update asset attributes (user description and certificate status) | +## Deployment + +For information on running the server in different environments (stdio, SSE, or streamable HTTP), see the [deployment guide](../deployment/Readme.md). + ## Production Deployment - Host the Atlan MCP container image on the cloud/platform of your choice