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.
- maeris-1.0.0/.dockerignore +27 -0
- maeris-1.0.0/.env.example +43 -0
- maeris-1.0.0/.gitignore +95 -0
- maeris-1.0.0/.mcp.json +8 -0
- maeris-1.0.0/Dockerfile +33 -0
- maeris-1.0.0/PKG-INFO +82 -0
- maeris-1.0.0/README.md +58 -0
- maeris-1.0.0/deploy.sh +33 -0
- maeris-1.0.0/docs/owasp-static-checklist.md +714 -0
- maeris-1.0.0/docs/owasp_categories.md +546 -0
- maeris-1.0.0/maeris-api-schema/apis +64 -0
- maeris-1.0.0/maeris-api-schema/security-scan +120 -0
- maeris-1.0.0/pyproject.toml +58 -0
- maeris-1.0.0/railway.toml +9 -0
- maeris-1.0.0/src/maeris_mcp/__init__.py +3 -0
- maeris-1.0.0/src/maeris_mcp/__main__.py +6 -0
- maeris-1.0.0/src/maeris_mcp/auth/__init__.py +6 -0
- maeris-1.0.0/src/maeris_mcp/auth/oauth.py +129 -0
- maeris-1.0.0/src/maeris_mcp/auth/token_store.py +228 -0
- maeris-1.0.0/src/maeris_mcp/cli/__init__.py +387 -0
- maeris-1.0.0/src/maeris_mcp/maeris/__init__.py +1 -0
- maeris-1.0.0/src/maeris_mcp/maeris/client.py +385 -0
- maeris-1.0.0/src/maeris_mcp/maeris/types.py +113 -0
- maeris-1.0.0/src/maeris_mcp/main.py +152 -0
- maeris-1.0.0/src/maeris_mcp/scanners/__init__.py +1 -0
- maeris-1.0.0/src/maeris_mcp/scanners/code_reader.py +180 -0
- maeris-1.0.0/src/maeris_mcp/scanners/dep_scanner.py +205 -0
- maeris-1.0.0/src/maeris_mcp/scanners/security_checks.json +4620 -0
- maeris-1.0.0/src/maeris_mcp/scanners/security_checks.py +117 -0
- maeris-1.0.0/src/maeris_mcp/schemas/__init__.py +1 -0
- maeris-1.0.0/src/maeris_mcp/schemas/api.py +191 -0
- maeris-1.0.0/src/maeris_mcp/schemas/component.py +173 -0
- maeris-1.0.0/src/maeris_mcp/schemas/project.py +119 -0
- maeris-1.0.0/src/maeris_mcp/schemas/registry.py +57 -0
- maeris-1.0.0/src/maeris_mcp/schemas/search.py +86 -0
- maeris-1.0.0/src/maeris_mcp/server.py +147 -0
- maeris-1.0.0/src/maeris_mcp/storage/__init__.py +1 -0
- maeris-1.0.0/src/maeris_mcp/storage/api_store.py +177 -0
- maeris-1.0.0/src/maeris_mcp/storage/security_store.py +243 -0
- maeris-1.0.0/src/maeris_mcp/tools/__init__.py +1 -0
- maeris-1.0.0/src/maeris_mcp/tools/api_scan.py +314 -0
- maeris-1.0.0/src/maeris_mcp/tools/api_tools.py +141 -0
- maeris-1.0.0/src/maeris_mcp/tools/get_schema.py +77 -0
- maeris-1.0.0/src/maeris_mcp/tools/maeris_sync.py +664 -0
- maeris-1.0.0/src/maeris_mcp/tools/process_data.py +520 -0
- maeris-1.0.0/src/maeris_mcp/tools/security_scan.py +721 -0
- maeris-1.0.0/src/maeris_mcp/types/__init__.py +55 -0
- maeris-1.0.0/src/maeris_mcp/types/api.py +164 -0
- maeris-1.0.0/src/maeris_mcp/types/protocol.py +96 -0
- maeris-1.0.0/src/maeris_mcp/types/security.py +108 -0
- maeris-1.0.0/start-local.sh +26 -0
- maeris-1.0.0/tests/__init__.py +1 -0
- 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
|
maeris-1.0.0/.gitignore
ADDED
|
@@ -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
maeris-1.0.0/Dockerfile
ADDED
|
@@ -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)'
|