Skip to content

Commit 128c6d5

Browse files
dcramerclaude
andcommitted
ref: remove use of SSE transport
Update documentation to clarify transport options and deprecation status: - Separate HTTP and SSE transports in architecture.mdc - Mark SSE as deprecated with migration guidance - Remove SSE accordion section from remote setup UI - Clarify that /mcp endpoint is the recommended approach Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 2b9e53a commit 128c6d5

7 files changed

Lines changed: 38 additions & 44 deletions

File tree

‎docs/architecture.mdc‎

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,12 +118,20 @@ The MCP server supports multiple transport mechanisms:
118118
- Configured via command-line args
119119
- This is the standard MCP transport
120120

121-
**HTTP/SSE Transport** (For web apps):
121+
**HTTP Transport** (For web apps):
122122

123-
- Allows web applications to connect to MCP
123+
- Allows web applications to connect to MCP via HTTP streaming
124124
- Used by the example Cloudflare chat app
125+
- Main endpoint: `/mcp`
125126
- Not part of core MCP spec
126127

128+
**SSE Transport** (Deprecated - will be removed):
129+
130+
- Legacy Server-Sent Events transport
131+
- Endpoint: `/sse`
132+
- Does not support organization/project constraints
133+
- New integrations should use HTTP transport via `/mcp` endpoint
134+
127135
### 3. Authentication Strategy
128136

129137
The MCP server uses Sentry access tokens for authentication:

‎packages/mcp-cloudflare/src/client/components/fragments/remote-setup.tsx‎

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
import {
2-
Accordion,
3-
AccordionContent,
4-
AccordionItem,
5-
AccordionTrigger,
6-
} from "../ui/accordion";
1+
import { Accordion } from "../ui/accordion";
72
import CodeSnippet from "../ui/code-snippet";
83
import SetupGuide from "./setup-guide";
94
import { Prose } from "../ui/prose";
@@ -15,7 +10,6 @@ const mcpServerName = import.meta.env.DEV ? "sentry-dev" : "sentry";
1510

1611
export default function RemoteSetup() {
1712
const endpoint = new URL("/mcp", window.location.href).href;
18-
const sseEndpoint = new URL("/sse", window.location.href).href;
1913

2014
const mcpRemoteSnippet = `npx ${NPM_REMOTE_NAME}@latest ${endpoint}`;
2115
// the shared configuration for all clients
@@ -75,24 +69,6 @@ export default function RemoteSetup() {
7569
session to a specific organization and project
7670
</li>
7771
</ul>
78-
<Accordion type="single" collapsible>
79-
<AccordionItem value="sse-deprecated">
80-
<AccordionTrigger>SSE support is deprecated</AccordionTrigger>
81-
<AccordionContent>
82-
<p className="mb-2">
83-
New clients should use HTTP Streaming via the main
84-
<code>/mcp</code> endpoint. If you must use the SSE-only
85-
implementation, use the following URL:
86-
</p>
87-
<CodeSnippet noMargin snippet={sseEndpoint} />
88-
<p className="mt-2">
89-
<strong>Limitations:</strong> SSE endpoints do not support
90-
organization or project constraints. Use the main
91-
<code>/mcp</code> endpoint if you need scoped access.
92-
</p>
93-
</AccordionContent>
94-
</AccordionItem>
95-
</Accordion>
9672
</Prose>
9773
<Heading as="h3">Integration Guides</Heading>
9874
<Accordion type="single" collapsible>

‎packages/mcp-test-client/README.md‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ A simple CLI tool to test the Sentry MCP server using stdio transport with an AI
99
- 💬 Interactive mode by default when no prompt provided
1010
- 🎨 Colorized output for better readability
1111
- 🔄 Streaming responses for real-time feedback
12-
- 🌐 Remote MCP server support via SSE transport (with OAuth)
12+
- 🌐 Remote MCP server support via HTTP streaming (with OAuth)
1313
- 🏠 Local stdio transport for development
1414

1515
## Prerequisites
@@ -86,7 +86,7 @@ The client automatically determines the connection mode:
8686
2. Environment variable (`SENTRY_ACCESS_TOKEN`)
8787
3. `.env` file
8888

89-
**Remote Mode (SSE transport)**: Used when no access token is provided, prompts for OAuth authentication
89+
**Remote Mode (HTTP streaming)**: Used when no access token is provided, prompts for OAuth authentication
9090

9191
### Required Sentry Permissions
9292

@@ -103,17 +103,17 @@ Your Sentry access token needs the following scopes:
103103

104104
### Remote Mode (Default)
105105

106-
Connect to the remote MCP server via SSE transport (uses OAuth for authentication):
106+
Connect to the remote MCP server via HTTP streaming (uses OAuth for authentication):
107107

108108
```bash
109-
# Connect to production MCP server (uses /sse endpoint)
109+
# Connect to production MCP server (uses /mcp endpoint)
110110
pnpm mcp-test-client
111111

112112
# Connect to local development MCP server
113113
pnpm mcp-test-client --mcp-host http://localhost:8787
114114
```
115115

116-
**Note**: Remote mode uses Server-Sent Events (SSE) transport and connects to the `/sse` endpoint on the MCP server.
116+
**Note**: Remote mode uses HTTP streaming transport and connects to the `/mcp` endpoint on the MCP server.
117117

118118
### Local Mode
119119

‎packages/mcp-test-client/package.json‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
},
1919
"dependencies": {
2020
"@ai-sdk/openai": "catalog:",
21+
"@modelcontextprotocol/sdk": "catalog:",
2122
"@sentry/core": "catalog:",
2223
"@sentry/mcp-server": "workspace:*",
2324
"@sentry/node": "catalog:",

‎packages/mcp-test-client/src/mcp-test-client-remote.ts‎

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { experimental_createMCPClient } from "ai";
2+
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
23
import { startNewTrace, startSpan } from "@sentry/core";
34
import { OAuthClient } from "./auth/oauth.js";
45
import { DEFAULT_MCP_URL } from "./constants.js";
@@ -15,9 +16,9 @@ export async function connectToRemoteMCPServer(
1516
return await startNewTrace(async () => {
1617
return await startSpan(
1718
{
18-
name: "mcp.connect/sse",
19+
name: "mcp.connect/http",
1920
attributes: {
20-
"mcp.transport": "sse",
21+
"mcp.transport": "http",
2122
"gen_ai.conversation.id": sessionId,
2223
"service.version": LIB_VERSION,
2324
},
@@ -54,16 +55,21 @@ export async function connectToRemoteMCPServer(
5455
);
5556
}
5657

57-
// Create SSE client with authentication
58-
const client = await experimental_createMCPClient({
59-
name: "mcp.sentry.dev (test-client)",
60-
transport: {
61-
type: "sse" as const,
62-
url: `${mcpHost}/sse`,
63-
headers: {
64-
Authorization: `Bearer ${accessToken}`,
58+
// Create HTTP streaming client with authentication
59+
const httpTransport = new StreamableHTTPClientTransport(
60+
new URL(`${mcpHost}/mcp`),
61+
{
62+
requestInit: {
63+
headers: {
64+
Authorization: `Bearer ${accessToken}`,
65+
},
6566
},
6667
},
68+
);
69+
70+
const client = await experimental_createMCPClient({
71+
name: "mcp.sentry.dev (test-client)",
72+
transport: httpTransport,
6773
});
6874

6975
// Discover available tools
@@ -91,7 +97,7 @@ export async function connectToRemoteMCPServer(
9197
tools,
9298
disconnect,
9399
sessionId,
94-
transport: "sse" as const,
100+
transport: "http" as const,
95101
};
96102
} catch (error) {
97103
span.setStatus({ code: 2 });

‎packages/mcp-test-client/src/types.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ export interface MCPConnection {
55
tools: Map<string, any>;
66
disconnect: () => Promise<void>;
77
sessionId: string;
8-
transport: "stdio" | "sse";
8+
transport: "stdio" | "http";
99
}
1010

1111
export interface MCPConfig {

‎pnpm-lock.yaml‎

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)