aiohttp-tiny-mcp 0.5.4__tar.gz → 0.5.6__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.
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/PKG-INFO +1 -1
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/pyproject.toml +2 -1
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/pyproject.toml.orig +2 -1
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/protocol/schema.py +26 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/LICENSE +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/README.md +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/__init__.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/auth/__init__.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/auth/jwt.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/client/__init__.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/client/base.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/client/http.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/client/stdio.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/console/__init__.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/console/console.css +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/console/console.js +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/console/index.html +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/console/oauth-callback.html +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/extensions/__init__.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/extensions/skills.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/oauth/__init__.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/oauth/github.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/oauth/provider.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/oauth/server.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/oauth/tokens.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/protocol/__init__.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/protocol/adapter.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/protocol/core.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/protocol/models.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/protocol/selection.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/protocol/v2024_11_05.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/protocol/v2025_03_26.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/protocol/v2025_06_18.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/protocol/v2025_11_25.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/protocol/v2026_07_28.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/py.typed +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/server/__init__.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/server/dispatcher.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/server/exchange.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/server/http.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/server/registry.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/server/request_state.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/server/specs.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/server/sse.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/server/stdio.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/server/subscriptions.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/server/tasks.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/storage/__init__.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/storage/hub.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/storage/namespaces.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/storage/postgres.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/storage/redis.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/storage/sessions.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/storage/sqlite.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/testing.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/transport/__init__.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/transport/metadata.py +0 -0
- {aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/transport/sse.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "aiohttp-tiny-mcp"
|
|
3
|
-
version = "0.5.
|
|
3
|
+
version = "0.5.6"
|
|
4
4
|
description = "Remote MCP server and client library for aiohttp"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "Apache-2.0"
|
|
@@ -51,6 +51,7 @@ dev = [
|
|
|
51
51
|
"PyJWT[crypto]>=2.13",
|
|
52
52
|
"aiosqlite>=0.20",
|
|
53
53
|
"furo>=2025.12.19",
|
|
54
|
+
"jsonschema>=4.26",
|
|
54
55
|
"markdown-pytest>=0.6.6",
|
|
55
56
|
"mcp[cli]==2.0.0",
|
|
56
57
|
"myst-parser>=4.0.1",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "aiohttp-tiny-mcp"
|
|
3
|
-
version = "0.5.
|
|
3
|
+
version = "0.5.6"
|
|
4
4
|
description = "Remote MCP server and client library for aiohttp"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "Apache-2.0"
|
|
@@ -56,6 +56,7 @@ dev = [
|
|
|
56
56
|
"PyJWT[crypto]>=2.13",
|
|
57
57
|
"aiosqlite>=0.20",
|
|
58
58
|
"furo>=2025.12.19",
|
|
59
|
+
"jsonschema>=4.26",
|
|
59
60
|
"markdown-pytest>=0.6.6",
|
|
60
61
|
"mcp[cli]==2.0.0",
|
|
61
62
|
"myst-parser>=4.0.1",
|
|
@@ -100,6 +100,26 @@ def simplify_legacy_schema(schema: dict) -> dict | None:
|
|
|
100
100
|
return node
|
|
101
101
|
|
|
102
102
|
|
|
103
|
+
def _accept_null(branch: dict[str, Any]) -> dict[str, Any] | None:
|
|
104
|
+
"""Keep null valid in a branch that replaces a nullable union. Return None if the branch
|
|
105
|
+
cannot accept null.
|
|
106
|
+
"""
|
|
107
|
+
if "const" in branch:
|
|
108
|
+
return None
|
|
109
|
+
kind = branch.get("type")
|
|
110
|
+
if isinstance(kind, str):
|
|
111
|
+
branch = {**branch, "type": [kind, "null"]}
|
|
112
|
+
elif isinstance(kind, list):
|
|
113
|
+
if "null" not in kind:
|
|
114
|
+
branch = {**branch, "type": [*kind, "null"]}
|
|
115
|
+
elif kind is not None:
|
|
116
|
+
return None
|
|
117
|
+
choices = branch.get("enum")
|
|
118
|
+
if isinstance(choices, list) and None not in choices:
|
|
119
|
+
branch = {**branch, "enum": [*choices, None]}
|
|
120
|
+
return branch
|
|
121
|
+
|
|
122
|
+
|
|
103
123
|
def _simplify_node(node: Any) -> Any:
|
|
104
124
|
if not isinstance(node, dict):
|
|
105
125
|
return node
|
|
@@ -116,6 +136,12 @@ def _simplify_node(node: Any) -> Any:
|
|
|
116
136
|
branch = _simplify_node(branches[0])
|
|
117
137
|
if branch is None:
|
|
118
138
|
return None
|
|
139
|
+
if len(branches) != len(any_of):
|
|
140
|
+
# The union accepted null. Declare null in the collapsed branch, or results that
|
|
141
|
+
# carry null fail client-side validation.
|
|
142
|
+
branch = _accept_null(branch)
|
|
143
|
+
if branch is None:
|
|
144
|
+
return None
|
|
119
145
|
node = {**{k: v for k, v in node.items() if k != "anyOf"}, **branch}
|
|
120
146
|
if "oneOf" in node:
|
|
121
147
|
return None
|
|
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
|
{aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/console/oauth-callback.html
RENAMED
|
File without changes
|
{aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/extensions/__init__.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
|
{aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/protocol/selection.py
RENAMED
|
File without changes
|
{aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/protocol/v2024_11_05.py
RENAMED
|
File without changes
|
{aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/protocol/v2025_03_26.py
RENAMED
|
File without changes
|
{aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/protocol/v2025_06_18.py
RENAMED
|
File without changes
|
{aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/protocol/v2025_11_25.py
RENAMED
|
File without changes
|
{aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/protocol/v2026_07_28.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/server/request_state.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/server/subscriptions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/storage/namespaces.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/transport/__init__.py
RENAMED
|
File without changes
|
{aiohttp_tiny_mcp-0.5.4 → aiohttp_tiny_mcp-0.5.6}/src/aiohttp_tiny_mcp/transport/metadata.py
RENAMED
|
File without changes
|
|
File without changes
|