Crossfire
Transparent MCP and A2A proxy with real-time threat detection and a local dashboard.
Repository: github.com/Yugandhar-G/crossfire
Requirements
- Python 3.10+
- Node 18+ (only to build the dashboard UI from this repo)
Install
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e .
Optional Gemini-assisted analysis:
pip install -e ".[gemini]"
Build the dashboard once so the server can serve the full UI (default http://localhost:9999):
cd dashboard && npm ci && npm run build && cd ..
pip install crossfire-mcp (PyPI)
The published wheel installs only the runtime:
| Shipped | Purpose |
|---|---|
proxy/ |
MCP/A2A proxy, CLI, detectors, installer |
server/ |
Dashboard API (FastAPI) + bundled web_dist/ UI when you build before release |
shared/ |
Event schema (Python) |
Console scripts: crossfire, crossfire-proxy.
Not included in the wheel or PyPI sdist: tests/, demo/, dashboard/ source, or other repo-only files. (Runtime Python remains readable in site-packages, like any interpreter package.)
Usage
crossfire install # rewrite MCP configs to route through the proxy
crossfire dashboard # API + static UI
Open http://localhost:9999. Smoke-test without MCP: crossfire ping (add --threat for a sample critical event).
Diagnostics: crossfire doctor.
Configuration
crossfire.yamlor.crossfire.yamlin the project (see repo root for an example).CROSSFIRE_CONFIG— absolute path to config when the MCP process cwd is not the repo.CROSSFIRE_DASHBOARD_URL— dashboard base URL if not on localhost:9999.GOOGLE_API_KEYorCROSSFIRE_GEMINI_KEY— optional; requires thegeminiextra.
The stdio proxy applies to MCP servers launched with a command in config. URL-only MCP entries are not proxied.
npm / npx
The npm package is a thin wrapper: postinstall runs pip / pipx to install crossfire-mcp from PyPI (Python 3.10+ on PATH). In a git clone, postinstall uses pip install -e . when pyproject.toml is present.
There is no npx install … — use one of:
npm install -g crossfire-mcp
crossfire doctor
npx --yes crossfire-mcp@latest -- doctor
npx --yes crossfire-mcp@latest -- dashboard
If postinstall warns or the crossfire command is missing, run pip install crossfire-mcp or pipx install crossfire-mcp, then ensure ~/.local/bin (pip --user) or your pipx bin directory is on PATH. The npm shim also falls back to python3 -m proxy … when the package is installed but the crossfire script is not on PATH (common with conda or npx PATH ordering).
Releases: publish the crossfire-mcp wheel to PyPI (python -m build, twine upload dist/*) and keep package.json / pyproject.toml versions in sync with npm publish.
License
MIT — see LICENSE.
Metadata
Release files for crossfire-mcp 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| crossfire_mcp-0.1.4.tar.gz | 262.4 kB | Without provenance | Details for crossfire_mcp-0.1.4.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| crossfire_mcp-0.1.4-py3-none-any.whl | Python 3 | none | any | Details for crossfire_mcp-0.1.4-py3-none-any.whl |
Total release size: 544.5 kB
Release files / crossfire_mcp-0.1.4.tar.gz
| Download URL | crossfire_mcp-0.1.4.tar.gz |
|---|---|
| Size | 262.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c5fba8bfb2bc2f4d03d79de198b56e62007c03baac9885554b20388823884888
|
|
BLAKE2b-256 checksum How to use checksums |
a1ca5766618ceae554df72b5ae874e08216f727c979deb1be9043178e8fbd681
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.12
|
Release files / crossfire_mcp-0.1.4-py3-none-any.whl
| Download URL | crossfire_mcp-0.1.4-py3-none-any.whl |
|---|---|
| Size | 282.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1ca53edba3ec5507e2d08413fcf510bfd5ea430e032dc46ec6d46a423e22f0be
|
|
BLAKE2b-256 checksum How to use checksums |
7bf38fe195c2f43ec70f661fe7a48146d128633fd98d8576b83bb287851cc374
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.12
|
Security for crossfire-mcp 0.1.4
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.