Hemang
05e09331e9
Address comments on PR and update README.
2025-06-04 11:46:35 +02:00
Hemang
cc3e96c20a
Clean up MCP tests and clients.
2025-06-04 11:46:35 +02:00
Hemang
f6ba31ab2e
Move util methods to MCPTransportBase.
2025-06-04 11:46:35 +02:00
Hemang
7ec13ad852
Create StreamableTransport class for MCP Streamable http transport. This subclasses MCPTransportBase.
2025-06-04 11:46:35 +02:00
Hemang
2e6f669923
Create SSETransport class for MCP SSE transport. This subclasses MCPTransportBase.
2025-06-04 11:46:35 +02:00
Hemang
7efd15e2a9
Move MCP related routes to the MCP directory and introduce the MCPTransportBase class.
2025-06-04 11:46:35 +02:00
Hemang
e8106776b4
Refactor stdio implementation to use McpSession class.
2025-06-04 11:46:35 +02:00
Hemang
6849fc7daa
Update McpSession class so that it can be used from both sse/streamable and stdio transports. Also update SseHeaderAttributes to McpAttributes so that it be can be used different MCP transports.
2025-06-04 11:46:35 +02:00
Hemang
bfb57029e6
Small cleanups.
2025-05-27 23:11:57 +02:00
Hemang
ab3fb98b67
Add blocking and logging related tests for MCP streamable HTTP route.
2025-05-27 23:11:57 +02:00
Hemang
34979ed18d
Move hook_tool_call and hook_tool_call_response to mcp_utils.py so that it can be used by both SSE and Streamable implementations.
2025-05-27 23:11:57 +02:00
Hemang
6e61a76168
Add blocking and logging of guardrails for MCP Streamable http route.
2025-05-27 23:11:57 +02:00
Hemang
20adc7804b
Accep the invariant api key in the header for sse gateway and use it for guardrailing and pushing to explorer.
2025-05-27 23:11:57 +02:00
Hemang
71e2ac9a06
Add implementation for MCP streamable GET, POST and DELETE endpoints without push to explorer or guardrailing.
2025-05-27 23:11:57 +02:00
Hemang
f8bf7be405
Add mcp_streamable route and refactor some common code between sse and streamable. Update tests for 400 errors in sse.
2025-05-27 23:11:57 +02:00
Hemang
5b68e80be5
Add MCP client and server name when calling fetch_guardrails_from_explorer in SSE.
2025-05-22 10:29:59 +02:00
Hemang
03817b005c
Update metadata in MCP SSE similar to what we do in MCP stdio.
2025-05-21 22:45:59 +02:00
Luca Beurer-Kellner
04d0b70c48
use metadata client to fetch policies
2025-05-21 16:28:06 +02:00
Hemang
169eb066b9
Small cleanups in sse and stdio MCP implementation.
2025-05-21 15:58:22 +02:00
Luca Beurer-Kellner
c1112b91fc
use windows select ( #56 )
...
* use windows select
* factor out platform-specific stdin waiting
2025-05-21 09:43:00 +02:00
Luca Beurer-Kellner
e18c6b5bdb
Add an option to add extra metadata that is pushed and passed to Guardrails during an MCP session ( #47 )
...
* use select() before readline
* support for setting static metadata for MCP sessions
* nest extra mcp metadata in metadata object
* unify session metadata
* extra metadata tests
* use empty object as parameters, if None
* list_tools as tool call
* offset indices in tests
* test: adjust addresses
* mcp: make error reporting configurable
* line logging
* log version
* verbose logging + loud exception failure
* add server and client name to policy get
* append trace even if not pushing
* port tools/list message support to SSE
* use python -m build
* adjust guardrail failure address
* support for blocking tools/list in SSE
* use error-based failure response format by default
* tools/list test
* don't list_tools in stdio connect
* flaky test: handle second possible result in anthropic streaming case
---------
Co-authored-by: knielsen404 <kristian@invariantlabs.ai >
2025-05-19 13:44:37 +02:00
Hemang
4dbb400620
Move invariant api key check to __main__.py so that the same check can work for both mcp and server commands.
2025-05-16 14:33:00 +05:30
Hemang
f33b2392f6
Fix the Dockerfle for gateway to copy correctly.
2025-05-16 14:33:00 +05:30
Hemang
876eb44c78
Make MCP stdio gateway fully async. With sync and async mixed behaviour for running background tasks we were running into issues.
2025-05-16 14:33:00 +05:30
Hemang
a214837b1e
Add message to session store for MCP sse in post path before returning.
2025-05-14 15:44:52 +02:00
Hemang
e32ec74ed2
Fix paths to pyproject.toml and README in dockerfile.gateway. Also update context in publish-images.yml
2025-05-14 18:05:14 +05:30
Hemang
e2e004b7b1
Move dockerfiles inside gateway/ and update main CLI script to be able to run build, up, down and logs on a local gateway server instance.
2025-05-14 14:21:48 +05:30
Hemang
edd9fd9a5c
When tool_call is blocked in MCP Post method, add the error message to a pending error messages list. Create two queues in the MCP SSE Get endpoint which correspond to the MCP server events and these pending error messages. These two queues are merged to return events back to the client.
2025-05-09 11:05:33 +05:30
Hemang
794aae0326
Add MCP guardrailing for SSE.
2025-05-08 20:40:28 +05:30
Hemang
40ec6d2db2
Add MCP SSE server proxying in gateway.
2025-05-08 14:11:22 +05:30
Hemang
1f6e2ed7fb
Update streaming in anthropic route to handle chunks with incomplete events. Introduce an sse_buffer which keeps track of the current incomplete event from the last processed chunk.
2025-05-07 01:08:15 +05:30
Hemang
aec7808e3e
Fix broken integration tests.
2025-05-07 01:08:15 +05:30
Luca Beurer-Kellner
86ec75ba2d
use select() before readline ( #45 )
2025-05-06 16:07:50 +02:00
Hemang
52f5359d36
Add MCP client and server names in trace metadata for Explorer.
2025-04-24 15:48:36 +02:00
Hemang
7287065940
Improve on request reads from byte by byte to line by line.
2025-04-24 15:48:36 +02:00
knielsen404
55874d552e
feat: append_and_push_trace uses configurable API URL
2025-04-23 13:08:57 +01:00
Kristian Nielsen
ed63a4b592
fix typo ( #42 )
2025-04-23 09:28:45 +01:00
Marco Milanta
20d1e0afd4
fix: print breaks claude
2025-04-17 14:59:59 +02:00
Hemang Sarkar
2b9785de11
Update README.md
2025-04-17 10:05:28 +02:00
Hemang
45d384b7a3
Update README for mcp.
2025-04-17 09:54:26 +02:00
Hemang
e8deb8feda
Rename dataset-name flag for MCP to project-name and change CLI command to run mcp
2025-04-17 07:15:28 +02:00
Hemang
2c34205c4c
Fix asyncio and threading. Dedupe annotations before pushing. Add README.
2025-04-17 07:15:28 +02:00
Hemang
66c6dcb8f9
Add mcp.py
2025-04-17 07:15:28 +02:00
Hemang
15210997a7
Add the invariant-gateway CLI script.
2025-04-17 07:15:28 +02:00
Hemang
5bf121bbda
Use pyproject.toml instead of requirements.txt and fix some broken tests.
2025-04-17 07:15:28 +02:00
Luca Beurer-Kellner
6b6f33bde6
fix: don't hardcode preview
2025-04-04 10:38:14 +02:00
Luca Beurer-Kellner
c4dd3f3b19
Allow to specify different API keys for the guardrailing service ( #36 )
...
* minor refactor for getting invariant api keys for guardrailing
* allow different guardrailing api key
* tests
* fix comment + import
* improved unauthorized handling
2025-04-03 12:15:30 +02:00
Luca Beurer-Kellner
e17b53b927
Extract guardrails from header if provided ( #33 )
...
* guardrails from header
* use in-file guardrails in client.py
* support case without request
* remove client script
* tests: guardrailing rule passed in header
* include checked guardrails in annotation extra metadata
* include guardrailing action
* update guardrail metadata
2025-04-03 08:56:15 +02:00
Hemang
760b739894
Correct user API GET call to fetch policies.
2025-04-03 00:02:19 +02:00
Hemang
6d3366b91b
Add OPTIONS preflight support for routes.
2025-04-02 22:42:22 +02:00