refactor(common): rename package option_mcp_common → mcp_common

This commit is contained in:
AdrianoDev
2026-04-27 17:37:35 +02:00
parent 563f4fc965
commit e888fc373d
48 changed files with 2394 additions and 74 deletions
+2 -2
View File
@@ -1,5 +1,5 @@
[project]
name = "option-mcp-common"
name = "mcp-common"
version = "0.1.0"
requires-python = ">=3.11"
dependencies = [
@@ -20,4 +20,4 @@ requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["src/option_mcp_common"]
packages = ["src/mcp_common"]
@@ -1,4 +1,4 @@
from option_mcp_common.models import (
from mcp_common.models import (
Event,
EventPriority,
EventType,
@@ -2,7 +2,7 @@
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")
host = optional_env("HOST", default="0.0.0.0")
@@ -27,7 +27,7 @@ import httpx
from fastapi import FastAPI, Request
from fastapi.responses import JSONResponse
from option_mcp_common.auth import TokenStore
from mcp_common.auth import TokenStore
MCP_PROTOCOL_VERSION = "2024-11-05"
@@ -14,7 +14,7 @@ from fastapi.exceptions import RequestValidationError
from fastapi.responses import JSONResponse, Response
from starlette.middleware.base import BaseHTTPMiddleware
from option_mcp_common.auth import TokenStore
from mcp_common.auth import TokenStore
Lifespan = Callable[[FastAPI], AbstractAsyncContextManager[None]]
+1 -1
View File
@@ -1,7 +1,7 @@
import pytest
from fastapi import Depends, FastAPI
from fastapi.testclient import TestClient
from option_mcp_common.auth import (
from mcp_common.auth import (
Principal,
TokenStore,
acl_requires,
+2 -2
View File
@@ -3,7 +3,7 @@
from __future__ import annotations
import pytest
from option_mcp_common.env_validation import (
from mcp_common.env_validation import (
MissingEnvError,
fail_fast_if_missing,
optional_env,
@@ -63,7 +63,7 @@ def test_summarize_does_not_leak_secrets(monkeypatch, caplog):
import logging
monkeypatch.setenv("API_KEY_FOO", "super-secret-token-123456")
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"])
log_text = "\n".join(caplog.messages)
assert "super-secret-token-123456" not in log_text
+1 -1
View File
@@ -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():
+1 -1
View File
@@ -1,7 +1,7 @@
import json
import logging
from option_mcp_common.logging import (
from mcp_common.logging import (
SecretsFilter,
configure_root_logging,
get_json_logger,
+3 -3
View File
@@ -2,9 +2,9 @@ from __future__ import annotations
from fastapi import Depends, FastAPI
from fastapi.testclient import TestClient
from option_mcp_common.auth import Principal, TokenStore, require_principal
from option_mcp_common.mcp_bridge import _derive_input_schemas, mount_mcp_endpoint
from option_mcp_common.server import build_app
from mcp_common.auth import Principal, TokenStore, require_principal
from mcp_common.mcp_bridge import _derive_input_schemas, mount_mcp_endpoint
from mcp_common.server import build_app
from pydantic import BaseModel
+1 -1
View File
@@ -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():
+1 -1
View File
@@ -4,7 +4,7 @@ from __future__ import annotations
import pytest
from fastapi import HTTPException
from option_mcp_common.risk_guard import (
from mcp_common.risk_guard import (
enforce_aggregate,
enforce_leverage,
enforce_single_notional,
+2 -2
View File
@@ -1,6 +1,6 @@
from fastapi.testclient import TestClient
from option_mcp_common.auth import Principal, TokenStore
from option_mcp_common.server import build_app
from mcp_common.auth import Principal, TokenStore
from mcp_common.server import build_app
def test_build_app_health():
+1 -1
View File
@@ -1,6 +1,6 @@
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):
+2 -2
View File
@@ -3,7 +3,7 @@ name = "mcp-alpaca"
version = "0.1.0"
requires-python = ">=3.11"
dependencies = [
"option-mcp-common",
"mcp-common",
"fastapi>=0.115",
"uvicorn[standard]>=0.30",
"httpx>=0.27",
@@ -23,7 +23,7 @@ build-backend = "hatchling.build"
packages = ["src/mcp_alpaca"]
[tool.uv.sources]
option-mcp-common = { workspace = true }
mcp-common = { workspace = true }
[project.scripts]
mcp-alpaca = "mcp_alpaca.__main__:main"
@@ -4,8 +4,8 @@ import json
import os
import uvicorn
from option_mcp_common.auth import load_token_store_from_files
from option_mcp_common.logging import configure_root_logging
from mcp_common.auth import load_token_store_from_files
from mcp_common.logging import configure_root_logging
from mcp_alpaca.client import AlpacaClient
from mcp_alpaca.server import create_app
+3 -3
View File
@@ -3,9 +3,9 @@ from __future__ import annotations
import os
from fastapi import Depends, HTTPException
from option_mcp_common.auth import Principal, TokenStore, require_principal
from option_mcp_common.mcp_bridge import mount_mcp_endpoint
from option_mcp_common.server import build_app
from mcp_common.auth import Principal, TokenStore, require_principal
from mcp_common.mcp_bridge import mount_mcp_endpoint
from mcp_common.server import build_app
from pydantic import BaseModel
from mcp_alpaca.client import AlpacaClient
+1 -1
View File
@@ -4,7 +4,7 @@ from unittest.mock import AsyncMock, MagicMock
import pytest
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
+2 -2
View File
@@ -3,7 +3,7 @@ name = "mcp-bybit"
version = "0.1.0"
requires-python = ">=3.11"
dependencies = [
"option-mcp-common",
"mcp-common",
"fastapi>=0.115",
"uvicorn[standard]>=0.30",
"httpx>=0.27",
@@ -22,7 +22,7 @@ build-backend = "hatchling.build"
packages = ["src/mcp_bybit"]
[tool.uv.sources]
option-mcp-common = { workspace = true }
mcp-common = { workspace = true }
[project.scripts]
mcp-bybit = "mcp_bybit.__main__:main"
+2 -2
View File
@@ -4,8 +4,8 @@ import json
import os
import uvicorn
from option_mcp_common.auth import load_token_store_from_files
from option_mcp_common.logging import configure_root_logging
from mcp_common.auth import load_token_store_from_files
from mcp_common.logging import configure_root_logging
from mcp_bybit.client import BybitClient
from mcp_bybit.server import create_app
+1 -1
View File
@@ -3,7 +3,7 @@ from __future__ import annotations
import asyncio
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
+3 -3
View File
@@ -3,9 +3,9 @@ from __future__ import annotations
import os
from fastapi import Depends, HTTPException
from option_mcp_common.auth import Principal, TokenStore, require_principal
from option_mcp_common.mcp_bridge import mount_mcp_endpoint
from option_mcp_common.server import build_app
from mcp_common.auth import Principal, TokenStore, require_principal
from mcp_common.mcp_bridge import mount_mcp_endpoint
from mcp_common.server import build_app
from pydantic import BaseModel
from mcp_bybit.client import BybitClient
+1 -1
View File
@@ -4,7 +4,7 @@ from unittest.mock import AsyncMock, MagicMock
import pytest
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
+2 -2
View File
@@ -3,7 +3,7 @@ name = "mcp-deribit"
version = "0.1.0"
requires-python = ">=3.11"
dependencies = [
"option-mcp-common",
"mcp-common",
"fastapi>=0.115",
"uvicorn[standard]>=0.30",
"httpx>=0.27",
@@ -21,7 +21,7 @@ build-backend = "hatchling.build"
packages = ["src/mcp_deribit"]
[tool.uv.sources]
option-mcp-common = { workspace = true }
mcp-common = { workspace = true }
[project.scripts]
mcp-deribit = "mcp_deribit.__main__:main"
@@ -4,13 +4,13 @@ import json
import os
import uvicorn
from option_mcp_common.auth import load_token_store_from_files
from option_mcp_common.env_validation import (
from mcp_common.auth import load_token_store_from_files
from mcp_common.env_validation import (
fail_fast_if_missing,
require_env,
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.server import create_app
@@ -5,7 +5,7 @@ from dataclasses import dataclass, field
from typing import Any
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_TESTNET = "https://test.deribit.com/api/v2"
@@ -761,7 +761,7 @@ class DeribitClient:
}
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_high = (entry_rules or {}).get("rsi_above", 65)
@@ -3,14 +3,14 @@ from __future__ import annotations
import os
from fastapi import Depends, FastAPI, HTTPException
from option_mcp_common.auth import Principal, TokenStore, require_principal
from option_mcp_common.mcp_bridge import mount_mcp_endpoint
from option_mcp_common.risk_guard import (
from mcp_common.auth import Principal, TokenStore, require_principal
from mcp_common.mcp_bridge import mount_mcp_endpoint
from mcp_common.risk_guard import (
enforce_aggregate,
enforce_leverage,
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 mcp_deribit.client import DeribitClient
@@ -5,7 +5,7 @@ from unittest.mock import AsyncMock, MagicMock
import pytest
from fastapi.testclient import TestClient
from mcp_deribit.server import create_app
from option_mcp_common.auth import Principal, TokenStore
from mcp_common.auth import Principal, TokenStore
@pytest.fixture
+2 -2
View File
@@ -3,7 +3,7 @@ name = "mcp-hyperliquid"
version = "0.1.0"
requires-python = ">=3.11"
dependencies = [
"option-mcp-common",
"mcp-common",
"fastapi>=0.115",
"uvicorn[standard]>=0.30",
"httpx>=0.27",
@@ -23,7 +23,7 @@ build-backend = "hatchling.build"
packages = ["src/mcp_hyperliquid"]
[tool.uv.sources]
option-mcp-common = { workspace = true }
mcp-common = { workspace = true }
[project.scripts]
mcp-hyperliquid = "mcp_hyperliquid.__main__:main"
@@ -4,9 +4,9 @@ import json
import os
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.server import create_app
@@ -7,7 +7,7 @@ import datetime as _dt
from typing import Any
import httpx
from option_mcp_common import indicators as ind
from mcp_common import indicators as ind
BASE_LIVE = "https://api.hyperliquid.xyz"
BASE_TESTNET = "https://api.hyperliquid-testnet.xyz"
@@ -3,14 +3,14 @@ from __future__ import annotations
import os
from fastapi import Depends, FastAPI, HTTPException
from option_mcp_common.auth import Principal, TokenStore, require_principal
from option_mcp_common.mcp_bridge import mount_mcp_endpoint
from option_mcp_common.risk_guard import (
from mcp_common.auth import Principal, TokenStore, require_principal
from mcp_common.mcp_bridge import mount_mcp_endpoint
from mcp_common.risk_guard import (
enforce_aggregate,
enforce_leverage,
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 mcp_hyperliquid.client import HyperliquidClient
@@ -5,7 +5,7 @@ from unittest.mock import AsyncMock, MagicMock
import pytest
from fastapi.testclient import TestClient
from mcp_hyperliquid.server import create_app
from option_mcp_common.auth import Principal, TokenStore
from mcp_common.auth import Principal, TokenStore
@pytest.fixture
+2 -2
View File
@@ -3,7 +3,7 @@ name = "mcp-macro"
version = "0.1.0"
requires-python = ">=3.11"
dependencies = [
"option-mcp-common",
"mcp-common",
"fastapi>=0.115",
"uvicorn[standard]>=0.30",
"httpx>=0.27",
@@ -21,7 +21,7 @@ build-backend = "hatchling.build"
packages = ["src/mcp_macro"]
[tool.uv.sources]
option-mcp-common = { workspace = true }
mcp-common = { workspace = true }
[project.scripts]
mcp-macro = "mcp_macro.__main__:main"
+2 -2
View File
@@ -4,9 +4,9 @@ import json
import os
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
+3 -3
View File
@@ -3,9 +3,9 @@ from __future__ import annotations
import os
from fastapi import Depends, FastAPI, HTTPException
from option_mcp_common.auth import Principal, TokenStore, require_principal
from option_mcp_common.mcp_bridge import mount_mcp_endpoint
from option_mcp_common.server import build_app
from mcp_common.auth import Principal, TokenStore, require_principal
from mcp_common.mcp_bridge import mount_mcp_endpoint
from mcp_common.server import build_app
from pydantic import BaseModel
from mcp_macro.fetchers import (
+1 -1
View File
@@ -5,7 +5,7 @@ from unittest.mock import AsyncMock, patch
import pytest
from fastapi.testclient import TestClient
from mcp_macro.server import create_app
from option_mcp_common.auth import Principal, TokenStore
from mcp_common.auth import Principal, TokenStore
@pytest.fixture
+2 -2
View File
@@ -3,7 +3,7 @@ name = "mcp-sentiment"
version = "0.1.0"
requires-python = ">=3.11"
dependencies = [
"option-mcp-common",
"mcp-common",
"fastapi>=0.115",
"uvicorn[standard]>=0.30",
"httpx>=0.27",
@@ -21,7 +21,7 @@ build-backend = "hatchling.build"
packages = ["src/mcp_sentiment"]
[tool.uv.sources]
option-mcp-common = { workspace = true }
mcp-common = { workspace = true }
[project.scripts]
mcp-sentiment = "mcp_sentiment.__main__:main"
@@ -4,9 +4,9 @@ import json
import os
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
@@ -4,9 +4,9 @@ import logging
import os
from fastapi import Depends, FastAPI, HTTPException
from option_mcp_common.auth import Principal, TokenStore, require_principal
from option_mcp_common.mcp_bridge import mount_mcp_endpoint
from option_mcp_common.server import build_app
from mcp_common.auth import Principal, TokenStore, require_principal
from mcp_common.mcp_bridge import mount_mcp_endpoint
from mcp_common.server import build_app
from pydantic import BaseModel
logger = logging.getLogger(__name__)
@@ -5,7 +5,7 @@ from unittest.mock import AsyncMock, patch
import pytest
from fastapi.testclient import TestClient
from mcp_sentiment.server import create_app
from option_mcp_common.auth import Principal, TokenStore
from mcp_common.auth import Principal, TokenStore
@pytest.fixture
Generated
+2320
View File
File diff suppressed because it is too large Load Diff