[build-system]
requires = ["pdm-backend"]
build-backend = "pdm.backend"
[project]
name = "langsmith-mcp-server"
version = "0.0.10"
description = "MCP server for Langsmith SDK integration"
license = "MIT"
readme = "README.md"
authors = [
{ name = "Marco Perini", email = "oss@langchain.dev" }
]
requires-python = ">=3.10"
dependencies = [
"fastmcp>=2.13",
"langsmith>=0.4.42",
"langchain-core>=0.3.56",
"uvicorn>=0.34.0"
]
[project.scripts]
langsmith-mcp-server = "langsmith_mcp_server.server:main"
[dependency-groups]
test = [
"pytest>=8.0.0",
"ruff>=0.9.4",
"mypy>=1.8.0",
"pytest-socket>=0.7.0",
"pytest-asyncio>=0.26.0",
"types-setuptools>=69.0.0",
"websockets>=15.0.1",
"pytest-timeout>=2.4.0"
]
[project.urls]
"Homepage" = "https://github.com/langchain-ai/langsmith-mcp-server"
"Bug Tracker" = "https://github.com/langchain-ai/langsmith-mcp-server/issues"
[tool.pytest.ini_options]
minversion = "8.0"
# -ra: Report all extra test outcomes (passed, skipped, failed, etc.)
# -q: Enable quiet mode for less cluttered output
# -v: Enable verbose output to display detailed test names and statuses
# --durations=5: Show the 10 slowest tests after the run (useful for performance tuning)
addopts = "-ra -q -v --durations=5"
testpaths = ["tests"]
python_files = ["test_*.py"]
python_functions = ["test_*"]
asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "function"
[tool.ruff]
line-length = 100
target-version = "py310"
[tool.ruff.lint]
select = [
"E", # pycodestyle errors
"W", # pycodestyle warnings
"F", # pyflakes
"I", # isort
"B", # flake8-bugbear
]
ignore = [
"E501", # line-length
]
[tool.mypy]
python_version = "3.11"
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = true
check_untyped_defs = true