pyproject.toml•2.27 kB
[project]
name = "mcp-oauth"
version = "0.1.0"
description = "A modular FastMCP server and client implementation with Auth0 OAuth 2.0 authentication"
readme = "README.md"
requires-python = ">=3.10"
dependencies = [
# FastMCP and OAuth dependencies (server)
"fastmcp>=2.0.0",
"uvicorn>=0.24.0",
"fastapi>=0.104.0",
"python-multipart>=0.0.6",
# Auth and security
"pyjwt>=2.8.0",
"cryptography>=41.0.0",
# Configuration and environment
"python-dotenv>=1.0.0",
"pydantic>=2.4.0",
# HTTP client (shared by client and server)
"httpx>=0.25.0",
# Web framework utilities
"starlette>=0.27.0",
]
[project.optional-dependencies]
dev = [
"pytest>=7.4.0",
"pytest-asyncio>=0.21.0",
"black>=23.9.0",
"isort>=5.12.0",
"ruff>=0.1.0",
]
server = [
# Server-specific dependencies
"uvicorn[standard]>=0.24.0",
]
client = [
# Client-specific dependencies
"mcp>=1.0.0", # Official MCP client library
]
[project.scripts]
# Entry points for installed package
mcp-server = "server.app:main"
mcp-client = "client.cli:cli_main"
mcp-demo = "demos.basic_demo:main"
[tool.uv]
dev-dependencies = [
"pytest>=7.4.0",
"pytest-asyncio>=0.21.0",
"black>=23.9.0",
"isort>=5.12.0",
"ruff>=0.1.0",
]
[tool.black]
line-length = 88
target-version = ['py310']
include = '\.pyi?$'
extend-exclude = '''
/(
# directories
\.eggs
| \.git
| \.hg
| \.mypy_cache
| \.tox
| \.venv
| build
| dist
)/
'''
[tool.isort]
profile = "black"
multi_line_output = 3
include_trailing_comma = true
force_grid_wrap = 0
use_parentheses = true
ensure_newline_before_comments = true
line_length = 88
[tool.ruff]
line-length = 88
target-version = "py310"
select = [
"E", # pycodestyle errors
"W", # pycodestyle warnings
"F", # pyflakes
"I", # isort
"B", # flake8-bugbear
"C4", # flake8-comprehensions
"UP", # pyupgrade
]
ignore = [
"E501", # line too long, handled by black
"B008", # do not perform function calls in argument defaults
"C901", # too complex
]
[tool.ruff.per-file-ignores]
"__init__.py" = ["F401"]
[tool.pytest.ini_options]
minversion = "6.0"
addopts = "-ra -q --strict-markers"
testpaths = [
"tests",
]
asyncio_mode = "auto"