-
Notifications
You must be signed in to change notification settings - Fork 40
Expand file tree
/
Copy path__main__.py
More file actions
74 lines (64 loc) · 2.01 KB
/
__main__.py
File metadata and controls
74 lines (64 loc) · 2.01 KB
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import logging
import click
from datahub.ingestion.graph.config import ClientMode
from datahub.sdk.main_client import DataHubClient
from datahub.telemetry import telemetry
from fastmcp.server.middleware.logging import LoggingMiddleware
from typing_extensions import Literal
from mcp_server_datahub._telemetry import TelemetryMiddleware
from mcp_server_datahub._version import __version__
from mcp_server_datahub.mcp_server import mcp, register_all_tools, with_datahub_client
logging.basicConfig(level=logging.INFO)
# Register tools with OSS-compatible descriptions
register_all_tools(is_oss=True)
@click.command()
@click.version_option(version=__version__)
@click.option(
"--transport",
type=click.Choice(["stdio", "sse", "http"]),
default="stdio",
)
@click.option(
"--debug",
is_flag=True,
default=False,
)
@click.option(
"--host",
type=str,
default="0.0.0.0",
help="Host to bind the server to (default: 0.0.0.0 for all interfaces)",
)
@click.option(
"--port",
type=int,
default=8000,
help="Port to bind the server to (default: 8000)",
)
@telemetry.with_telemetry(
capture_kwargs=["transport"],
)
def main(
transport: Literal["stdio", "sse", "http"], debug: bool, host: str, port: int
) -> None:
client = DataHubClient.from_env(
client_mode=ClientMode.SDK,
datahub_component=f"mcp-server-datahub/{__version__}",
)
if debug:
# logging.getLogger("datahub").setLevel(logging.DEBUG)
mcp.add_middleware(LoggingMiddleware(include_payloads=True))
mcp.add_middleware(TelemetryMiddleware())
with with_datahub_client(client):
if transport == "http":
mcp.run(
transport=transport,
show_banner=False,
stateless_http=True,
host=host,
port=port,
)
else:
mcp.run(transport=transport, show_banner=False)
if __name__ == "__main__":
main()