mirror of
https://github.com/open-webui/mcpo
synced 2025-06-26 18:26:58 +00:00
Merge pull request #49 from MHugonKaliop/feat/add-prefix-from-discussion-24
This commit is contained in:
@@ -47,6 +47,9 @@ def main(
|
||||
ssl_keyfile: Annotated[
|
||||
Optional[str], typer.Option("--ssl-keyfile", "-k", help="SSL keyfile")
|
||||
] = None,
|
||||
path_prefix: Annotated[
|
||||
Optional[str], typer.Option("--path_prefix", "-x", help="URL prefix")
|
||||
] = None,
|
||||
):
|
||||
server_command = None
|
||||
if not config:
|
||||
@@ -81,6 +84,17 @@ def main(
|
||||
for key, value in env_dict.items():
|
||||
os.environ[key] = value
|
||||
|
||||
# Whatever the prefix is, make sure it starts and ends with a /
|
||||
if path_prefix is None:
|
||||
# Set default value
|
||||
path_prefix = "/"
|
||||
# if prefix doesn't end with a /, add it
|
||||
if not path_prefix.endswith("/"):
|
||||
path_prefix = f"{path_prefix}/"
|
||||
# if prefix doesn't start with a /, add it
|
||||
if not path_prefix.startswith("/"):
|
||||
path_prefix = f"/{path_prefix}"
|
||||
|
||||
# Run your async run function from mcpo.main
|
||||
asyncio.run(
|
||||
run(
|
||||
@@ -95,6 +109,7 @@ def main(
|
||||
server_command=server_command,
|
||||
ssl_certfile=ssl_certfile,
|
||||
ssl_keyfile=ssl_keyfile,
|
||||
path_prefix=path_prefix,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -155,6 +155,7 @@ async def run(
|
||||
version = kwargs.get("version") or "1.0"
|
||||
ssl_certfile = kwargs.get("ssl_certfile")
|
||||
ssl_keyfile = kwargs.get("ssl_keyfile")
|
||||
path_prefix = kwargs.get("path_prefix") or "/"
|
||||
|
||||
main_app = FastAPI(
|
||||
title=name, description=description, version=version, ssl_certfile=ssl_certfile, ssl_keyfile=ssl_keyfile, lifespan=lifespan
|
||||
@@ -203,7 +204,7 @@ async def run(
|
||||
sub_app.state.env = {**os.environ, **server_cfg.get("env", {})}
|
||||
|
||||
sub_app.state.api_dependency = api_dependency
|
||||
main_app.mount(f"/{server_name}", sub_app)
|
||||
main_app.mount(f"{path_prefix}{server_name}", sub_app)
|
||||
main_app.description += f"\n - [{server_name}](http://{host}:{port}/{server_name}/docs)"
|
||||
else:
|
||||
raise ValueError("You must provide either server_command or config.")
|
||||
|
||||
Reference in New Issue
Block a user