You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Transport: **SSE** (standalone HTTP server on port 8081)
21
23
22
24
Both servers:
23
-
- Run in **proxy mode**via STDIO transport
24
-
- Are managed by the MCP Compose
25
+
- Run in **proxy mode**(STDIO and SSE transports)
26
+
- Are managed/proxied by the MCP Compose
25
27
- Are accessed through the **composer's authentication layer**
26
28
27
29
## 🔐 Authentication Architecture
@@ -92,19 +94,53 @@ This will install:
92
94
-`fastmcp` (for the demo MCP servers)
93
95
-`anaconda-auth` (for token validation)
94
96
95
-
### 2. Start the Composer
97
+
### 2. Start the Echo SSE Server
98
+
99
+
First, start the echo server in SSE mode (in a separate terminal):
100
+
101
+
```bash
102
+
make start-echo-sse
103
+
```
104
+
105
+
This will start the echo MCP server on port 8081 with SSE transport.
106
+
107
+
### 3. Start the Composer
108
+
109
+
In another terminal:
96
110
97
111
```bash
98
112
make start
99
113
```
100
114
101
-
**No authentication required to start!** The composer will:
115
+
**No Anaconda credentials required to start the server!** The composer will:
102
116
- Read configuration from `mcp_compose.toml`
103
-
- Start both Calculator and Echo MCP servers as child processes
117
+
- Start the Calculator MCP server as a child process (STDIO)
118
+
- Connect to the Echo MCP server via SSE (http://localhost:8081/sse)
104
119
- Listen on port 8080 for client connections
105
-
- Validate bearer tokens from incoming client requests
120
+
- Validate bearer tokens from incoming client requests using `anaconda-auth`
121
+
122
+
You'll see output like:
123
+
```
124
+
🔐 Authentication enabled
125
+
Provider: anaconda
126
+
Domain: anaconda.com
127
+
✓ Authenticator initialized
128
+
129
+
🚀 MCP Compose: anaconda-composer
130
+
Starting 1 server(s)...
106
131
107
-
### 3. Connect with a Client
132
+
• calculator
133
+
Command: python mcp1.py
134
+
Status: ✓ Started
135
+
136
+
Connecting to 1 SSE server(s)...
137
+
138
+
• echo
139
+
URL: http://localhost:8081/sse
140
+
Status: ✓ Connected
141
+
```
142
+
143
+
### 4. Connect with a Client
108
144
109
145
Clients must provide an Anaconda bearer token in requests:
110
146
@@ -129,7 +165,7 @@ mcp_server = MCPServerSSE(
129
165
4. If valid, request is proxied to backend servers
130
166
5. If invalid, request is rejected with 401 Unauthorized
131
167
132
-
### 4. Use the AI Agent (Coming Soon)
168
+
### 5. Use the AI Agent (Coming Soon)
133
169
134
170
> **🚧 Work in Progress**: The agent integration requires the unified SSE endpoint to be implemented in the serve command. The agent.py file is ready and demonstrates the intended usage pattern.
135
171
@@ -153,9 +189,11 @@ Example interactions (once SSE endpoint is available):
153
189
- "Convert 'Hello World' to uppercase"
154
190
- "Count the words in 'The quick brown fox jumps'"
155
191
156
-
### 5. Stop the Composer
192
+
### 6. Stop the Servers
157
193
158
-
Press `Ctrl+C` in the terminal where the composer is running.
194
+
Press `Ctrl+C` in both terminals:
195
+
1. The terminal running the composer
196
+
2. The terminal running the echo SSE server
159
197
160
198
## 🔧 How Authentication Works
161
199
@@ -266,8 +304,7 @@ providers = ["anaconda"]
266
304
default_provider = "anaconda"
267
305
268
306
[authentication.anaconda]
269
-
domain = "anaconda.com"
270
-
# API key loaded from ANACONDA_API_KEY environment variable
307
+
domain = "anaconda.com"# Use "your-company.anaconda.com" for enterprise
0 commit comments