MCP & A2A security proxy with real-time threat detection
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file crossfire_mcp-0.1.4.tar.gz.
File metadata
- Download URL: crossfire_mcp-0.1.4.tar.gz
- Upload date:
- Size: 262.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c5fba8bfb2bc2f4d03d79de198b56e62007c03baac9885554b20388823884888
|
|
| MD5 |
0428b00785b39b83b5c1fc0f9763734d
|
|
| BLAKE2b-256 |
a1ca5766618ceae554df72b5ae874e08216f727c979deb1be9043178e8fbd681
|
File details
Details for the file crossfire_mcp-0.1.4-py3-none-any.whl.
File metadata
- Download URL: crossfire_mcp-0.1.4-py3-none-any.whl
- Upload date:
- Size: 282.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1ca53edba3ec5507e2d08413fcf510bfd5ea430e032dc46ec6d46a423e22f0be
|
|
| MD5 |
aeddd721d222e1dfc77d958e2a4925df
|
|
| BLAKE2b-256 |
7bf38fe195c2f43ec70f661fe7a48146d128633fd98d8576b83bb287851cc374
|