-
Notifications
You must be signed in to change notification settings - Fork 40
Expand file tree
/
Copy path__main__.py
More file actions
64 lines (53 loc) · 1.85 KB
/
__main__.py
File metadata and controls
64 lines (53 loc) · 1.85 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
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.document_tools_middleware import DocumentToolsMiddleware
from mcp_server_datahub.mcp_server import (
create_mcp_server,
register_all_tools,
with_datahub_client,
)
from mcp_server_datahub.version_requirements import VersionFilterMiddleware
logging.basicConfig(level=logging.INFO)
mcp = create_mcp_server()
# Register tools with OSS-compatible descriptions
register_all_tools(mcp, 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,
)
@telemetry.with_telemetry(
capture_kwargs=["transport"],
)
def main(transport: Literal["stdio", "sse", "http"], debug: bool) -> 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())
mcp.add_middleware(VersionFilterMiddleware())
mcp.add_middleware(DocumentToolsMiddleware())
with with_datahub_client(client):
if transport == "http":
mcp.run(transport=transport, show_banner=False, stateless_http=True)
else:
mcp.run(transport=transport, show_banner=False)
if __name__ == "__main__":
main()