rootly-mcp-server 2.2.0__tar.gz → 2.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/.gitignore +1 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/PKG-INFO +1 -1
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/pyproject.toml +1 -1
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/src/rootly_mcp_server/server.py +9 -9
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/.beads/issues.jsonl +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/.gitattributes +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/.github/dependabot.yml +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/.github/workflows/ci.yml +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/.github/workflows/lint.yml +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/.github/workflows/pypi-release.yml +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/.github/workflows/test.yml +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/.semaphore/deploy.yml +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/.semaphore/semaphore.yml +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/.semaphore/update-task-definition.sh +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/CONTRIBUTING.md +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/Dockerfile +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/LICENSE +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/README.md +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/examples/skills/README.md +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/rootly-mcp-server-demo.gif +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/rootly_openapi.json +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/scripts/setup-hooks.sh +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/src/rootly_mcp_server/__init__.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/src/rootly_mcp_server/__main__.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/src/rootly_mcp_server/client.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/src/rootly_mcp_server/data/__init__.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/src/rootly_mcp_server/exceptions.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/src/rootly_mcp_server/monitoring.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/src/rootly_mcp_server/och_client.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/src/rootly_mcp_server/pagination.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/src/rootly_mcp_server/security.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/src/rootly_mcp_server/smart_utils.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/src/rootly_mcp_server/texttest.json +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/src/rootly_mcp_server/utils.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/src/rootly_mcp_server/validators.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/tests/README.md +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/tests/conftest.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/tests/integration/local/test_basic.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/tests/integration/local/test_smart_tools.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/tests/integration/remote/test_essential.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/tests/test_client.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/tests/unit/test_authentication.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/tests/unit/test_exceptions.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/tests/unit/test_http_headers.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/tests/unit/test_och_client.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/tests/unit/test_oncall_handoff.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/tests/unit/test_oncall_metrics.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/tests/unit/test_oncall_new_tools.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/tests/unit/test_security.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/tests/unit/test_server.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/tests/unit/test_smart_utils.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/tests/unit/test_tools.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/tests/unit/test_utils.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/tests/unit/test_validators.py +0 -0
- {rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rootly-mcp-server
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.1
|
|
4
4
|
Summary: Secure Model Context Protocol server for Rootly APIs with AI SRE capabilities, comprehensive error handling, and input validation
|
|
5
5
|
Project-URL: Homepage, https://github.com/Rootly-AI-Labs/Rootly-MCP-server
|
|
6
6
|
Project-URL: Issues, https://github.com/Rootly-AI-Labs/Rootly-MCP-server/issues
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "rootly-mcp-server"
|
|
3
|
-
version = "2.2.
|
|
3
|
+
version = "2.2.1"
|
|
4
4
|
description = "Secure Model Context Protocol server for Rootly APIs with AI SRE capabilities, comprehensive error handling, and input validation"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
@@ -386,15 +386,15 @@ class AuthenticatedHTTPXClient:
|
|
|
386
386
|
if "params" in kwargs:
|
|
387
387
|
kwargs["params"] = self._transform_params(kwargs["params"])
|
|
388
388
|
|
|
389
|
-
#
|
|
390
|
-
# This is critical because
|
|
391
|
-
# (e.g., Content-Type: application/json
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
389
|
+
# ALWAYS ensure Content-Type and Accept headers are set correctly for Rootly API
|
|
390
|
+
# This is critical because:
|
|
391
|
+
# 1. FastMCP may pass headers from the MCP client request (e.g., Content-Type: application/json)
|
|
392
|
+
# 2. Per-request headers override httpx client defaults
|
|
393
|
+
# 3. We must force JSON-API content type regardless of what's passed in
|
|
394
|
+
headers = dict(kwargs.get("headers") or {})
|
|
395
|
+
headers["Content-Type"] = "application/vnd.api+json"
|
|
396
|
+
headers["Accept"] = "application/vnd.api+json"
|
|
397
|
+
kwargs["headers"] = headers
|
|
398
398
|
|
|
399
399
|
# Call the underlying client's request method and let it handle everything
|
|
400
400
|
return await self.client.request(method, url, **kwargs)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/tests/integration/local/test_smart_tools.py
RENAMED
|
File without changes
|
{rootly_mcp_server-2.2.0 → rootly_mcp_server-2.2.1}/tests/integration/remote/test_essential.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|