dockerhub-api 1.3.3__tar.gz → 1.3.4__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.
- {dockerhub_api-1.3.3/dockerhub_api.egg-info → dockerhub_api-1.3.4}/PKG-INFO +4 -4
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/README.md +1 -1
- dockerhub_api-1.3.4/dockerhub_api/connector_sources.py +192 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/mcp_server.py +1 -1
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/ontology/certification.json +0 -3
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/ontology/dockerhub.ttl +13 -15
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4/dockerhub_api.egg-info}/PKG-INFO +4 -4
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api.egg-info/SOURCES.txt +1 -2
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api.egg-info/entry_points.txt +0 -3
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api.egg-info/requires.txt +2 -2
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/pyproject.toml +3 -6
- dockerhub_api-1.3.4/requirements.txt +3 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/tests/test_fleet_name.py +2 -13
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/tests/test_kg_ingest.py +1 -1
- dockerhub_api-1.3.3/dockerhub_api/connectors/mcp_source_presets.json +0 -18
- dockerhub_api-1.3.3/dockerhub_api/connectors/tool_schema_fingerprints.json +0 -8
- dockerhub_api-1.3.3/requirements.txt +0 -3
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/LICENSE +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/MANIFEST.in +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/__init__.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/__main__.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/api/__init__.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/api/api_client_access_tokens.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/api/api_client_audit_logs.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/api/api_client_auth.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/api/api_client_base.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/api/api_client_groups.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/api/api_client_org_access_tokens.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/api/api_client_orgs.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/api/api_client_registry.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/api/api_client_registry_base.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/api/api_client_repositories.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/api/api_client_scim.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/api/api_client_scout.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/api_client.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/auth.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/connectors/__init__.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/dockerhub_input_models.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/dockerhub_response_models.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/kg_ingest.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/mcp/__init__.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/mcp/mcp_admin.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/mcp/mcp_audit.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/mcp/mcp_auth.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/mcp/mcp_kg.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/mcp/mcp_org.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/mcp/mcp_registry.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/mcp/mcp_repos.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/mcp/mcp_scim.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/mcp/mcp_scout.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/mcp/mcp_teams.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/mcp_config.json +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/ontology/__init__.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/ontology/fixtures/records.json +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/ontology/mappings/source.yaml +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/ontology/migrations/manifest.json +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/ontology/shapes/connector.shacl.ttl +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/prompts/__init__.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/skills/__init__.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/skills/dockerhub-api-operations/SKILL.md +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/skills/dockerhub-api-operations/agents/openai.yaml +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/skills/dockerhub-api-operations/references/catalog.md +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/skills/dockerhub-image-registry-scout/SKILL.md +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/skills/dockerhub-image-registry-scout/WORKFLOW.md +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/skills/dockerhub-org-administration/SKILL.md +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/skills/dockerhub-org-administration/WORKFLOW.md +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/skills/dockerhub-repository-management/SKILL.md +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/skills/dockerhub-repository-management/WORKFLOW.md +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api.egg-info/dependency_links.txt +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api.egg-info/top_level.txt +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/setup.cfg +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/tests/test_api_audit.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/tests/test_api_org.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/tests/test_api_registry.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/tests/test_api_repositories.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/tests/test_api_scim.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/tests/test_api_scout.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/tests/test_api_teams.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/tests/test_api_tokens.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/tests/test_api_wrapper.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/tests/test_auth.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/tests/test_default_content_surfaces.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/tests/test_dockerhub_a2a_validation.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/tests/test_dockerhub_mcp_validation.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/tests/test_identity_namespace_scoping.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/tests/test_init_dynamics.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/tests/test_models.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/tests/test_rate_limit.py +0 -0
- {dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/tests/test_startup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dockerhub-api
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.4
|
|
4
4
|
Summary: Docker Hub API + MCP Server
|
|
5
5
|
Author-email: Project Maintainers <maintainers@users.noreply.github.com>
|
|
6
6
|
License: MIT
|
|
@@ -12,11 +12,11 @@ Classifier: Programming Language :: Python :: 3
|
|
|
12
12
|
Requires-Python: <3.15,>=3.12
|
|
13
13
|
Description-Content-Type: text/markdown
|
|
14
14
|
License-File: LICENSE
|
|
15
|
-
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.
|
|
15
|
+
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.1
|
|
16
16
|
Requires-Dist: httpx>=0.28.1
|
|
17
17
|
Requires-Dist: python-dotenv>=1.2.4
|
|
18
18
|
Provides-Extra: mcp
|
|
19
|
-
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.
|
|
19
|
+
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.1; extra == "mcp"
|
|
20
20
|
Provides-Extra: all
|
|
21
21
|
Requires-Dist: dockerhub-api[mcp]>=1.0.1; extra == "all"
|
|
22
22
|
Provides-Extra: test
|
|
@@ -41,7 +41,7 @@ Dynamic: license-file
|
|
|
41
41
|

|
|
42
42
|

|
|
43
43
|
|
|
44
|
-
*Version: 1.3.
|
|
44
|
+
*Version: 1.3.4*
|
|
45
45
|
|
|
46
46
|
> **Documentation** — Installation, deployment, usage across the API, CLI, and MCP
|
|
47
47
|
> Docker Hub platform are maintained in [docs/](docs/index.md).
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|

|
|
14
14
|

|
|
15
15
|
|
|
16
|
-
*Version: 1.3.
|
|
16
|
+
*Version: 1.3.4*
|
|
17
17
|
|
|
18
18
|
> **Documentation** — Installation, deployment, usage across the API, CLI, and MCP
|
|
19
19
|
> Docker Hub platform are maintained in [docs/](docs/index.md).
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"""Data sources of this connector, declared by tool name (generated by connector-ontology-map migrate).
|
|
2
|
+
|
|
3
|
+
Served live as ``connector://resources``. Regenerate by editing the declarations, not the tools.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
# ruff: noqa: E501
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
from agent_connector_sdk.ingest.live_declaration import source_meta
|
|
10
|
+
from agent_connector_sdk.ingest.sources import IngestSourceDeclaration, IngestSourceSpec
|
|
11
|
+
|
|
12
|
+
CONNECTOR = "dockerhub-mcp"
|
|
13
|
+
|
|
14
|
+
SOURCES = (
|
|
15
|
+
source_meta(
|
|
16
|
+
tool="dockerhub_get_repositories",
|
|
17
|
+
source_id="dockerhub-repositories",
|
|
18
|
+
record_type="Repository",
|
|
19
|
+
id_field="name",
|
|
20
|
+
cursor_field="last_updated",
|
|
21
|
+
page_param="page",
|
|
22
|
+
page_size_param="page_size",
|
|
23
|
+
pagination="page",
|
|
24
|
+
preset={
|
|
25
|
+
"doc_type": "repository",
|
|
26
|
+
"page_kind": "number",
|
|
27
|
+
"params_style": "args",
|
|
28
|
+
},
|
|
29
|
+
records_path="data.results",
|
|
30
|
+
server="dockerhub-mcp",
|
|
31
|
+
text_field="description",
|
|
32
|
+
title_field="name",
|
|
33
|
+
),
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
SCHEMA_MAPPINGS = {
|
|
37
|
+
"AccessToken": {
|
|
38
|
+
"fields": {
|
|
39
|
+
"architecture": "xsd:string",
|
|
40
|
+
"digest": "xsd:string",
|
|
41
|
+
"imageSize": "xsd:integer",
|
|
42
|
+
"isPrivate": "xsd:boolean",
|
|
43
|
+
"lastPushed": "xsd:string",
|
|
44
|
+
"permission": "xsd:string",
|
|
45
|
+
"pullCount": "xsd:integer",
|
|
46
|
+
"scopes": "xsd:string",
|
|
47
|
+
"starCount": "xsd:integer",
|
|
48
|
+
},
|
|
49
|
+
"ontology_class": None,
|
|
50
|
+
},
|
|
51
|
+
"ContainerImage": {
|
|
52
|
+
"fields": {
|
|
53
|
+
"architecture": "xsd:string",
|
|
54
|
+
"digest": "xsd:string",
|
|
55
|
+
"imageSize": "xsd:integer",
|
|
56
|
+
"isPrivate": "xsd:boolean",
|
|
57
|
+
"lastPushed": "xsd:string",
|
|
58
|
+
"permission": "xsd:string",
|
|
59
|
+
"pullCount": "xsd:integer",
|
|
60
|
+
"scopes": "xsd:string",
|
|
61
|
+
"starCount": "xsd:integer",
|
|
62
|
+
},
|
|
63
|
+
"ontology_class": None,
|
|
64
|
+
},
|
|
65
|
+
"Namespace": {
|
|
66
|
+
"fields": {
|
|
67
|
+
"architecture": "xsd:string",
|
|
68
|
+
"digest": "xsd:string",
|
|
69
|
+
"imageSize": "xsd:integer",
|
|
70
|
+
"isPrivate": "xsd:boolean",
|
|
71
|
+
"lastPushed": "xsd:string",
|
|
72
|
+
"permission": "xsd:string",
|
|
73
|
+
"pullCount": "xsd:integer",
|
|
74
|
+
"scopes": "xsd:string",
|
|
75
|
+
"starCount": "xsd:integer",
|
|
76
|
+
},
|
|
77
|
+
"ontology_class": None,
|
|
78
|
+
},
|
|
79
|
+
"Organization": {
|
|
80
|
+
"fields": {
|
|
81
|
+
"architecture": "xsd:string",
|
|
82
|
+
"digest": "xsd:string",
|
|
83
|
+
"imageSize": "xsd:integer",
|
|
84
|
+
"isPrivate": "xsd:boolean",
|
|
85
|
+
"lastPushed": "xsd:string",
|
|
86
|
+
"permission": "xsd:string",
|
|
87
|
+
"pullCount": "xsd:integer",
|
|
88
|
+
"scopes": "xsd:string",
|
|
89
|
+
"starCount": "xsd:integer",
|
|
90
|
+
},
|
|
91
|
+
"ontology_class": "Namespace",
|
|
92
|
+
},
|
|
93
|
+
"Repository": {
|
|
94
|
+
"fields": {
|
|
95
|
+
"architecture": "xsd:string",
|
|
96
|
+
"digest": "xsd:string",
|
|
97
|
+
"imageSize": "xsd:integer",
|
|
98
|
+
"isPrivate": "xsd:boolean",
|
|
99
|
+
"lastPushed": "xsd:string",
|
|
100
|
+
"permission": "xsd:string",
|
|
101
|
+
"pullCount": "xsd:integer",
|
|
102
|
+
"scopes": "xsd:string",
|
|
103
|
+
"starCount": "xsd:integer",
|
|
104
|
+
},
|
|
105
|
+
"ontology_class": "SoftwareProject",
|
|
106
|
+
},
|
|
107
|
+
"Team": {
|
|
108
|
+
"fields": {
|
|
109
|
+
"architecture": "xsd:string",
|
|
110
|
+
"digest": "xsd:string",
|
|
111
|
+
"imageSize": "xsd:integer",
|
|
112
|
+
"isPrivate": "xsd:boolean",
|
|
113
|
+
"lastPushed": "xsd:string",
|
|
114
|
+
"permission": "xsd:string",
|
|
115
|
+
"pullCount": "xsd:integer",
|
|
116
|
+
"scopes": "xsd:string",
|
|
117
|
+
"starCount": "xsd:integer",
|
|
118
|
+
},
|
|
119
|
+
"ontology_class": "Team",
|
|
120
|
+
},
|
|
121
|
+
"Vulnerability": {
|
|
122
|
+
"fields": {
|
|
123
|
+
"architecture": "xsd:string",
|
|
124
|
+
"digest": "xsd:string",
|
|
125
|
+
"imageSize": "xsd:integer",
|
|
126
|
+
"isPrivate": "xsd:boolean",
|
|
127
|
+
"lastPushed": "xsd:string",
|
|
128
|
+
"permission": "xsd:string",
|
|
129
|
+
"pullCount": "xsd:integer",
|
|
130
|
+
"scopes": "xsd:string",
|
|
131
|
+
"starCount": "xsd:integer",
|
|
132
|
+
},
|
|
133
|
+
"ontology_class": None,
|
|
134
|
+
},
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
RESOURCES = (
|
|
138
|
+
{
|
|
139
|
+
"id_prefix": "accesstoken",
|
|
140
|
+
"label": "Access Token",
|
|
141
|
+
"name": "AccessToken",
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"id_prefix": "containerimage",
|
|
145
|
+
"label": "Container Image",
|
|
146
|
+
"name": "ContainerImage",
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"id_prefix": "namespace",
|
|
150
|
+
"label": "Docker Hub Namespace",
|
|
151
|
+
"name": "Namespace",
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"id_prefix": "organization",
|
|
155
|
+
"label": "Docker Hub Organization",
|
|
156
|
+
"name": "Organization",
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"id_prefix": "repository",
|
|
160
|
+
"label": "Container Repository",
|
|
161
|
+
"name": "Repository",
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"id_prefix": "team",
|
|
165
|
+
"label": "Team",
|
|
166
|
+
"name": "Team",
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"id_prefix": "vulnerability",
|
|
170
|
+
"label": "Vulnerability",
|
|
171
|
+
"name": "Vulnerability",
|
|
172
|
+
},
|
|
173
|
+
)
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
def declaration() -> IngestSourceDeclaration:
|
|
177
|
+
"""The declaration the server assembles from this module."""
|
|
178
|
+
specs = []
|
|
179
|
+
for item in SOURCES:
|
|
180
|
+
for entry in item["connector_sources"]:
|
|
181
|
+
body = {k: v for k, v in entry.items() if k not in ("tool", "mapping")}
|
|
182
|
+
specs.append(
|
|
183
|
+
IngestSourceSpec.model_validate({**body, "tools": (entry["tool"],)})
|
|
184
|
+
)
|
|
185
|
+
return IngestSourceDeclaration.model_validate(
|
|
186
|
+
{
|
|
187
|
+
"connector": CONNECTOR,
|
|
188
|
+
"sources": specs,
|
|
189
|
+
"schema_mappings": SCHEMA_MAPPINGS,
|
|
190
|
+
"resources": RESOURCES,
|
|
191
|
+
}
|
|
192
|
+
)
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"api_version": "arbora.io/v1",
|
|
3
3
|
"artifacts": {
|
|
4
|
-
"connector_manifest.yml": "1d2826d511f1b9ad3c921d7cca5d094285890c92bdd61cf4d27fc33853301e7d",
|
|
5
|
-
"dockerhub_api/connectors/mcp_source_presets.json": "96b893636a49ece1a5f32decb9aea8e3740178cb5e4a19753748b4d18e7ca678",
|
|
6
|
-
"dockerhub_api/connectors/tool_schema_fingerprints.json": "60f37329f11dc900fa385099069f005c7fc8f4b8afcb0ac05d48794b1c62324a",
|
|
7
4
|
"dockerhub_api/ontology/dockerhub.ttl": "bd3f4498e3e9463ee4395a5da1d6afcbfc081a1437e1be52437ab4d52e18d55a",
|
|
8
5
|
"dockerhub_api/ontology/fixtures/records.json": "cdf24bdcd53b75daef789c05f93d55ced4ce4a138360a2ff9f1e34c55f8f6da8",
|
|
9
6
|
"dockerhub_api/ontology/mappings/source.yaml": "72d333a63cb808bbc9a2f031834fa4c75919b11a8171ad5b347fad61247fa016",
|
|
@@ -16,30 +16,25 @@
|
|
|
16
16
|
rdfs:label "Docker Hub Namespace" ;
|
|
17
17
|
rdfs:comment "A Docker Hub account/organization namespace that owns image repositories (the {namespace} in namespaces/{ns}/repositories)." .
|
|
18
18
|
|
|
19
|
-
:Organization a owl:Class
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
:Organization a owl:Class .
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
:Repository a owl:Class .
|
|
23
23
|
|
|
24
|
-
:Repository a owl:Class ;
|
|
25
|
-
rdfs:label "Container Repository" ;
|
|
26
|
-
rdfs:comment "A Docker Hub image repository holding tags and container images (hub_repos list/get)." .
|
|
27
24
|
|
|
28
25
|
:ContainerImage a owl:Class ;
|
|
29
26
|
rdfs:label "Container Image" ;
|
|
30
27
|
rdfs:comment "A concrete, content-addressable OCI/Docker image (a repository tag resolving to a digest, size, and platform) — hub_repos list_tags / get_tag and hub_registry manifests." .
|
|
31
28
|
|
|
32
|
-
:Team a owl:Class
|
|
33
|
-
|
|
34
|
-
rdfs:comment "An organization group (team) granted repository permissions (hub_teams / hub_repos assign_group)." .
|
|
29
|
+
:Team a owl:Class .
|
|
30
|
+
|
|
35
31
|
|
|
36
32
|
:AccessToken a owl:Class ;
|
|
37
33
|
rdfs:label "Access Token" ;
|
|
38
34
|
rdfs:comment "A personal or organization access token (PAT / OAT) scoped for registry and API access (hub_auth / hub_org tokens). Secret material is never ingested." .
|
|
39
35
|
|
|
40
|
-
:Vulnerability a owl:Class
|
|
41
|
-
|
|
42
|
-
rdfs:comment "A CVE / security finding reported against a container image by Docker Scout (hub_scout)." .
|
|
36
|
+
:Vulnerability a owl:Class .
|
|
37
|
+
|
|
43
38
|
|
|
44
39
|
# --- links (owl:ObjectProperty) ---
|
|
45
40
|
|
|
@@ -138,5 +133,8 @@
|
|
|
138
133
|
rdfs:comment """Docker Hub container-registry model — namespaces and organizations,
|
|
139
134
|
image repositories, tags and the concrete container images they resolve to (digest,
|
|
140
135
|
architecture, size), teams and their repository permissions, access tokens, and Docker
|
|
141
|
-
Scout vulnerabilities — federated into the agent-connector-sdk knowledge-graph hub."""
|
|
142
|
-
|
|
136
|
+
Scout vulnerabilities — federated into the agent-connector-sdk knowledge-graph hub.""" .
|
|
137
|
+
|
|
138
|
+
# ontology-codemod R3
|
|
139
|
+
<http://knuckles.team/kg#ContainerImage> rdfs:subClassOf <http://knuckles.team/kg/infrastructure#ContainerImage> .
|
|
140
|
+
<http://knuckles.team/kg#Namespace> rdfs:subClassOf <http://knuckles.team/kg/infrastructure#Namespace> .
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dockerhub-api
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.4
|
|
4
4
|
Summary: Docker Hub API + MCP Server
|
|
5
5
|
Author-email: Project Maintainers <maintainers@users.noreply.github.com>
|
|
6
6
|
License: MIT
|
|
@@ -12,11 +12,11 @@ Classifier: Programming Language :: Python :: 3
|
|
|
12
12
|
Requires-Python: <3.15,>=3.12
|
|
13
13
|
Description-Content-Type: text/markdown
|
|
14
14
|
License-File: LICENSE
|
|
15
|
-
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.
|
|
15
|
+
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.1
|
|
16
16
|
Requires-Dist: httpx>=0.28.1
|
|
17
17
|
Requires-Dist: python-dotenv>=1.2.4
|
|
18
18
|
Provides-Extra: mcp
|
|
19
|
-
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.
|
|
19
|
+
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.1; extra == "mcp"
|
|
20
20
|
Provides-Extra: all
|
|
21
21
|
Requires-Dist: dockerhub-api[mcp]>=1.0.1; extra == "all"
|
|
22
22
|
Provides-Extra: test
|
|
@@ -41,7 +41,7 @@ Dynamic: license-file
|
|
|
41
41
|

|
|
42
42
|

|
|
43
43
|
|
|
44
|
-
*Version: 1.3.
|
|
44
|
+
*Version: 1.3.4*
|
|
45
45
|
|
|
46
46
|
> **Documentation** — Installation, deployment, usage across the API, CLI, and MCP
|
|
47
47
|
> Docker Hub platform are maintained in [docs/](docs/index.md).
|
|
@@ -7,6 +7,7 @@ dockerhub_api/__init__.py
|
|
|
7
7
|
dockerhub_api/__main__.py
|
|
8
8
|
dockerhub_api/api_client.py
|
|
9
9
|
dockerhub_api/auth.py
|
|
10
|
+
dockerhub_api/connector_sources.py
|
|
10
11
|
dockerhub_api/dockerhub_input_models.py
|
|
11
12
|
dockerhub_api/dockerhub_response_models.py
|
|
12
13
|
dockerhub_api/kg_ingest.py
|
|
@@ -32,8 +33,6 @@ dockerhub_api/api/api_client_repositories.py
|
|
|
32
33
|
dockerhub_api/api/api_client_scim.py
|
|
33
34
|
dockerhub_api/api/api_client_scout.py
|
|
34
35
|
dockerhub_api/connectors/__init__.py
|
|
35
|
-
dockerhub_api/connectors/mcp_source_presets.json
|
|
36
|
-
dockerhub_api/connectors/tool_schema_fingerprints.json
|
|
37
36
|
dockerhub_api/mcp/__init__.py
|
|
38
37
|
dockerhub_api/mcp/mcp_admin.py
|
|
39
38
|
dockerhub_api/mcp/mcp_audit.py
|
|
@@ -7,8 +7,5 @@ dockerhub-api = dockerhub_api.ontology
|
|
|
7
7
|
[agent_connector_sdk.skill_providers]
|
|
8
8
|
dockerhub-api = dockerhub_api.skills
|
|
9
9
|
|
|
10
|
-
[agent_connector_sdk.source_connector_providers]
|
|
11
|
-
dockerhub-api = dockerhub_api.connectors
|
|
12
|
-
|
|
13
10
|
[console_scripts]
|
|
14
11
|
dockerhub-mcp = dockerhub_api.mcp_server:mcp_server
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
agent-connector-sdk[mcp]<1.0.0,>=0.
|
|
1
|
+
agent-connector-sdk[mcp]<1.0.0,>=0.4.1
|
|
2
2
|
httpx>=0.28.1
|
|
3
3
|
python-dotenv>=1.2.4
|
|
4
4
|
|
|
@@ -6,7 +6,7 @@ python-dotenv>=1.2.4
|
|
|
6
6
|
dockerhub-api[mcp]>=1.0.1
|
|
7
7
|
|
|
8
8
|
[mcp]
|
|
9
|
-
agent-connector-sdk[mcp]<1.0.0,>=0.
|
|
9
|
+
agent-connector-sdk[mcp]<1.0.0,>=0.4.1
|
|
10
10
|
|
|
11
11
|
[test]
|
|
12
12
|
pytest-xdist>=3.8.0
|
|
@@ -4,12 +4,12 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "dockerhub-api"
|
|
7
|
-
version = "1.3.
|
|
7
|
+
version = "1.3.4"
|
|
8
8
|
description = "Docker Hub API + MCP Server"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
classifiers = [ "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: MIT License", "Environment :: Console", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3",]
|
|
11
11
|
requires-python = ">=3.12, <3.15"
|
|
12
|
-
dependencies = [ "agent-connector-sdk[mcp]>=0.
|
|
12
|
+
dependencies = [ "agent-connector-sdk[mcp]>=0.4.1,<1.0.0", "httpx>=0.28.1", "python-dotenv>=1.2.4",]
|
|
13
13
|
[[project.authors]]
|
|
14
14
|
name = "Project Maintainers"
|
|
15
15
|
email = "maintainers@users.noreply.github.com"
|
|
@@ -18,7 +18,7 @@ email = "maintainers@users.noreply.github.com"
|
|
|
18
18
|
text = "MIT"
|
|
19
19
|
|
|
20
20
|
[project.optional-dependencies]
|
|
21
|
-
mcp = [ "agent-connector-sdk[mcp]>=0.
|
|
21
|
+
mcp = [ "agent-connector-sdk[mcp]>=0.4.1,<1.0.0",]
|
|
22
22
|
all = [ "dockerhub-api[mcp]>=1.0.1",]
|
|
23
23
|
test = [
|
|
24
24
|
"pytest-xdist>=3.8.0", "pytest>=9.1.1", "pytest-asyncio>=1.4.0", "pytest-cov>=7.1.0",]
|
|
@@ -32,9 +32,6 @@ dockerhub-api = "dockerhub_api.skills"
|
|
|
32
32
|
[project.entry-points."agent_connector_sdk.ontology_providers"]
|
|
33
33
|
dockerhub-api = "dockerhub_api.ontology"
|
|
34
34
|
|
|
35
|
-
[project.entry-points."agent_connector_sdk.source_connector_providers"]
|
|
36
|
-
dockerhub-api = "dockerhub_api.connectors"
|
|
37
|
-
|
|
38
35
|
# The one declared connector identity: the fleet name (SDK-CONNECTOR-CONTROL-R071).
|
|
39
36
|
[project.entry-points."agent_connector_sdk.connector"]
|
|
40
37
|
dockerhub-mcp = "dockerhub_api"
|
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
from agent_connector_sdk.connector_identity import connector_name
|
|
5
6
|
import ast
|
|
6
|
-
import json
|
|
7
|
-
import re
|
|
8
7
|
import tomllib
|
|
9
8
|
from pathlib import Path
|
|
10
9
|
|
|
@@ -38,16 +37,6 @@ def test_connector_name_is_the_fleet_name() -> None:
|
|
|
38
37
|
assert pyproject["project"]["entry-points"]["agent_connector_sdk.connector"] == {
|
|
39
38
|
FLEET: "dockerhub_api"
|
|
40
39
|
}
|
|
41
|
-
|
|
42
|
-
if not manifest_path.is_file():
|
|
43
|
-
manifest_path = ROOT / "connector_manifest.yml"
|
|
44
|
-
manifest = manifest_path.read_text(encoding="utf-8")
|
|
45
|
-
match = re.search(r'^\s*"?connector"?\s*:\s*"?([^"\s,]+)', manifest, re.MULTILINE)
|
|
46
|
-
assert match is not None and match.group(1) == FLEET
|
|
47
|
-
fingerprints = PACKAGE / "connectors" / "tool_schema_fingerprints.json"
|
|
48
|
-
if fingerprints.is_file():
|
|
49
|
-
assert (
|
|
50
|
-
json.loads(fingerprints.read_text(encoding="utf-8"))["connector"] == FLEET
|
|
51
|
-
)
|
|
40
|
+
assert connector_name("dockerhub_api") == FLEET
|
|
52
41
|
for module in sorted(PACKAGE.glob("*.py")):
|
|
53
42
|
assert all(name == FLEET for name in _call_connectors(module)), module.name
|
|
@@ -69,7 +69,7 @@ async def test_ingest_entities_writes_nodes_and_edges(ingest):
|
|
|
69
69
|
a_record = next(r for r in request.records if r.record_id == "a")
|
|
70
70
|
assert a_record.payload["name"] == "r"
|
|
71
71
|
assert request.relationships[0].relation_reference.endswith(
|
|
72
|
-
"
|
|
72
|
+
"relations/Repository/inNamespace"
|
|
73
73
|
)
|
|
74
74
|
|
|
75
75
|
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"_comment": "Tier-1 mcp_tool source presets for dockerhub-api (AU-KG.ingest.mcp-tool-connector). Syncs Docker Hub repositories into the KG as repository documents via the dockerhub-api MCP server hub_repos tool. Contributed presets win over the central MCP_TOOL_PRESETS. The native dockerhub_ingest_repositories tool + kg_ingest.py provide the typed :Repository/:ContainerImage graph nodes.",
|
|
3
|
-
"dockerhub-repositories": {
|
|
4
|
-
"server": "dockerhub-mcp",
|
|
5
|
-
"tool": "dockerhub_get_repositories",
|
|
6
|
-
"records_path": "data.results",
|
|
7
|
-
"id_field": "name",
|
|
8
|
-
"title_field": "name",
|
|
9
|
-
"text_field": "description",
|
|
10
|
-
"updated_field": "last_updated",
|
|
11
|
-
"pagination": "page",
|
|
12
|
-
"page_kind": "number",
|
|
13
|
-
"page_param": "page",
|
|
14
|
-
"page_size_param": "page_size",
|
|
15
|
-
"doc_type": "repository",
|
|
16
|
-
"params_style": "args"
|
|
17
|
-
}
|
|
18
|
-
}
|
|
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
|
{dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/api/api_client_org_access_tokens.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
|
|
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
|
{dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/ontology/shapes/connector.shacl.ttl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dockerhub_api-1.3.3 → dockerhub_api-1.3.4}/dockerhub_api/skills/dockerhub-api-operations/SKILL.md
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
|
|
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
|