Skip to content

Commit 7e59d2d

Browse files
committed
bearer token simple example
1 parent 83c9180 commit 7e59d2d

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
"""
2+
This example shows how to reject any request without a valid token passed in the Authorization header.
3+
4+
In order to configure the auth header, the config file for the MCP server should looks like this:
5+
```json
6+
{
7+
"mcpServers": {
8+
"remote-example": {
9+
"command": "npx",
10+
"args": [
11+
"mcp-remote",
12+
"http://localhost:8000/mcp",
13+
"--header",
14+
"Authorization:${AUTH_HEADER}"
15+
]
16+
},
17+
"env": {
18+
"AUTH_HEADER": "Bearer "
19+
}
20+
}
21+
}
22+
```
23+
"""
24+
from examples.shared.apps.items import app # The FastAPI app
25+
from examples.shared.setup import setup_logging
26+
27+
from fastapi import Depends
28+
from fastapi.security import HTTPBearer
29+
30+
from fastapi_mcp import FastApiMCP, AuthConfig
31+
32+
setup_logging()
33+
34+
# Scheme for the Authorization header
35+
token_auth_scheme = HTTPBearer()
36+
37+
# Create a private endpoint
38+
@app.get("/private")
39+
async def private(token = Depends(token_auth_scheme)):
40+
return token.credentials
41+
42+
# Create the MCP server with the token auth scheme
43+
mcp = FastApiMCP(
44+
app,
45+
name="Protected MCP",
46+
auth_config=AuthConfig(
47+
dependencies=[Depends(token_auth_scheme)],
48+
),
49+
)
50+
51+
# Mount the MCP server
52+
mcp.mount()
53+
54+
55+
if __name__ == "__main__":
56+
import uvicorn
57+
58+
uvicorn.run(app, host="0.0.0.0", port=8000)

0 commit comments

Comments
 (0)