Skip to content

Commit f1673ff

Browse files
authored
Merge pull request #16 from abel9851/fix/add-package-entrypoint
feat: add how to set args
2 parents adb6632 + 2c31f2d commit f1673ff

File tree

2 files changed

+30
-9
lines changed

2 files changed

+30
-9
lines changed

src/mcp_server_mariadb/server.py

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1+
import argparse
12
import os
23
from contextlib import closing
3-
from dataclasses import dataclass
4+
from dataclasses import dataclass, field
45

56
import mariadb
67
from dotenv import load_dotenv
@@ -16,19 +17,39 @@
1617
READ_ONLY_KEYWORD_NAMES = ", ".join(READ_ONLY_KEYWORDS)
1718

1819

20+
def get_arguments() -> dict:
21+
"""Parse command-line arguments and return as a dictionary."""
22+
parser = argparse.ArgumentParser(description="MariaDB Configuration")
23+
parser.add_argument("--host", help="MariaDB host")
24+
parser.add_argument("--port", type=int, help="MariaDB port")
25+
parser.add_argument("--user", help="MariaDB user")
26+
parser.add_argument("--password", help="MariaDB password")
27+
parser.add_argument("--database", help="MariaDB database")
28+
args = parser.parse_args()
29+
30+
return {k: v for k, v in vars(args).items() if v is not None}
31+
32+
1933
@dataclass
2034
class DBconfig:
21-
host: str = os.getenv("MARIADB_HOST", "localhost")
22-
port: int = int(os.getenv("MARIADB_PORT", "3306"))
23-
user: str = os.getenv("MARIADB_USER", "")
24-
password: str = os.getenv("MARIADB_PASSWORD", "")
25-
database: str = os.getenv("MARIADB_DATABASE", "")
35+
"""Database configuration"""
36+
37+
host: str = field(default_factory=lambda: os.getenv("MARIADB_HOST", "localhost"))
38+
port: int = field(default_factory=lambda: int(os.getenv("MARIADB_PORT", "3306")))
39+
user: str = field(default_factory=lambda: os.getenv("MARIADB_USER", ""))
40+
password: str = field(default_factory=lambda: os.getenv("MARIADB_PASSWORD", ""))
41+
database: str = field(default_factory=lambda: os.getenv("MARIADB_DATABASE", ""))
42+
43+
@classmethod
44+
def from_args(cls) -> "DBconfig":
45+
"""Create a DBconfig instance from command-line arguments and environment variables."""
46+
cli_args = get_arguments()
47+
return cls(**{**cls().__dict__, **cli_args})
2648

2749

2850
def get_connection():
2951
"""Create a connection to the database connection"""
30-
31-
config = DBconfig()
52+
config = DBconfig.from_args()
3253

3354
try:
3455
conn = mariadb.connect(

uv.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)