Commit Graph

44 Commits

Author SHA1 Message Date
7890d79bce feat: add rich test runner with progress display
- Add scripts/test-runner.py with rich progress bars and fail-fast behavior
- Add rich>=13.0.0 as dev dependency
- Update Makefile: `make test` now runs all tests (unit + integration)
- Test runner shows live progress, current test, and summary

Now `make test` runs both unit and integration tests with docker
containers, matching the docker-service-architecture skill guidelines.
2025-12-30 21:09:24 -05:00
9d73ac73b1 docs: add docker-service-architecture adaptation plan 2025-12-30 20:54:47 -05:00
c9e51c71d8 docs: update CLAUDE.md with new project structure 2025-12-30 20:49:59 -05:00
3d68de4c54 refactor: update Makefile for new deploy/ structure 2025-12-30 20:48:06 -05:00
f921412f01 feat: add test isolation scripts with dynamic port discovery
- Add get-test-instance-id.sh for branch-based container isolation
- Add run-integration-tests.sh for full test lifecycle management
- Update integration tests to read service URLs from environment
  variables (GRIST_MCP_URL, MOCK_GRIST_URL) with fallback defaults
2025-12-30 19:11:04 -05:00
757afb3c41 refactor: move docker-compose files to deploy/ directory structure
Reorganize Docker configuration into environment-specific directories:
- deploy/dev/: Development with hot reload and source mounting
- deploy/test/: Ephemeral testing with branch isolation and dynamic ports
- deploy/prod/: Production with resource limits, logging, and restart policy

Key improvements in test compose:
- Dynamic ports (no fixed 3000/8484) for parallel test runs
- Branch-isolated container/network names via TEST_INSTANCE_ID
- service_healthy condition instead of service_started
- Increased retry counts for stability
2025-12-30 17:57:09 -05:00
e235e998e4 refactor: organize tests into unit/ and integration/ directories
Move unit tests from tests/ to tests/unit/ for clearer separation
from integration tests. Update pyproject.toml testpaths and Makefile
test target to reflect the new structure.
2025-12-30 17:38:46 -05:00
c57e71b92a fix: use pure ASGI app for SSE transport compatibility
- Replace Starlette routing with direct ASGI dispatcher to avoid
  double-response issues with SSE transport
- Simplify integration test fixtures by removing async client fixture
- Consolidate integration tests into single test functions per file
  to prevent SSE connection cleanup issues between tests
- Fix add_records assertion to expect 'inserted_ids' (actual API response)
2025-12-30 15:05:32 -05:00
987b6d087a feat: add Makefile for test orchestration 2025-12-30 11:48:19 -05:00
e6f737e2a3 feat: add tool integration tests with Grist API validation 2025-12-30 11:46:34 -05:00
5607946441 feat: add MCP protocol compliance tests 2025-12-30 11:44:18 -05:00
3ecd3303ce feat: add integration test fixtures with MCP client 2025-12-30 11:43:23 -05:00
6060e19b31 feat: add docker-compose for integration testing 2025-12-30 11:39:32 -05:00
ee385d82ad feat: add integration test configuration 2025-12-30 11:38:29 -05:00
7acd602ffd feat: add mock Grist server for integration testing 2025-12-30 11:37:36 -05:00
69ec6ef0e2 feat: add /health endpoint for service readiness checks 2025-12-30 11:29:46 -05:00
f63115c8b3 docs: add pre-deployment testing implementation plan 2025-12-30 11:09:56 -05:00
6c22e1bb02 docs: add pre-deployment testing design 2025-12-30 11:07:28 -05:00
234c8649f6 docs: add project instructions for Claude Code 2025-12-29 22:05:22 -05:00
93d43eac99 docs: update README for SSE transport
- Update running instructions to show SSE endpoints
- Replace stdio-based MCP client config with URL-based SSE config
- Add examples for local and remote deployment
2025-12-29 22:03:23 -05:00
906a6e3b80 chore: add .dockerignore for cleaner builds 2025-12-29 20:47:29 -05:00
24436ccc01 fix: correct file ownership for non-root user in Docker
Add --chown=appuser:appuser to COPY commands in runtime stage to ensure
the appuser can read the copied files. Without this, Python fails with
PermissionError when importing modules.
2025-12-29 20:47:21 -05:00
cb5604a6a7 docs: add Docker deployment instructions 2025-12-29 20:20:01 -05:00
642fa2c009 feat: add CI workflow for Docker builds 2025-12-29 20:16:44 -05:00
2de5f81871 feat: add .env.example template 2025-12-29 20:13:07 -05:00
abb22fc886 feat: add docker-compose.yaml 2025-12-29 20:10:29 -05:00
013d1f88a2 feat: add multi-stage Dockerfile 2025-12-29 20:06:38 -05:00
374e4f669b feat: replace stdio with SSE transport 2025-12-29 20:02:49 -05:00
4229179e71 feat: add SSE transport dependencies 2025-12-29 19:44:00 -05:00
6782861cff docs: add Docker deployment implementation plan 2025-12-29 19:37:59 -05:00
efe3ddf27b docs: add Docker deployment design
Design for containerizing grist-mcp with:
- Multi-stage Dockerfile with Python 3.14
- SSE transport for remote server operation
- Docker Compose for local deployment
- Single adaptive CI workflow for Gitea and GitHub
- Semantic version tagging
2025-12-29 19:35:54 -05:00
ed612694fe fix: add security hardening and documentation for deployment
- Add document validation to prevent NoneType crash when document not configured
- Add SQL query validation (SELECT only, no multi-statement)
- Add 30-second HTTP request timeout
- Fix filter parameter JSON encoding for get_records
- Add return type annotation to get_document
- Add tests for document lookup and SQL validation
- Add comprehensive README with usage instructions
2025-12-29 18:42:36 -05:00
f716e5d37e fix: implement token-based authentication at server startup
- Server now authenticates from GRIST_MCP_TOKEN env var or token parameter
- Removed unused code (_set_agent, nonlocal check)
- Added AuthError handling in main.py
- Updated test to pass token explicitly
2025-12-03 15:07:06 -05:00
1ed5554944 feat: add MCP server with all tools registered 2025-12-03 15:00:48 -05:00
9b759cfe76 feat: add schema tools (create_table, add_column, modify_column, delete_column) 2025-12-03 14:53:17 -05:00
eb0bf3eaf6 feat: add write tools (add_records, update_records, delete_records) 2025-12-03 14:49:32 -05:00
0a6f699d30 feat: add read tools (list_tables, describe_table, get_records, sql_query) 2025-12-03 14:45:55 -05:00
a3167bec63 feat: add list_documents discovery tool 2025-12-03 14:42:45 -05:00
c4ddc3b1b0 feat: add Grist API client 2025-12-03 14:34:37 -05:00
716de523d8 feat: add authentication and authorization 2025-12-03 14:30:32 -05:00
43fbd2dced feat: add config loading with env var substitution 2025-12-03 14:26:53 -05:00
2b79ab2f32 feat: initialize project with uv and dependencies 2025-12-03 14:23:00 -05:00
95f2f24b1e docs: add detailed implementation plan 2025-12-03 14:18:19 -05:00
c1d29f1a33 Add grist-mcp design document 2025-12-03 14:01:10 -05:00