This project has been archived by its maintainers, and is no longer receiving any updates.
flintai-mcp
A local MCP server (stdio) that gives a coding agent read-only access to a Flint AI backend's AI-SPM issues, inventory, and remediation guidance so it can fix the flagged code.
It is a thin, authenticated REST client over the Flint AI API — no scanner runs locally and no backend changes are required. Everything valuable (AI-reasoned findings, rule-based issues, public-asset vuln enrichment, remediation guidance) is already computed server-side and served over the existing API / static assets.
The package is named for the platform (flintai-mcp) rather than AI-SPM
specifically: v1 ships the AI-SPM tools, but it is intended to grow to cover other
Flint AI product domains (guardrails, ROI, …) over time.
This repository is generated.
flintai-mcpis developed in SandboxAQ's internal monorepo and mirrored here (which also builds and publishes the wheel to PyPI). Please file issues here; seeCONTRIBUTING.mdto propose changes.
Phase 1: read-only, remote-backed. Fast verification of uncommitted fixes (a local scan + a synchronous backend "dry-run" endpoint) is a planned Phase 2 and is intentionally out of scope here.
Install & run
The idiomatic way is via the published wheel with uvx (no clone, no build step):
uvx flintai-mcp
Configuration
Set two environment variables:
| Variable | Meaning |
|---|---|
FLINTAI_API_KEY |
Flint AI API key (sk_...). |
FLINTAI_INSTANCE |
Flint instance base URL, e.g. https://app.flintai.dev. |
The instance URL is validated against a fail-closed host allowlist before any credential is attached.
The tenant and workspace are auto-discovered from the API key at startup — you do not configure any IDs. A key is pinned to exactly one tenant + active workspace by the backend.
The API key is only ever sent in the Authorization: ApiKey ... header and is
never logged.
Wiring into a coding agent
Add to your MCP client config (Claude Code .mcp.json, Cursor, etc.):
{
"mcpServers": {
"flintai-mcp": {
"command": "uvx",
"args": ["flintai-mcp"],
"env": {
"FLINTAI_API_KEY": "sk_...",
"FLINTAI_INSTANCE": "https://app.flintai.dev"
}
}
}
}
Tools
Fix-focused
get_context— show the resolved instance / tenant / workspace.list_issues(severity?, rule_id?, category?, search?, page_size?, cursor?)— list issues; paginated,page_sizecapped at 100.get_issue(issue_id)— issue detail + assembled rule-level remediation guidance- affected objects.
get_finding_detail(issue_id, object_id, detail_id?)— per-finding file path, code snippet, evidence, and inline remediation.find_issues_for_file(path, max_issues?)— issues whose findings reference a given working-tree file (client-side scan; matches by shared path suffix). The scan follows pagination but is bounded —max_issuesis capped at 500 and the call at 300 backend requests — and returns ascanblock reportingcomplete,issues_scanned,requestsanderrors.complete: falsemeans the caps were hit and the file may have findings this result omits; treat it as "unknown", not as "clean", and narrow the search withlist_issuesfilters instead.get_remediation_guidance(rule_name)— rule-level remediation markdown.
Inventory browse
list_models | list_agents | list_tools | list_mcp_servers(name?, severity?, supplier?, library?, page_size?, cursor?)get_model | get_agent | get_tool | get_mcp_server(asset_id)— detail plus attached issues, related assets, and code locations.
Remediation guidance
Rule-level remediation markdown has no dedicated API — it is served by the
instance's web server as static assets at {instance}/assets/docs-remediations/…
(the same origin and files the web UI reads). This server fetches them at runtime
over HTTP through the shared client and caches them per session; nothing is
bundled into the package. When a rule has no docs (or the assets origin is
unreachable), fall back to the per-finding remediation text from
get_finding_detail.
For offline development or tests, set FLINTAI_REMEDIATION_DIR to a local directory
laid out like the assets (rule-name-to-remediation-folder-map.json + per-rule
folders); the loader then reads from disk and never touches the network.
Development
- Layout:
src/flintai_mcp/(src/layout), tests undertest/. - Editable install:
pip install -e '.[dev]', then runflintai-mcp. - Docs are fetched from your instance at runtime; for offline work point
FLINTAI_REMEDIATION_DIRat a local copy of the docs directory.
Tests
pytest
Tests are hermetic (httpx MockTransport for the client and the remediation-docs
fetch, a fake client + FLINTAI_REMEDIATION_DIR for the tools), so they need no
network or live backend.
Metadata
Release files for flintai-mcp 0.1.0rc3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| flintai_mcp-0.1.0rc3.tar.gz | 32.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| flintai_mcp-0.1.0rc3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 58.0 kB
Release files / flintai_mcp-0.1.0rc3.tar.gz
| Download URL | flintai_mcp-0.1.0rc3.tar.gz |
|---|---|
| Size | 32.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a5a3e7cac085f4a81c0443d0cc9e9efc3f9d1e9d0c958c8535fec5c47594101b
|
|
BLAKE2b-256 checksum How to use checksums |
df52a853e743f29f9c547f8bb25fafc6f7fc6a271d1324e313cdd6a5f959f3b5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 20, 2026.
Transparency logRelease files / flintai_mcp-0.1.0rc3-py3-none-any.whl
| Download URL | flintai_mcp-0.1.0rc3-py3-none-any.whl |
|---|---|
| Size | 25.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3ed39ded36afbe86ca67892ceda8f80e357180d4e30bafe7d75fc3ca7dd353bf
|
|
BLAKE2b-256 checksum How to use checksums |
27bb5d69904bed9e75fbb5f373713ac0328a5933dfd708fb5188d77a12729595
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 20, 2026.
Transparency log