Skip to content

Commit f54463e

Browse files
authored
Merge pull request #362 from apollographql/GT-271
Add CORS support
2 parents 131a9e0 + 2a0595c commit f54463e

File tree

16 files changed

+1276
-94
lines changed

16 files changed

+1276
-94
lines changed

.changesets/feat_cors.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
### Add CORS support - @DaleSeo PR #362
2+
3+
This PR implements comprehensive CORS support for Apollo MCP Server to enable web-based MCP clients to connect without CORS errors. The implementation and configuration draw heavily from the Router's approach. Similar to other features like health checks and telemetry, CORS is supported only for the StreamableHttp transport, making it a top-level configuration.

.vscode/launch.json

Lines changed: 84 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,86 @@
11
{
2-
"version": "0.2.0",
3-
"configurations": [
4-
{
5-
"type": "node",
6-
"request": "launch",
7-
"name": "Run apollo-mcp-server [Weather][Streamable HTTP]",
8-
"runtimeExecutable": "cargo",
9-
"runtimeArgs": [
10-
"run",
11-
"--bin",
12-
"apollo-mcp-server",
13-
"--",
14-
"graphql/weather/config.yaml",
15-
],
16-
"cwd": "${workspaceFolder}",
17-
"console": "integratedTerminal",
18-
"env": {
19-
"RUST_BACKTRACE": "1"
20-
}
21-
},
22-
{
23-
"type": "lldb",
24-
"request": "launch",
25-
"name": "Debug apollo-mcp-server [Weather][Streamable HTTP]",
26-
"cargo": {
27-
"args": [
28-
"build",
29-
"--bin=apollo-mcp-server",
30-
"--lib"
31-
],
32-
"filter": {
33-
"name": "apollo-mcp-server",
34-
"kind": "bin"
35-
}
36-
},
37-
"args": [
38-
"graphql/weather/config.yaml",
39-
],
40-
"cwd": "${workspaceFolder}",
41-
"env": {
42-
"RUST_BACKTRACE": "1"
43-
}
44-
},
45-
{
46-
"type": "node",
47-
"request": "launch",
48-
"name": "Run apollo-mcp-server [TheSpaceDevs][Streamable HTTP]",
49-
"runtimeExecutable": "cargo",
50-
"runtimeArgs": [
51-
"run",
52-
"--bin",
53-
"apollo-mcp-server",
54-
"--",
55-
"graphql/TheSpaceDevs/config.yaml",
56-
],
57-
"cwd": "${workspaceFolder}",
58-
"console": "integratedTerminal",
59-
"env": {
60-
"RUST_BACKTRACE": "1"
61-
}
62-
},
63-
{
64-
"type": "node",
65-
"request": "launch",
66-
"name": "Run mcp-inspector",
67-
"runtimeExecutable": "npx",
68-
"runtimeArgs": [
69-
"@modelcontextprotocol/inspector"
70-
],
71-
"cwd": "${workspaceFolder}",
72-
"console": "integratedTerminal"
2+
"version": "0.2.0",
3+
"configurations": [
4+
{
5+
"type": "node",
6+
"request": "launch",
7+
"name": "Run apollo-mcp-server [Weather][Streamable HTTP]",
8+
"runtimeExecutable": "cargo",
9+
"runtimeArgs": [
10+
"run",
11+
"--bin",
12+
"apollo-mcp-server",
13+
"--",
14+
"graphql/weather/config.yaml"
15+
],
16+
"cwd": "${workspaceFolder}",
17+
"console": "integratedTerminal",
18+
"env": {
19+
"RUST_BACKTRACE": "1"
20+
}
21+
},
22+
{
23+
"type": "lldb",
24+
"request": "launch",
25+
"name": "Debug apollo-mcp-server [Weather][Streamable HTTP]",
26+
"cargo": {
27+
"args": ["build", "--bin=apollo-mcp-server", "--lib"],
28+
"filter": {
29+
"name": "apollo-mcp-server",
30+
"kind": "bin"
7331
}
74-
]
75-
}
32+
},
33+
"args": ["graphql/weather/config.yaml"],
34+
"cwd": "${workspaceFolder}",
35+
"env": {
36+
"RUST_BACKTRACE": "1",
37+
"APOLLO_MCP_LOGGING__LEVEL": "debug"
38+
}
39+
},
40+
{
41+
"type": "node",
42+
"request": "launch",
43+
"name": "Run apollo-mcp-server [TheSpaceDevs][Streamable HTTP]",
44+
"runtimeExecutable": "cargo",
45+
"runtimeArgs": [
46+
"run",
47+
"--bin",
48+
"apollo-mcp-server",
49+
"--",
50+
"graphql/TheSpaceDevs/config.yaml"
51+
],
52+
"cwd": "${workspaceFolder}",
53+
"console": "integratedTerminal",
54+
"env": {
55+
"RUST_BACKTRACE": "1"
56+
}
57+
},
58+
{
59+
"type": "lldb",
60+
"request": "launch",
61+
"name": "Debug apollo-mcp-server [TheSpaceDevs][Streamable HTTP]",
62+
"cargo": {
63+
"args": ["build", "--bin=apollo-mcp-server", "--lib"],
64+
"filter": {
65+
"name": "apollo-mcp-server",
66+
"kind": "bin"
67+
}
68+
},
69+
"args": ["graphql/TheSpaceDevs/config.yaml"],
70+
"cwd": "${workspaceFolder}",
71+
"env": {
72+
"RUST_BACKTRACE": "1",
73+
"APOLLO_MCP_LOGGING__LEVEL": "debug"
74+
}
75+
},
76+
{
77+
"type": "node",
78+
"request": "launch",
79+
"name": "Run mcp-inspector",
80+
"runtimeExecutable": "npx",
81+
"runtimeArgs": ["@modelcontextprotocol/inspector"],
82+
"cwd": "${workspaceFolder}",
83+
"console": "integratedTerminal"
84+
}
85+
]
86+
}

Cargo.lock

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

crates/apollo-mcp-server/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ insta.workspace = true
5555
mockito = "1.7.0"
5656
rstest.workspace = true
5757
tokio.workspace = true
58+
tower = "0.5.2"
5859
tracing-test = "0.2.5"
5960

6061
[lints]

0 commit comments

Comments
 (0)