File size: 1,047 Bytes
1d54ed8
 
e7206f6
80dc3a4
1d54ed8
80dc3a4
 
1d54ed8
 
 
e7206f6
1d54ed8
 
80dc3a4
 
1d54ed8
 
 
 
 
80dc3a4
1d54ed8
 
 
80dc3a4
1d54ed8
 
 
 
 
 
 
692e2cd
d3ac497
1d54ed8
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from fastmcp import FastMCP
from fastmcp.server.dependencies import get_http_headers


mcp = FastMCP("My MCP Server")


@mcp.tool
def greet() -> str:
    headers = get_http_headers()
    print(f"Received headers: {headers}")
    name = headers.get("x-given-name", "unknown")
    return f"Hello, {name}!"


@mcp.tool
async def safe_header_info() -> dict:
    """Safely get header information without raising errors."""
    # Get headers (returns empty dict if no request context)
    headers = get_http_headers()

    # Get authorization header
    auth_header = headers.get("authorization", "")
    is_bearer = auth_header.startswith("Bearer ")

    return {
        "user_agent": headers.get("user-agent", "Unknown"),
        "content_type": headers.get("content-type", "Unknown"),
        "has_auth": bool(auth_header),
        "auth_type": "Bearer" if is_bearer else "Other" if auth_header else "None",
        "headers_count": len(headers),
    }


if __name__ == "__main__":
    mcp.run(transport="streamable-http", port=8000, host="0.0.0.0")