maeris 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. maeris-1.0.0/.dockerignore +27 -0
  2. maeris-1.0.0/.env.example +43 -0
  3. maeris-1.0.0/.gitignore +95 -0
  4. maeris-1.0.0/.mcp.json +8 -0
  5. maeris-1.0.0/Dockerfile +33 -0
  6. maeris-1.0.0/PKG-INFO +82 -0
  7. maeris-1.0.0/README.md +58 -0
  8. maeris-1.0.0/deploy.sh +33 -0
  9. maeris-1.0.0/docs/owasp-static-checklist.md +714 -0
  10. maeris-1.0.0/docs/owasp_categories.md +546 -0
  11. maeris-1.0.0/maeris-api-schema/apis +64 -0
  12. maeris-1.0.0/maeris-api-schema/security-scan +120 -0
  13. maeris-1.0.0/pyproject.toml +58 -0
  14. maeris-1.0.0/railway.toml +9 -0
  15. maeris-1.0.0/src/maeris_mcp/__init__.py +3 -0
  16. maeris-1.0.0/src/maeris_mcp/__main__.py +6 -0
  17. maeris-1.0.0/src/maeris_mcp/auth/__init__.py +6 -0
  18. maeris-1.0.0/src/maeris_mcp/auth/oauth.py +129 -0
  19. maeris-1.0.0/src/maeris_mcp/auth/token_store.py +228 -0
  20. maeris-1.0.0/src/maeris_mcp/cli/__init__.py +387 -0
  21. maeris-1.0.0/src/maeris_mcp/maeris/__init__.py +1 -0
  22. maeris-1.0.0/src/maeris_mcp/maeris/client.py +385 -0
  23. maeris-1.0.0/src/maeris_mcp/maeris/types.py +113 -0
  24. maeris-1.0.0/src/maeris_mcp/main.py +152 -0
  25. maeris-1.0.0/src/maeris_mcp/scanners/__init__.py +1 -0
  26. maeris-1.0.0/src/maeris_mcp/scanners/code_reader.py +180 -0
  27. maeris-1.0.0/src/maeris_mcp/scanners/dep_scanner.py +205 -0
  28. maeris-1.0.0/src/maeris_mcp/scanners/security_checks.json +4620 -0
  29. maeris-1.0.0/src/maeris_mcp/scanners/security_checks.py +117 -0
  30. maeris-1.0.0/src/maeris_mcp/schemas/__init__.py +1 -0
  31. maeris-1.0.0/src/maeris_mcp/schemas/api.py +191 -0
  32. maeris-1.0.0/src/maeris_mcp/schemas/component.py +173 -0
  33. maeris-1.0.0/src/maeris_mcp/schemas/project.py +119 -0
  34. maeris-1.0.0/src/maeris_mcp/schemas/registry.py +57 -0
  35. maeris-1.0.0/src/maeris_mcp/schemas/search.py +86 -0
  36. maeris-1.0.0/src/maeris_mcp/server.py +147 -0
  37. maeris-1.0.0/src/maeris_mcp/storage/__init__.py +1 -0
  38. maeris-1.0.0/src/maeris_mcp/storage/api_store.py +177 -0
  39. maeris-1.0.0/src/maeris_mcp/storage/security_store.py +243 -0
  40. maeris-1.0.0/src/maeris_mcp/tools/__init__.py +1 -0
  41. maeris-1.0.0/src/maeris_mcp/tools/api_scan.py +314 -0
  42. maeris-1.0.0/src/maeris_mcp/tools/api_tools.py +141 -0
  43. maeris-1.0.0/src/maeris_mcp/tools/get_schema.py +77 -0
  44. maeris-1.0.0/src/maeris_mcp/tools/maeris_sync.py +664 -0
  45. maeris-1.0.0/src/maeris_mcp/tools/process_data.py +520 -0
  46. maeris-1.0.0/src/maeris_mcp/tools/security_scan.py +721 -0
  47. maeris-1.0.0/src/maeris_mcp/types/__init__.py +55 -0
  48. maeris-1.0.0/src/maeris_mcp/types/api.py +164 -0
  49. maeris-1.0.0/src/maeris_mcp/types/protocol.py +96 -0
  50. maeris-1.0.0/src/maeris_mcp/types/security.py +108 -0
  51. maeris-1.0.0/start-local.sh +26 -0
  52. maeris-1.0.0/tests/__init__.py +1 -0
  53. maeris-1.0.0/uv.lock +1081 -0
@@ -0,0 +1,27 @@
1
+ # Binaries
2
+ bin/
3
+ *.exe
4
+ *.dll
5
+ *.so
6
+ *.dylib
7
+
8
+ # Test files
9
+ *_test.go
10
+
11
+ # IDE/Editor
12
+ .idea/
13
+ .vscode/
14
+ *.swp
15
+ *.swo
16
+
17
+ # Git
18
+ .git/
19
+ .gitignore
20
+
21
+ # Documentation
22
+ LICENSE
23
+
24
+ # OS files
25
+ .DS_Store
26
+ Thumbs.db
27
+ *.md
@@ -0,0 +1,43 @@
1
+ # Maeris MCP Server - Environment Variables
2
+ # Copy this file to .env and fill in your values.
3
+
4
+ # =============================================================================
5
+ # FRONTEND & BACKEND URLs
6
+ # =============================================================================
7
+
8
+ # Maeris App (Frontend) - Where the browser opens for authentication.
9
+ # The app must implement two routes used by `maeris-mcp login`:
10
+ # GET /auth/login - initiates Firebase auth (receives client_id, redirect_uri, state)
11
+ # GET /auth/callback - receives Firebase redirect, stores token keyed by state
12
+ # GET /api/auth/poll - polled by MCP; returns { token, token_type, ready } or { error } or 404 while pending
13
+ # Dev: http://localhost:3000
14
+ # Prod: https://app.maeris.com (or your production frontend URL)
15
+
16
+ MAERIS_APP_URL=http://localhost:3000
17
+
18
+ # Maeris API (Backend) - Where API calls are made
19
+ # Dev: http://localhost:5000 (or your backend dev port)
20
+ # Prod: https://mirabilis-dev.up.railway.app
21
+
22
+ MAERIS_API_URL=http://localhost:5000
23
+
24
+ # =============================================================================
25
+ # SERVER CONFIGURATION
26
+ # =============================================================================
27
+
28
+ # HTTP port (Railway sets this automatically, no need to configure)
29
+ # PORT=8080
30
+
31
+ # Log level for server output (DEBUG, INFO, WARNING, ERROR)
32
+ MAERIS_LOG_LEVEL=DEBUG
33
+
34
+ # =============================================================================
35
+ # API ENDPOINTS
36
+ # =============================================================================
37
+
38
+ # Security scan API paths (override if your backend differs)
39
+ MAERIS_SECURITY_SCAN_PATH=/security/scans
40
+ MAERIS_SECURITY_FINDINGS_PATH=/security/findings
41
+
42
+ # Directory for storing security scan reports (optional, defaults to ./security-reports)
43
+ # MAERIS_REPORTS_DIR=/path/to/custom/reports/directory
@@ -0,0 +1,95 @@
1
+ # Binaries
2
+ bin/
3
+ *.exe
4
+ *.exe~
5
+ *.dll
6
+ *.so
7
+ *.dylib
8
+
9
+ # Test binary
10
+ *.test
11
+
12
+ # Output of the go coverage tool
13
+ *.out
14
+
15
+ # Go workspace file
16
+ go.work
17
+
18
+ # IDE
19
+ .idea/
20
+ .vscode/
21
+ *.swp
22
+ *.swo
23
+
24
+ # OS
25
+ .DS_Store
26
+ Thumbs.db
27
+
28
+ # Python
29
+ __pycache__/
30
+ *.py[cod]
31
+ *$py.class
32
+ *.so
33
+ .Python
34
+ build/
35
+ develop-eggs/
36
+ dist/
37
+ downloads/
38
+ eggs/
39
+ .eggs/
40
+ lib/
41
+ lib64/
42
+ parts/
43
+ sdist/
44
+ var/
45
+ wheels/
46
+ *.egg-info/
47
+ .installed.cfg
48
+ *.egg
49
+
50
+ # Virtual environments
51
+ venv/
52
+ .venv/
53
+ ENV/
54
+ env/
55
+
56
+ # PyInstaller
57
+ *.manifest
58
+ *.spec
59
+
60
+ # Installer logs
61
+ pip-log.txt
62
+ pip-delete-this-directory.txt
63
+
64
+ # Unit test / coverage
65
+ htmlcov/
66
+ .tox/
67
+ .nox/
68
+ .coverage
69
+ .coverage.*
70
+ .cache
71
+ nosetests.xml
72
+ coverage.xml
73
+ *.cover
74
+ *.py,cover
75
+ .hypothesis/
76
+ .pytest_cache/
77
+
78
+ # Mypy
79
+ .mypy_cache/
80
+ .dmypy.json
81
+ dmypy.json
82
+
83
+ # Ruff
84
+ .ruff_cache/
85
+
86
+ # Jupyter
87
+ .ipynb_checkpoints/
88
+
89
+ # pyenv
90
+ .python-version
91
+ security-reports/
92
+
93
+ # Environment variables
94
+ .env
95
+ *.__pycache__
maeris-1.0.0/.mcp.json ADDED
@@ -0,0 +1,8 @@
1
+ {
2
+ "mcpServers": {
3
+ "maeris-mcp": {
4
+ "type": "streamable-http",
5
+ "url": "https://maeris-mcp-dev.up.railway.app/mcp/"
6
+ }
7
+ }
8
+ }
@@ -0,0 +1,33 @@
1
+ # Build stage
2
+ FROM python:3.11-slim AS builder
3
+
4
+ WORKDIR /app
5
+
6
+ # Install uv
7
+ RUN pip install uv
8
+
9
+ # Copy project files
10
+ COPY pyproject.toml ./
11
+ COPY src ./src
12
+
13
+ # Install the package (non-editable)
14
+ RUN uv pip install --system .
15
+
16
+ # Runtime stage
17
+ FROM python:3.11-slim
18
+
19
+ WORKDIR /app
20
+
21
+ # Copy installed packages and source
22
+ COPY --from=builder /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages
23
+ COPY --from=builder /app/src ./src
24
+
25
+ # Railway and Cloud Run both set PORT automatically, default to 8080
26
+ ENV PORT=8080
27
+ ENV PYTHONPATH=/app/src
28
+
29
+ # Expose the port
30
+ EXPOSE 8080
31
+
32
+ # Run in HTTP mode, using PORT env variable
33
+ CMD ["sh", "-c", "python -m maeris_mcp --mode=http --port=${PORT}"]
maeris-1.0.0/PKG-INFO ADDED
@@ -0,0 +1,82 @@
1
+ Metadata-Version: 2.4
2
+ Name: maeris
3
+ Version: 1.0.0
4
+ Summary: MCP server for extracting, analyzing, and documenting React/frontend APIs
5
+ Author-email: Anant Mathur <anant.mathur@autoelight.com>
6
+ License: MIT
7
+ Requires-Python: >=3.11
8
+ Requires-Dist: click>=8.1
9
+ Requires-Dist: httpx>=0.27
10
+ Requires-Dist: mcp<2.0.0,>=1.0.0
11
+ Requires-Dist: pydantic<3.0,>=2.5
12
+ Requires-Dist: pyjwt>=2.8
13
+ Requires-Dist: python-dotenv>=1.0.0
14
+ Requires-Dist: starlette>=0.36
15
+ Requires-Dist: structlog>=24.1
16
+ Requires-Dist: uvicorn>=0.27
17
+ Provides-Extra: dev
18
+ Requires-Dist: mypy>=1.8; extra == 'dev'
19
+ Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
20
+ Requires-Dist: pytest-cov>=4.1; extra == 'dev'
21
+ Requires-Dist: pytest>=8.0; extra == 'dev'
22
+ Requires-Dist: ruff>=0.2; extra == 'dev'
23
+ Description-Content-Type: text/markdown
24
+
25
+ # Maeris
26
+
27
+ Security and API scanning for your codebase, powered by Claude.
28
+
29
+ Maeris is an MCP (Model Context Protocol) server that gives Claude the ability to scan your code for security vulnerabilities, extract API definitions, and push results to the [Maeris Portal](https://autoe-light-dev.up.railway.app).
30
+
31
+ ## Quick Start
32
+
33
+ **1. Install**
34
+ ```bash
35
+ pip install maeris
36
+ ```
37
+
38
+ **2. Register the MCP server for your project** (run from your project root)
39
+ ```bash
40
+ maeris init
41
+ ```
42
+
43
+ **3. Restart Claude Code**
44
+
45
+ That's it. Claude can now scan your codebase for security vulnerabilities and API calls.
46
+
47
+ ## Authentication
48
+
49
+ Some features (like pushing scan results to the Maeris Portal) require an account.
50
+
51
+ ```bash
52
+ maeris login
53
+ ```
54
+
55
+ This opens your browser to authenticate. Credentials are stored per-project so each repo is fully isolated.
56
+
57
+ ## Commands
58
+
59
+ | Command | Description |
60
+ |---|---|
61
+ | `maeris init` | Register the MCP server for the current repository |
62
+ | `maeris login` | Authenticate with Maeris Portal |
63
+ | `maeris logout` | Sign out and remove stored credentials |
64
+ | `maeris status` | Show current authentication status |
65
+ | `maeris switch-app` | Switch the active application |
66
+
67
+ ## What Claude Can Do
68
+
69
+ Once the MCP server is running, ask Claude to:
70
+
71
+ - **Scan for vulnerabilities** — `"Scan this codebase for security issues"`
72
+ - **Extract APIs** — `"Extract all API calls from the src/ folder"`
73
+ - **Push to Maeris** — `"Push the scan results to Maeris"`
74
+
75
+ ## Requirements
76
+
77
+ - Python 3.11+
78
+ - [Claude Code](https://claude.ai/code)
79
+
80
+ ## License
81
+
82
+ MIT
maeris-1.0.0/README.md ADDED
@@ -0,0 +1,58 @@
1
+ # Maeris
2
+
3
+ Security and API scanning for your codebase, powered by Claude.
4
+
5
+ Maeris is an MCP (Model Context Protocol) server that gives Claude the ability to scan your code for security vulnerabilities, extract API definitions, and push results to the [Maeris Portal](https://autoe-light-dev.up.railway.app).
6
+
7
+ ## Quick Start
8
+
9
+ **1. Install**
10
+ ```bash
11
+ pip install maeris
12
+ ```
13
+
14
+ **2. Register the MCP server for your project** (run from your project root)
15
+ ```bash
16
+ maeris init
17
+ ```
18
+
19
+ **3. Restart Claude Code**
20
+
21
+ That's it. Claude can now scan your codebase for security vulnerabilities and API calls.
22
+
23
+ ## Authentication
24
+
25
+ Some features (like pushing scan results to the Maeris Portal) require an account.
26
+
27
+ ```bash
28
+ maeris login
29
+ ```
30
+
31
+ This opens your browser to authenticate. Credentials are stored per-project so each repo is fully isolated.
32
+
33
+ ## Commands
34
+
35
+ | Command | Description |
36
+ |---|---|
37
+ | `maeris init` | Register the MCP server for the current repository |
38
+ | `maeris login` | Authenticate with Maeris Portal |
39
+ | `maeris logout` | Sign out and remove stored credentials |
40
+ | `maeris status` | Show current authentication status |
41
+ | `maeris switch-app` | Switch the active application |
42
+
43
+ ## What Claude Can Do
44
+
45
+ Once the MCP server is running, ask Claude to:
46
+
47
+ - **Scan for vulnerabilities** — `"Scan this codebase for security issues"`
48
+ - **Extract APIs** — `"Extract all API calls from the src/ folder"`
49
+ - **Push to Maeris** — `"Push the scan results to Maeris"`
50
+
51
+ ## Requirements
52
+
53
+ - Python 3.11+
54
+ - [Claude Code](https://claude.ai/code)
55
+
56
+ ## License
57
+
58
+ MIT
maeris-1.0.0/deploy.sh ADDED
@@ -0,0 +1,33 @@
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ # Configuration - update these values
5
+ PROJECT_ID="future-lane-478716-f2"
6
+ REGION="us-central1"
7
+ SERVICE_NAME="maeris-mcp"
8
+ IMAGE_NAME="gcr.io/${PROJECT_ID}/${SERVICE_NAME}"
9
+
10
+ echo "==> Deploying ${SERVICE_NAME} to Cloud Run"
11
+ echo " Project: ${PROJECT_ID}"
12
+ echo " Region: ${REGION}"
13
+
14
+ # Build the container image
15
+ echo "==> Building container image..."
16
+ podman build -t ${IMAGE_NAME} .
17
+
18
+ # Push to Google Container Registry
19
+ echo "==> Pushing to GCR..."
20
+ podman push ${IMAGE_NAME}
21
+
22
+ # Deploy to Cloud Run
23
+ echo "==> Deploying to Cloud Run..."
24
+ gcloud run deploy ${SERVICE_NAME} \
25
+ --image ${IMAGE_NAME} \
26
+ --platform managed \
27
+ --region ${REGION} \
28
+ --project ${PROJECT_ID} \
29
+ --allow-unauthenticated \
30
+ --port 8080
31
+
32
+ echo "==> Deployment complete!"
33
+ gcloud run services describe ${SERVICE_NAME} --region ${REGION} --project ${PROJECT_ID} --format='value(status.url)'