refactor(common): rename package option_mcp_common → mcp_common
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "option-mcp-common"
|
name = "mcp-common"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
@@ -20,4 +20,4 @@ requires = ["hatchling"]
|
|||||||
build-backend = "hatchling.build"
|
build-backend = "hatchling.build"
|
||||||
|
|
||||||
[tool.hatch.build.targets.wheel]
|
[tool.hatch.build.targets.wheel]
|
||||||
packages = ["src/option_mcp_common"]
|
packages = ["src/mcp_common"]
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
from option_mcp_common.models import (
|
from mcp_common.models import (
|
||||||
Event,
|
Event,
|
||||||
EventPriority,
|
EventPriority,
|
||||||
EventType,
|
EventType,
|
||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Usage al boot di ogni mcp `__main__.py`:
|
Usage al boot di ogni mcp `__main__.py`:
|
||||||
|
|
||||||
from option_mcp_common.env_validation import require_env, optional_env, summarize
|
from mcp_common.env_validation import require_env, optional_env, summarize
|
||||||
|
|
||||||
creds_file = require_env("CREDENTIALS_FILE", "deribit credentials JSON path")
|
creds_file = require_env("CREDENTIALS_FILE", "deribit credentials JSON path")
|
||||||
host = optional_env("HOST", default="0.0.0.0")
|
host = optional_env("HOST", default="0.0.0.0")
|
||||||
+1
-1
@@ -27,7 +27,7 @@ import httpx
|
|||||||
from fastapi import FastAPI, Request
|
from fastapi import FastAPI, Request
|
||||||
from fastapi.responses import JSONResponse
|
from fastapi.responses import JSONResponse
|
||||||
|
|
||||||
from option_mcp_common.auth import TokenStore
|
from mcp_common.auth import TokenStore
|
||||||
|
|
||||||
MCP_PROTOCOL_VERSION = "2024-11-05"
|
MCP_PROTOCOL_VERSION = "2024-11-05"
|
||||||
|
|
||||||
+1
-1
@@ -14,7 +14,7 @@ from fastapi.exceptions import RequestValidationError
|
|||||||
from fastapi.responses import JSONResponse, Response
|
from fastapi.responses import JSONResponse, Response
|
||||||
from starlette.middleware.base import BaseHTTPMiddleware
|
from starlette.middleware.base import BaseHTTPMiddleware
|
||||||
|
|
||||||
from option_mcp_common.auth import TokenStore
|
from mcp_common.auth import TokenStore
|
||||||
|
|
||||||
Lifespan = Callable[[FastAPI], AbstractAsyncContextManager[None]]
|
Lifespan = Callable[[FastAPI], AbstractAsyncContextManager[None]]
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
import pytest
|
import pytest
|
||||||
from fastapi import Depends, FastAPI
|
from fastapi import Depends, FastAPI
|
||||||
from fastapi.testclient import TestClient
|
from fastapi.testclient import TestClient
|
||||||
from option_mcp_common.auth import (
|
from mcp_common.auth import (
|
||||||
Principal,
|
Principal,
|
||||||
TokenStore,
|
TokenStore,
|
||||||
acl_requires,
|
acl_requires,
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from option_mcp_common.env_validation import (
|
from mcp_common.env_validation import (
|
||||||
MissingEnvError,
|
MissingEnvError,
|
||||||
fail_fast_if_missing,
|
fail_fast_if_missing,
|
||||||
optional_env,
|
optional_env,
|
||||||
@@ -63,7 +63,7 @@ def test_summarize_does_not_leak_secrets(monkeypatch, caplog):
|
|||||||
import logging
|
import logging
|
||||||
monkeypatch.setenv("API_KEY_FOO", "super-secret-token-123456")
|
monkeypatch.setenv("API_KEY_FOO", "super-secret-token-123456")
|
||||||
monkeypatch.setenv("PORT", "9000")
|
monkeypatch.setenv("PORT", "9000")
|
||||||
with caplog.at_level(logging.INFO, logger="option_mcp_common.env_validation"):
|
with caplog.at_level(logging.INFO, logger="mcp_common.env_validation"):
|
||||||
summarize(["API_KEY_FOO", "PORT", "NOT_SET_XYZ"])
|
summarize(["API_KEY_FOO", "PORT", "NOT_SET_XYZ"])
|
||||||
log_text = "\n".join(caplog.messages)
|
log_text = "\n".join(caplog.messages)
|
||||||
assert "super-secret-token-123456" not in log_text
|
assert "super-secret-token-123456" not in log_text
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
from option_mcp_common.indicators import adx, atr, macd, rsi, sma
|
from mcp_common.indicators import adx, atr, macd, rsi, sma
|
||||||
|
|
||||||
|
|
||||||
def test_rsi_simple():
|
def test_rsi_simple():
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from option_mcp_common.logging import (
|
from mcp_common.logging import (
|
||||||
SecretsFilter,
|
SecretsFilter,
|
||||||
configure_root_logging,
|
configure_root_logging,
|
||||||
get_json_logger,
|
get_json_logger,
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ from __future__ import annotations
|
|||||||
|
|
||||||
from fastapi import Depends, FastAPI
|
from fastapi import Depends, FastAPI
|
||||||
from fastapi.testclient import TestClient
|
from fastapi.testclient import TestClient
|
||||||
from option_mcp_common.auth import Principal, TokenStore, require_principal
|
from mcp_common.auth import Principal, TokenStore, require_principal
|
||||||
from option_mcp_common.mcp_bridge import _derive_input_schemas, mount_mcp_endpoint
|
from mcp_common.mcp_bridge import _derive_input_schemas, mount_mcp_endpoint
|
||||||
from option_mcp_common.server import build_app
|
from mcp_common.server import build_app
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from option_mcp_common.models import EventPriority, EventType, L2Entry
|
from mcp_common.models import EventPriority, EventType, L2Entry
|
||||||
|
|
||||||
|
|
||||||
def test_l2_entry_minimal():
|
def test_l2_entry_minimal():
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ from __future__ import annotations
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from fastapi import HTTPException
|
from fastapi import HTTPException
|
||||||
from option_mcp_common.risk_guard import (
|
from mcp_common.risk_guard import (
|
||||||
enforce_aggregate,
|
enforce_aggregate,
|
||||||
enforce_leverage,
|
enforce_leverage,
|
||||||
enforce_single_notional,
|
enforce_single_notional,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
from fastapi.testclient import TestClient
|
from fastapi.testclient import TestClient
|
||||||
from option_mcp_common.auth import Principal, TokenStore
|
from mcp_common.auth import Principal, TokenStore
|
||||||
from option_mcp_common.server import build_app
|
from mcp_common.server import build_app
|
||||||
|
|
||||||
|
|
||||||
def test_build_app_health():
|
def test_build_app_health():
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from option_mcp_common.storage import Database, run_migrations
|
from mcp_common.storage import Database, run_migrations
|
||||||
|
|
||||||
|
|
||||||
def test_database_creates_wal(tmp_path: Path):
|
def test_database_creates_wal(tmp_path: Path):
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ name = "mcp-alpaca"
|
|||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"option-mcp-common",
|
"mcp-common",
|
||||||
"fastapi>=0.115",
|
"fastapi>=0.115",
|
||||||
"uvicorn[standard]>=0.30",
|
"uvicorn[standard]>=0.30",
|
||||||
"httpx>=0.27",
|
"httpx>=0.27",
|
||||||
@@ -23,7 +23,7 @@ build-backend = "hatchling.build"
|
|||||||
packages = ["src/mcp_alpaca"]
|
packages = ["src/mcp_alpaca"]
|
||||||
|
|
||||||
[tool.uv.sources]
|
[tool.uv.sources]
|
||||||
option-mcp-common = { workspace = true }
|
mcp-common = { workspace = true }
|
||||||
|
|
||||||
[project.scripts]
|
[project.scripts]
|
||||||
mcp-alpaca = "mcp_alpaca.__main__:main"
|
mcp-alpaca = "mcp_alpaca.__main__:main"
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import json
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
import uvicorn
|
import uvicorn
|
||||||
from option_mcp_common.auth import load_token_store_from_files
|
from mcp_common.auth import load_token_store_from_files
|
||||||
from option_mcp_common.logging import configure_root_logging
|
from mcp_common.logging import configure_root_logging
|
||||||
|
|
||||||
from mcp_alpaca.client import AlpacaClient
|
from mcp_alpaca.client import AlpacaClient
|
||||||
from mcp_alpaca.server import create_app
|
from mcp_alpaca.server import create_app
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ from __future__ import annotations
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
from fastapi import Depends, HTTPException
|
from fastapi import Depends, HTTPException
|
||||||
from option_mcp_common.auth import Principal, TokenStore, require_principal
|
from mcp_common.auth import Principal, TokenStore, require_principal
|
||||||
from option_mcp_common.mcp_bridge import mount_mcp_endpoint
|
from mcp_common.mcp_bridge import mount_mcp_endpoint
|
||||||
from option_mcp_common.server import build_app
|
from mcp_common.server import build_app
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
from mcp_alpaca.client import AlpacaClient
|
from mcp_alpaca.client import AlpacaClient
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ from unittest.mock import AsyncMock, MagicMock
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from fastapi.testclient import TestClient
|
from fastapi.testclient import TestClient
|
||||||
from option_mcp_common.auth import Principal, TokenStore
|
from mcp_common.auth import Principal, TokenStore
|
||||||
|
|
||||||
from mcp_alpaca.server import create_app
|
from mcp_alpaca.server import create_app
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ name = "mcp-bybit"
|
|||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"option-mcp-common",
|
"mcp-common",
|
||||||
"fastapi>=0.115",
|
"fastapi>=0.115",
|
||||||
"uvicorn[standard]>=0.30",
|
"uvicorn[standard]>=0.30",
|
||||||
"httpx>=0.27",
|
"httpx>=0.27",
|
||||||
@@ -22,7 +22,7 @@ build-backend = "hatchling.build"
|
|||||||
packages = ["src/mcp_bybit"]
|
packages = ["src/mcp_bybit"]
|
||||||
|
|
||||||
[tool.uv.sources]
|
[tool.uv.sources]
|
||||||
option-mcp-common = { workspace = true }
|
mcp-common = { workspace = true }
|
||||||
|
|
||||||
[project.scripts]
|
[project.scripts]
|
||||||
mcp-bybit = "mcp_bybit.__main__:main"
|
mcp-bybit = "mcp_bybit.__main__:main"
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import json
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
import uvicorn
|
import uvicorn
|
||||||
from option_mcp_common.auth import load_token_store_from_files
|
from mcp_common.auth import load_token_store_from_files
|
||||||
from option_mcp_common.logging import configure_root_logging
|
from mcp_common.logging import configure_root_logging
|
||||||
|
|
||||||
from mcp_bybit.client import BybitClient
|
from mcp_bybit.client import BybitClient
|
||||||
from mcp_bybit.server import create_app
|
from mcp_bybit.server import create_app
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|||||||
import asyncio
|
import asyncio
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from option_mcp_common import indicators as ind
|
from mcp_common import indicators as ind
|
||||||
from pybit.unified_trading import HTTP
|
from pybit.unified_trading import HTTP
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ from __future__ import annotations
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
from fastapi import Depends, HTTPException
|
from fastapi import Depends, HTTPException
|
||||||
from option_mcp_common.auth import Principal, TokenStore, require_principal
|
from mcp_common.auth import Principal, TokenStore, require_principal
|
||||||
from option_mcp_common.mcp_bridge import mount_mcp_endpoint
|
from mcp_common.mcp_bridge import mount_mcp_endpoint
|
||||||
from option_mcp_common.server import build_app
|
from mcp_common.server import build_app
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
from mcp_bybit.client import BybitClient
|
from mcp_bybit.client import BybitClient
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ from unittest.mock import AsyncMock, MagicMock
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from fastapi.testclient import TestClient
|
from fastapi.testclient import TestClient
|
||||||
from option_mcp_common.auth import Principal, TokenStore
|
from mcp_common.auth import Principal, TokenStore
|
||||||
|
|
||||||
from mcp_bybit.server import create_app
|
from mcp_bybit.server import create_app
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ name = "mcp-deribit"
|
|||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"option-mcp-common",
|
"mcp-common",
|
||||||
"fastapi>=0.115",
|
"fastapi>=0.115",
|
||||||
"uvicorn[standard]>=0.30",
|
"uvicorn[standard]>=0.30",
|
||||||
"httpx>=0.27",
|
"httpx>=0.27",
|
||||||
@@ -21,7 +21,7 @@ build-backend = "hatchling.build"
|
|||||||
packages = ["src/mcp_deribit"]
|
packages = ["src/mcp_deribit"]
|
||||||
|
|
||||||
[tool.uv.sources]
|
[tool.uv.sources]
|
||||||
option-mcp-common = { workspace = true }
|
mcp-common = { workspace = true }
|
||||||
|
|
||||||
[project.scripts]
|
[project.scripts]
|
||||||
mcp-deribit = "mcp_deribit.__main__:main"
|
mcp-deribit = "mcp_deribit.__main__:main"
|
||||||
|
|||||||
@@ -4,13 +4,13 @@ import json
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
import uvicorn
|
import uvicorn
|
||||||
from option_mcp_common.auth import load_token_store_from_files
|
from mcp_common.auth import load_token_store_from_files
|
||||||
from option_mcp_common.env_validation import (
|
from mcp_common.env_validation import (
|
||||||
fail_fast_if_missing,
|
fail_fast_if_missing,
|
||||||
require_env,
|
require_env,
|
||||||
summarize,
|
summarize,
|
||||||
)
|
)
|
||||||
from option_mcp_common.logging import configure_root_logging
|
from mcp_common.logging import configure_root_logging
|
||||||
|
|
||||||
from mcp_deribit.client import DeribitClient
|
from mcp_deribit.client import DeribitClient
|
||||||
from mcp_deribit.server import create_app
|
from mcp_deribit.server import create_app
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ from dataclasses import dataclass, field
|
|||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
import httpx
|
import httpx
|
||||||
from option_mcp_common import indicators as ind
|
from mcp_common import indicators as ind
|
||||||
|
|
||||||
BASE_LIVE = "https://www.deribit.com/api/v2"
|
BASE_LIVE = "https://www.deribit.com/api/v2"
|
||||||
BASE_TESTNET = "https://test.deribit.com/api/v2"
|
BASE_TESTNET = "https://test.deribit.com/api/v2"
|
||||||
@@ -761,7 +761,7 @@ class DeribitClient:
|
|||||||
}
|
}
|
||||||
|
|
||||||
closes = [c["close"] for c in candles]
|
closes = [c["close"] for c in candles]
|
||||||
from option_mcp_common import indicators as _ind
|
from mcp_common import indicators as _ind
|
||||||
|
|
||||||
rsi_thr_low = (entry_rules or {}).get("rsi_below", 35)
|
rsi_thr_low = (entry_rules or {}).get("rsi_below", 35)
|
||||||
rsi_thr_high = (entry_rules or {}).get("rsi_above", 65)
|
rsi_thr_high = (entry_rules or {}).get("rsi_above", 65)
|
||||||
|
|||||||
@@ -3,14 +3,14 @@ from __future__ import annotations
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
from fastapi import Depends, FastAPI, HTTPException
|
from fastapi import Depends, FastAPI, HTTPException
|
||||||
from option_mcp_common.auth import Principal, TokenStore, require_principal
|
from mcp_common.auth import Principal, TokenStore, require_principal
|
||||||
from option_mcp_common.mcp_bridge import mount_mcp_endpoint
|
from mcp_common.mcp_bridge import mount_mcp_endpoint
|
||||||
from option_mcp_common.risk_guard import (
|
from mcp_common.risk_guard import (
|
||||||
enforce_aggregate,
|
enforce_aggregate,
|
||||||
enforce_leverage,
|
enforce_leverage,
|
||||||
enforce_single_notional,
|
enforce_single_notional,
|
||||||
)
|
)
|
||||||
from option_mcp_common.server import build_app
|
from mcp_common.server import build_app
|
||||||
from pydantic import BaseModel, field_validator, model_validator
|
from pydantic import BaseModel, field_validator, model_validator
|
||||||
|
|
||||||
from mcp_deribit.client import DeribitClient
|
from mcp_deribit.client import DeribitClient
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ from unittest.mock import AsyncMock, MagicMock
|
|||||||
import pytest
|
import pytest
|
||||||
from fastapi.testclient import TestClient
|
from fastapi.testclient import TestClient
|
||||||
from mcp_deribit.server import create_app
|
from mcp_deribit.server import create_app
|
||||||
from option_mcp_common.auth import Principal, TokenStore
|
from mcp_common.auth import Principal, TokenStore
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ name = "mcp-hyperliquid"
|
|||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"option-mcp-common",
|
"mcp-common",
|
||||||
"fastapi>=0.115",
|
"fastapi>=0.115",
|
||||||
"uvicorn[standard]>=0.30",
|
"uvicorn[standard]>=0.30",
|
||||||
"httpx>=0.27",
|
"httpx>=0.27",
|
||||||
@@ -23,7 +23,7 @@ build-backend = "hatchling.build"
|
|||||||
packages = ["src/mcp_hyperliquid"]
|
packages = ["src/mcp_hyperliquid"]
|
||||||
|
|
||||||
[tool.uv.sources]
|
[tool.uv.sources]
|
||||||
option-mcp-common = { workspace = true }
|
mcp-common = { workspace = true }
|
||||||
|
|
||||||
[project.scripts]
|
[project.scripts]
|
||||||
mcp-hyperliquid = "mcp_hyperliquid.__main__:main"
|
mcp-hyperliquid = "mcp_hyperliquid.__main__:main"
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import json
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
import uvicorn
|
import uvicorn
|
||||||
from option_mcp_common.auth import load_token_store_from_files
|
from mcp_common.auth import load_token_store_from_files
|
||||||
|
|
||||||
from option_mcp_common.logging import configure_root_logging
|
from mcp_common.logging import configure_root_logging
|
||||||
|
|
||||||
from mcp_hyperliquid.client import HyperliquidClient
|
from mcp_hyperliquid.client import HyperliquidClient
|
||||||
from mcp_hyperliquid.server import create_app
|
from mcp_hyperliquid.server import create_app
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import datetime as _dt
|
|||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
import httpx
|
import httpx
|
||||||
from option_mcp_common import indicators as ind
|
from mcp_common import indicators as ind
|
||||||
|
|
||||||
BASE_LIVE = "https://api.hyperliquid.xyz"
|
BASE_LIVE = "https://api.hyperliquid.xyz"
|
||||||
BASE_TESTNET = "https://api.hyperliquid-testnet.xyz"
|
BASE_TESTNET = "https://api.hyperliquid-testnet.xyz"
|
||||||
|
|||||||
@@ -3,14 +3,14 @@ from __future__ import annotations
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
from fastapi import Depends, FastAPI, HTTPException
|
from fastapi import Depends, FastAPI, HTTPException
|
||||||
from option_mcp_common.auth import Principal, TokenStore, require_principal
|
from mcp_common.auth import Principal, TokenStore, require_principal
|
||||||
from option_mcp_common.mcp_bridge import mount_mcp_endpoint
|
from mcp_common.mcp_bridge import mount_mcp_endpoint
|
||||||
from option_mcp_common.risk_guard import (
|
from mcp_common.risk_guard import (
|
||||||
enforce_aggregate,
|
enforce_aggregate,
|
||||||
enforce_leverage,
|
enforce_leverage,
|
||||||
enforce_single_notional,
|
enforce_single_notional,
|
||||||
)
|
)
|
||||||
from option_mcp_common.server import build_app
|
from mcp_common.server import build_app
|
||||||
from pydantic import BaseModel, field_validator, model_validator
|
from pydantic import BaseModel, field_validator, model_validator
|
||||||
|
|
||||||
from mcp_hyperliquid.client import HyperliquidClient
|
from mcp_hyperliquid.client import HyperliquidClient
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ from unittest.mock import AsyncMock, MagicMock
|
|||||||
import pytest
|
import pytest
|
||||||
from fastapi.testclient import TestClient
|
from fastapi.testclient import TestClient
|
||||||
from mcp_hyperliquid.server import create_app
|
from mcp_hyperliquid.server import create_app
|
||||||
from option_mcp_common.auth import Principal, TokenStore
|
from mcp_common.auth import Principal, TokenStore
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ name = "mcp-macro"
|
|||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"option-mcp-common",
|
"mcp-common",
|
||||||
"fastapi>=0.115",
|
"fastapi>=0.115",
|
||||||
"uvicorn[standard]>=0.30",
|
"uvicorn[standard]>=0.30",
|
||||||
"httpx>=0.27",
|
"httpx>=0.27",
|
||||||
@@ -21,7 +21,7 @@ build-backend = "hatchling.build"
|
|||||||
packages = ["src/mcp_macro"]
|
packages = ["src/mcp_macro"]
|
||||||
|
|
||||||
[tool.uv.sources]
|
[tool.uv.sources]
|
||||||
option-mcp-common = { workspace = true }
|
mcp-common = { workspace = true }
|
||||||
|
|
||||||
[project.scripts]
|
[project.scripts]
|
||||||
mcp-macro = "mcp_macro.__main__:main"
|
mcp-macro = "mcp_macro.__main__:main"
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import json
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
import uvicorn
|
import uvicorn
|
||||||
from option_mcp_common.auth import load_token_store_from_files
|
from mcp_common.auth import load_token_store_from_files
|
||||||
|
|
||||||
from option_mcp_common.logging import configure_root_logging
|
from mcp_common.logging import configure_root_logging
|
||||||
|
|
||||||
from mcp_macro.server import create_app
|
from mcp_macro.server import create_app
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ from __future__ import annotations
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
from fastapi import Depends, FastAPI, HTTPException
|
from fastapi import Depends, FastAPI, HTTPException
|
||||||
from option_mcp_common.auth import Principal, TokenStore, require_principal
|
from mcp_common.auth import Principal, TokenStore, require_principal
|
||||||
from option_mcp_common.mcp_bridge import mount_mcp_endpoint
|
from mcp_common.mcp_bridge import mount_mcp_endpoint
|
||||||
from option_mcp_common.server import build_app
|
from mcp_common.server import build_app
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
from mcp_macro.fetchers import (
|
from mcp_macro.fetchers import (
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ from unittest.mock import AsyncMock, patch
|
|||||||
import pytest
|
import pytest
|
||||||
from fastapi.testclient import TestClient
|
from fastapi.testclient import TestClient
|
||||||
from mcp_macro.server import create_app
|
from mcp_macro.server import create_app
|
||||||
from option_mcp_common.auth import Principal, TokenStore
|
from mcp_common.auth import Principal, TokenStore
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ name = "mcp-sentiment"
|
|||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"option-mcp-common",
|
"mcp-common",
|
||||||
"fastapi>=0.115",
|
"fastapi>=0.115",
|
||||||
"uvicorn[standard]>=0.30",
|
"uvicorn[standard]>=0.30",
|
||||||
"httpx>=0.27",
|
"httpx>=0.27",
|
||||||
@@ -21,7 +21,7 @@ build-backend = "hatchling.build"
|
|||||||
packages = ["src/mcp_sentiment"]
|
packages = ["src/mcp_sentiment"]
|
||||||
|
|
||||||
[tool.uv.sources]
|
[tool.uv.sources]
|
||||||
option-mcp-common = { workspace = true }
|
mcp-common = { workspace = true }
|
||||||
|
|
||||||
[project.scripts]
|
[project.scripts]
|
||||||
mcp-sentiment = "mcp_sentiment.__main__:main"
|
mcp-sentiment = "mcp_sentiment.__main__:main"
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import json
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
import uvicorn
|
import uvicorn
|
||||||
from option_mcp_common.auth import load_token_store_from_files
|
from mcp_common.auth import load_token_store_from_files
|
||||||
|
|
||||||
from option_mcp_common.logging import configure_root_logging
|
from mcp_common.logging import configure_root_logging
|
||||||
|
|
||||||
from mcp_sentiment.server import create_app
|
from mcp_sentiment.server import create_app
|
||||||
|
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import logging
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
from fastapi import Depends, FastAPI, HTTPException
|
from fastapi import Depends, FastAPI, HTTPException
|
||||||
from option_mcp_common.auth import Principal, TokenStore, require_principal
|
from mcp_common.auth import Principal, TokenStore, require_principal
|
||||||
from option_mcp_common.mcp_bridge import mount_mcp_endpoint
|
from mcp_common.mcp_bridge import mount_mcp_endpoint
|
||||||
from option_mcp_common.server import build_app
|
from mcp_common.server import build_app
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ from unittest.mock import AsyncMock, patch
|
|||||||
import pytest
|
import pytest
|
||||||
from fastapi.testclient import TestClient
|
from fastapi.testclient import TestClient
|
||||||
from mcp_sentiment.server import create_app
|
from mcp_sentiment.server import create_app
|
||||||
from option_mcp_common.auth import Principal, TokenStore
|
from mcp_common.auth import Principal, TokenStore
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
|||||||
Reference in New Issue
Block a user