mirror of
https://github.com/invariantlabs-ai/invariant-gateway.git
synced 2026-08-19 15:27:11 +02:00
122 lines
2.6 KiB
Markdown
122 lines
2.6 KiB
Markdown
## MCP Integration with Invariant Gateway
|
|
|
|
This is a work-in-progress implementation of the Model Context Protocol (MCP) integrated with the Invariant Gateway.
|
|
|
|
|
|
### Original MCP Config (Baseline)
|
|
|
|
Given a standard MCP configuration like:
|
|
|
|
```
|
|
{
|
|
"mcpServers": {
|
|
"weather": {
|
|
"command": "uv",
|
|
"args": [
|
|
"--directory",
|
|
"/ABSOLUTE/PATH/TO/PARENT/FOLDER/weather",
|
|
"run",
|
|
"weather.py"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Using the PyPI Package
|
|
|
|
To enable runtime guardrails and trace logging via the Invariant Gateway, modify your MCP config as follows:
|
|
|
|
```
|
|
{
|
|
"mcpServers": {
|
|
"weather": {
|
|
"command": "uvx",
|
|
"args": [
|
|
"invariant-gateway@latest",
|
|
"mcp",
|
|
"--project-name",
|
|
"<your-project-name>",
|
|
"--push-explorer",
|
|
"--exec",
|
|
"uv",
|
|
"--directory",
|
|
"/ABSOLUTE/PATH/TO/PARENT/FOLDER/weather",
|
|
"run",
|
|
"weather.py"
|
|
],
|
|
"env": {
|
|
"INVARIANT_API_KEY": "<Add Invariant API key here>"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
Explanation
|
|
|
|
This configuration wraps the original MCP server invocation with the invariant-gateway CLI.
|
|
|
|
* Arguments before --exec are handled by the Invariant Gateway.
|
|
|
|
* Arguments after --exec are passed directly to your MCP server.
|
|
|
|
Key Parameters
|
|
|
|
* --project-name: The name of the Invariant Explorer project (dataset). Guardrails will be fetched from this project.
|
|
|
|
* --push-explorer: Enables pushing annotated traces of MCP message flows to the specified project in Invariant Explorer.
|
|
|
|
### Logs
|
|
|
|
To see logs and errors from the MCP gateway and the MCP server, you can do:
|
|
|
|
```bash
|
|
tail -f ~/.invariant/mcp.log
|
|
```
|
|
|
|
### Local Development Workflow
|
|
|
|
To test or develop the gateway locally:
|
|
|
|
1. Clone the invariant-gateway repository.
|
|
|
|
2. Build the package:
|
|
|
|
```bash
|
|
python -m build
|
|
```
|
|
|
|
This will generate a .whl file under the dist/ directory.
|
|
|
|
3. Update your MCP config to reference the local build (replace <VERSION> with the version specified in pyproject.toml):
|
|
|
|
```
|
|
{
|
|
"mcpServers": {
|
|
"weather": {
|
|
"command": "uvx",
|
|
"args": [
|
|
"--refresh",
|
|
"--from",
|
|
"/ABSOLUTE/PATH/TO/INVARIANT_GATEWAY_REPO/dist/invariant_gateway-<VERSION>-py3-none-any.whl",
|
|
"invariant-gateway",
|
|
"mcp",
|
|
"--project-name",
|
|
"<your-project-name>",
|
|
"--push-explorer",
|
|
"--exec",
|
|
"uv",
|
|
"--directory",
|
|
"/ABSOLUTE/PATH/TO/PARENT/FOLDER/weather",
|
|
"run",
|
|
"weather.py"
|
|
],
|
|
"env": {
|
|
"INVARIANT_API_KEY": "<Add Invariant API key here>"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|