main
py 42 lines 1.27 KB
Raw
1 from __future__ import annotations
2
3 import argparse
4 import logging
5 import sys
6
7 from mcp.server.transport_security import TransportSecuritySettings
8
9 from yahoo_mcp_server.server import create_yahoo_mcp_server
10 from yahoo_mcp_server.settings import YahooMcpSettings
11
12
13 def main() -> None:
14 settings = YahooMcpSettings()
15 parser = argparse.ArgumentParser(description="First-party Yahoo Finance MCP server")
16 parser.add_argument(
17 "--transport", choices=("stdio", "streamable-http"), default=settings.transport
18 )
19 args = parser.parse_args()
20 logging.basicConfig(level=logging.INFO, stream=sys.stderr, format="%(message)s")
21 server = create_yahoo_mcp_server(settings)
22 if args.transport == "stdio":
23 server.run("stdio")
24 return
25 server.run(
26 "streamable-http",
27 host=settings.host,
28 port=settings.port,
29 streamable_http_path=settings.http_path,
30 stateless_http=True,
31 json_response=True,
32 max_request_body_size=settings.max_request_body_bytes,
33 transport_security=TransportSecuritySettings(
34 enable_dns_rebinding_protection=True,
35 allowed_hosts=settings.allowed_hosts,
36 allowed_origins=settings.allowed_origins,
37 ),
38 )
39
40
41 if __name__ == "__main__":
42 main()