gitlab-api 27.3.8__tar.gz → 27.3.9__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.
- {gitlab_api-27.3.8/gitlab_api.egg-info → gitlab_api-27.3.9}/PKG-INFO +3 -3
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/README.md +1 -1
- gitlab_api-27.3.9/gitlab_api/connector_sources.py +261 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/mcp_server.py +1 -1
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/ontology/certification.json +0 -3
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/ontology/gitlab.ttl +3 -6
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/prompts/devops_specialist.json +0 -2
- {gitlab_api-27.3.8 → gitlab_api-27.3.9/gitlab_api.egg-info}/PKG-INFO +3 -3
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api.egg-info/SOURCES.txt +1 -4
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api.egg-info/requires.txt +1 -1
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/pyproject.toml +3 -3
- gitlab_api-27.3.9/requirements.txt +1 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_cq_paths.py +5 -7
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_fleet_name.py +2 -10
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_ingest_sources.py +5 -18
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_ontology_parent_link.py +0 -2
- gitlab_api-27.3.8/gitlab_api/connector_manifest.yml +0 -302
- gitlab_api-27.3.8/gitlab_api/connectors/mcp_source_presets.json +0 -18
- gitlab_api-27.3.8/gitlab_api/connectors/tool_schema_fingerprints.json +0 -8
- gitlab_api-27.3.8/gitlab_api/ontology/ingest_sources.json +0 -38
- gitlab_api-27.3.8/requirements.txt +0 -1
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/LICENSE +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/MANIFEST.in +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/__init__.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/__main__.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/api/__init__.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/api/api_client_base.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/api/api_client_environments.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/api/api_client_issues.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/api/api_client_merge_requests.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/api/api_client_other.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/api/api_client_pipelines.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/api/api_client_projects.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/api/api_client_repositories.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/api/api_client_system.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/api/api_client_users_groups.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/api/api_client_vulnerabilities.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/api_client.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/auth.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/connector_prep.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/connectors/__init__.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/gitlab_gql.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/gitlab_input_models.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/gitlab_response_models.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/instances.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/kg_ingest.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/mcp_config.json +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/ontology/__init__.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/ontology/fixtures/records.json +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/ontology/mappings/source.yaml +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/ontology/migrations/manifest.json +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/ontology/shapes/connector.shacl.ttl +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/prompts/__init__.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/__init__.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-api-operations/SKILL.md +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-api-operations/agents/openai.yaml +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-api-operations/references/catalog.md +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-issues/SKILL.md +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-issues/WORKFLOW.md +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-merge-request-create/SKILL.md +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-merge-request-create/WORKFLOW.md +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-merge-request-review/SKILL.md +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-merge-request-review/WORKFLOW.md +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-pipelines/SKILL.md +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-pipelines/WORKFLOW.md +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-vulnerabilities/SKILL.md +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-vulnerabilities/WORKFLOW.md +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api.egg-info/dependency_links.txt +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api.egg-info/entry_points.txt +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api.egg-info/top_level.txt +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/scripts/check_import_safety.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/scripts/security_contract.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/scripts/security_sanitizer.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/scripts/verify_api_integration.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/setup.cfg +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/__init__.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/conftest.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_api_wrapper.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_auth.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_connector_prep.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_default_content_surfaces.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_gitlab_a2a_validation.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_gitlab_api_brute_force_coverage.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_gitlab_gql.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_gitlab_mcp_validation.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_gitlab_models.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_identity_context_scoping.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_init_dynamics.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_instances.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_kg_ingest.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_mock_coverage.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_security_sanitizer.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_startup.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_tool_modes.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_verify_agent.py +0 -0
- {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/verify_a2a_queries.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gitlab-api
|
|
3
|
-
Version: 27.3.
|
|
3
|
+
Version: 27.3.9
|
|
4
4
|
Summary: GitLab API + MCP Server
|
|
5
5
|
Author-email: Project Maintainers <maintainers@users.noreply.github.com>
|
|
6
6
|
License: MIT
|
|
@@ -12,7 +12,7 @@ Classifier: Programming Language :: Python :: 3
|
|
|
12
12
|
Requires-Python: >=3.12
|
|
13
13
|
Description-Content-Type: text/markdown
|
|
14
14
|
License-File: LICENSE
|
|
15
|
-
Requires-Dist: agent-connector-sdk[graphql,mcp]<1.0.0,>=0.
|
|
15
|
+
Requires-Dist: agent-connector-sdk[graphql,mcp]<1.0.0,>=0.4.0
|
|
16
16
|
Requires-Dist: python-dotenv>=1.2.4
|
|
17
17
|
Provides-Extra: mcp
|
|
18
18
|
Provides-Extra: all
|
|
@@ -45,7 +45,7 @@ Dynamic: license-file
|
|
|
45
45
|

|
|
46
46
|

|
|
47
47
|
|
|
48
|
-
*Version: 27.3.
|
|
48
|
+
*Version: 27.3.9*
|
|
49
49
|
|
|
50
50
|
> **Documentation** — Installation, deployment, usage across the API, CLI, and MCP
|
|
51
51
|
> backing GitLab instance are maintained in the
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|

|
|
21
21
|

|
|
22
22
|
|
|
23
|
-
*Version: 27.3.
|
|
23
|
+
*Version: 27.3.9*
|
|
24
24
|
|
|
25
25
|
> **Documentation** — Installation, deployment, usage across the API, CLI, and MCP
|
|
26
26
|
> backing GitLab instance are maintained in the
|
|
@@ -0,0 +1,261 @@
|
|
|
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 = "gitlab-mcp"
|
|
13
|
+
|
|
14
|
+
SOURCES = (
|
|
15
|
+
source_meta(
|
|
16
|
+
tool="gitlab_get_issues",
|
|
17
|
+
source_id="issues",
|
|
18
|
+
record_type="Issue",
|
|
19
|
+
id_field="id",
|
|
20
|
+
arguments={
|
|
21
|
+
"max_pages": 1,
|
|
22
|
+
"per_page": 50,
|
|
23
|
+
"state": "opened",
|
|
24
|
+
},
|
|
25
|
+
cursor_field="updated_at",
|
|
26
|
+
description="Open GitLab issues visible to the configured token (first 50).",
|
|
27
|
+
records_path="data",
|
|
28
|
+
text_field="description",
|
|
29
|
+
title_field="title",
|
|
30
|
+
),
|
|
31
|
+
source_meta(
|
|
32
|
+
tool="gitlab_get_projects",
|
|
33
|
+
source_id="projects",
|
|
34
|
+
record_type="Project",
|
|
35
|
+
id_field="id",
|
|
36
|
+
cursor_field="last_activity_at",
|
|
37
|
+
description="GitLab projects visible to the configured token.",
|
|
38
|
+
incremental=True,
|
|
39
|
+
page_param="page",
|
|
40
|
+
page_size_param="per_page",
|
|
41
|
+
pagination="page",
|
|
42
|
+
preset={
|
|
43
|
+
"doc_type": "repository",
|
|
44
|
+
"page_kind": "number",
|
|
45
|
+
"params_style": "args",
|
|
46
|
+
},
|
|
47
|
+
records_path="data",
|
|
48
|
+
server="gitlab-mcp",
|
|
49
|
+
text_field="description",
|
|
50
|
+
title_field="path_with_namespace",
|
|
51
|
+
),
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
SCHEMA_MAPPINGS = {
|
|
55
|
+
"CheckRun": {
|
|
56
|
+
"fields": {
|
|
57
|
+
"createdAt": "xsd:dateTime",
|
|
58
|
+
"duration": "xsd:decimal",
|
|
59
|
+
"failureReason": "xsd:string",
|
|
60
|
+
"finishedAt": "xsd:dateTime",
|
|
61
|
+
"iid": "xsd:string",
|
|
62
|
+
"logUrl": "xsd:string",
|
|
63
|
+
"pipelineStatus": "xsd:string",
|
|
64
|
+
"ref": "xsd:string",
|
|
65
|
+
"sha": "xsd:string",
|
|
66
|
+
"startedAt": "xsd:dateTime",
|
|
67
|
+
"state": "xsd:string",
|
|
68
|
+
"triggerSource": "xsd:string",
|
|
69
|
+
"webUrl": "xsd:string",
|
|
70
|
+
},
|
|
71
|
+
"ontology_class": "PipelineRun",
|
|
72
|
+
},
|
|
73
|
+
"Epic": {
|
|
74
|
+
"fields": {
|
|
75
|
+
"createdAt": "xsd:dateTime",
|
|
76
|
+
"duration": "xsd:decimal",
|
|
77
|
+
"failureReason": "xsd:string",
|
|
78
|
+
"finishedAt": "xsd:dateTime",
|
|
79
|
+
"iid": "xsd:string",
|
|
80
|
+
"logUrl": "xsd:string",
|
|
81
|
+
"pipelineStatus": "xsd:string",
|
|
82
|
+
"ref": "xsd:string",
|
|
83
|
+
"sha": "xsd:string",
|
|
84
|
+
"startedAt": "xsd:dateTime",
|
|
85
|
+
"state": "xsd:string",
|
|
86
|
+
"triggerSource": "xsd:string",
|
|
87
|
+
"webUrl": "xsd:string",
|
|
88
|
+
},
|
|
89
|
+
"ontology_class": "WorkItem",
|
|
90
|
+
},
|
|
91
|
+
"GitLabGroup": {
|
|
92
|
+
"fields": {
|
|
93
|
+
"createdAt": "xsd:dateTime",
|
|
94
|
+
"duration": "xsd:decimal",
|
|
95
|
+
"failureReason": "xsd:string",
|
|
96
|
+
"finishedAt": "xsd:dateTime",
|
|
97
|
+
"iid": "xsd:string",
|
|
98
|
+
"logUrl": "xsd:string",
|
|
99
|
+
"pipelineStatus": "xsd:string",
|
|
100
|
+
"ref": "xsd:string",
|
|
101
|
+
"sha": "xsd:string",
|
|
102
|
+
"startedAt": "xsd:dateTime",
|
|
103
|
+
"state": "xsd:string",
|
|
104
|
+
"triggerSource": "xsd:string",
|
|
105
|
+
"webUrl": "xsd:string",
|
|
106
|
+
},
|
|
107
|
+
"ontology_class": "IdentityGroup",
|
|
108
|
+
},
|
|
109
|
+
"Issue": {
|
|
110
|
+
"fields": {
|
|
111
|
+
"createdAt": "xsd:dateTime",
|
|
112
|
+
"duration": "xsd:decimal",
|
|
113
|
+
"failureReason": "xsd:string",
|
|
114
|
+
"finishedAt": "xsd:dateTime",
|
|
115
|
+
"iid": "xsd:string",
|
|
116
|
+
"logUrl": "xsd:string",
|
|
117
|
+
"pipelineStatus": "xsd:string",
|
|
118
|
+
"ref": "xsd:string",
|
|
119
|
+
"sha": "xsd:string",
|
|
120
|
+
"startedAt": "xsd:dateTime",
|
|
121
|
+
"state": "xsd:string",
|
|
122
|
+
"triggerSource": "xsd:string",
|
|
123
|
+
"webUrl": "xsd:string",
|
|
124
|
+
},
|
|
125
|
+
"ontology_class": "WorkItem",
|
|
126
|
+
},
|
|
127
|
+
"Job": {
|
|
128
|
+
"fields": {
|
|
129
|
+
"createdAt": "xsd:dateTime",
|
|
130
|
+
"duration": "xsd:decimal",
|
|
131
|
+
"failureReason": "xsd:string",
|
|
132
|
+
"finishedAt": "xsd:dateTime",
|
|
133
|
+
"iid": "xsd:string",
|
|
134
|
+
"logUrl": "xsd:string",
|
|
135
|
+
"pipelineStatus": "xsd:string",
|
|
136
|
+
"ref": "xsd:string",
|
|
137
|
+
"sha": "xsd:string",
|
|
138
|
+
"startedAt": "xsd:dateTime",
|
|
139
|
+
"state": "xsd:string",
|
|
140
|
+
"triggerSource": "xsd:string",
|
|
141
|
+
"webUrl": "xsd:string",
|
|
142
|
+
},
|
|
143
|
+
"ontology_class": "Action",
|
|
144
|
+
},
|
|
145
|
+
"MergeRequest": {
|
|
146
|
+
"fields": {
|
|
147
|
+
"createdAt": "xsd:dateTime",
|
|
148
|
+
"duration": "xsd:decimal",
|
|
149
|
+
"failureReason": "xsd:string",
|
|
150
|
+
"finishedAt": "xsd:dateTime",
|
|
151
|
+
"iid": "xsd:string",
|
|
152
|
+
"logUrl": "xsd:string",
|
|
153
|
+
"pipelineStatus": "xsd:string",
|
|
154
|
+
"ref": "xsd:string",
|
|
155
|
+
"sha": "xsd:string",
|
|
156
|
+
"startedAt": "xsd:dateTime",
|
|
157
|
+
"state": "xsd:string",
|
|
158
|
+
"triggerSource": "xsd:string",
|
|
159
|
+
"webUrl": "xsd:string",
|
|
160
|
+
},
|
|
161
|
+
"ontology_class": "PullRequest",
|
|
162
|
+
},
|
|
163
|
+
"Pipeline": {
|
|
164
|
+
"fields": {
|
|
165
|
+
"createdAt": "xsd:dateTime",
|
|
166
|
+
"duration": "xsd:decimal",
|
|
167
|
+
"failureReason": "xsd:string",
|
|
168
|
+
"finishedAt": "xsd:dateTime",
|
|
169
|
+
"iid": "xsd:string",
|
|
170
|
+
"logUrl": "xsd:string",
|
|
171
|
+
"pipelineStatus": "xsd:string",
|
|
172
|
+
"ref": "xsd:string",
|
|
173
|
+
"sha": "xsd:string",
|
|
174
|
+
"startedAt": "xsd:dateTime",
|
|
175
|
+
"state": "xsd:string",
|
|
176
|
+
"triggerSource": "xsd:string",
|
|
177
|
+
"webUrl": "xsd:string",
|
|
178
|
+
},
|
|
179
|
+
"ontology_class": "PipelineRun",
|
|
180
|
+
},
|
|
181
|
+
"Project": {
|
|
182
|
+
"fields": {
|
|
183
|
+
"createdAt": "xsd:dateTime",
|
|
184
|
+
"duration": "xsd:decimal",
|
|
185
|
+
"failureReason": "xsd:string",
|
|
186
|
+
"finishedAt": "xsd:dateTime",
|
|
187
|
+
"iid": "xsd:string",
|
|
188
|
+
"logUrl": "xsd:string",
|
|
189
|
+
"pipelineStatus": "xsd:string",
|
|
190
|
+
"ref": "xsd:string",
|
|
191
|
+
"sha": "xsd:string",
|
|
192
|
+
"startedAt": "xsd:dateTime",
|
|
193
|
+
"state": "xsd:string",
|
|
194
|
+
"triggerSource": "xsd:string",
|
|
195
|
+
"webUrl": "xsd:string",
|
|
196
|
+
},
|
|
197
|
+
"ontology_class": "SoftwareProject",
|
|
198
|
+
},
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
RESOURCES = (
|
|
202
|
+
{
|
|
203
|
+
"id_prefix": "checkrun",
|
|
204
|
+
"label": "Check Run",
|
|
205
|
+
"name": "CheckRun",
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"id_prefix": "epic",
|
|
209
|
+
"label": "Epic",
|
|
210
|
+
"name": "Epic",
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"id_prefix": "gitlabgroup",
|
|
214
|
+
"label": "GitLab Group",
|
|
215
|
+
"name": "GitLabGroup",
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
"id_prefix": "issue",
|
|
219
|
+
"label": "Issue",
|
|
220
|
+
"name": "Issue",
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
"id_prefix": "job",
|
|
224
|
+
"label": "Job",
|
|
225
|
+
"name": "Job",
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"id_prefix": "mergerequest",
|
|
229
|
+
"label": "Merge Request",
|
|
230
|
+
"name": "MergeRequest",
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
"id_prefix": "pipeline",
|
|
234
|
+
"label": "Pipeline",
|
|
235
|
+
"name": "Pipeline",
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
"id_prefix": "project",
|
|
239
|
+
"label": "Project",
|
|
240
|
+
"name": "Project",
|
|
241
|
+
},
|
|
242
|
+
)
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
def declaration() -> IngestSourceDeclaration:
|
|
246
|
+
"""The declaration the server assembles from this module."""
|
|
247
|
+
specs = []
|
|
248
|
+
for item in SOURCES:
|
|
249
|
+
for entry in item["connector_sources"]:
|
|
250
|
+
body = {k: v for k, v in entry.items() if k not in ("tool", "mapping")}
|
|
251
|
+
specs.append(
|
|
252
|
+
IngestSourceSpec.model_validate({**body, "tools": (entry["tool"],)})
|
|
253
|
+
)
|
|
254
|
+
return IngestSourceDeclaration.model_validate(
|
|
255
|
+
{
|
|
256
|
+
"connector": CONNECTOR,
|
|
257
|
+
"sources": specs,
|
|
258
|
+
"schema_mappings": SCHEMA_MAPPINGS,
|
|
259
|
+
"resources": RESOURCES,
|
|
260
|
+
}
|
|
261
|
+
)
|
|
@@ -35,7 +35,7 @@ from agent_connector_sdk.mcp.tool_surface import register_tool_surface
|
|
|
35
35
|
from gitlab_api.api_client import Api
|
|
36
36
|
from gitlab_api.auth import get_client
|
|
37
37
|
|
|
38
|
-
__version__ = "27.3.
|
|
38
|
+
__version__ = "27.3.9"
|
|
39
39
|
print(f"Gitlab MCP v{__version__}", file=sys.stderr)
|
|
40
40
|
|
|
41
41
|
logger = get_logger(name="mcp_server")
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"api_version": "arbora.io/v1",
|
|
3
3
|
"artifacts": {
|
|
4
|
-
"connector_manifest.yml": "ce8e95019a673f0268315c5ec472e7dc7ff3d924f5d3594a90f0f4e10a9ee11a",
|
|
5
|
-
"gitlab_api/connectors/mcp_source_presets.json": "08401d486ad760f128203a710577be5be0a7c892acd6f46685077d19294b641e",
|
|
6
|
-
"gitlab_api/connectors/tool_schema_fingerprints.json": "0cf8e4ef949fc58d36f74b949ae9e8f5ec25dc607dfb186da1eb1efc3728edc1",
|
|
7
4
|
"gitlab_api/ontology/fixtures/records.json": "5f0417820053941933f15b3f459750753f4e8e34cf1e7853fd030c1143356b40",
|
|
8
5
|
"gitlab_api/ontology/gitlab.ttl": "19fa64000d2e51c60c53074b1fae4ab98aed85318337b5a2199f4837ae9f3fc0",
|
|
9
6
|
"gitlab_api/ontology/mappings/source.yaml": "167206b5387f7ca97ce02e0f15164f8fe41f06b413b591d0008c29e9f0a95e7f",
|
|
@@ -24,10 +24,8 @@
|
|
|
24
24
|
rdfs:label "Project" ;
|
|
25
25
|
rdfs:comment "A GitLab project / repository (gitlab_projects)." .
|
|
26
26
|
|
|
27
|
-
:MergeRequest a owl:Class
|
|
28
|
-
|
|
29
|
-
rdfs:label "Merge Request" ;
|
|
30
|
-
rdfs:comment "A proposed change under review, from a source to a target branch (gitlab_merge_requests)." .
|
|
27
|
+
:MergeRequest a owl:Class .
|
|
28
|
+
|
|
31
29
|
|
|
32
30
|
:Pipeline a owl:Class ;
|
|
33
31
|
rdfs:subClassOf :PipelineRun ;
|
|
@@ -189,5 +187,4 @@
|
|
|
189
187
|
rdfs:comment """GitLab source-control and CI/CD delivery model — groups, projects,
|
|
190
188
|
merge requests, pipelines, jobs, issues, epics, milestones, commits, branches,
|
|
191
189
|
releases and runners, with their review and delivery relationships — federated into
|
|
192
|
-
the agent-connector-sdk knowledge-graph hub."""
|
|
193
|
-
owl:imports <http://knuckles.team/kg> .
|
|
190
|
+
the agent-connector-sdk knowledge-graph hub.""" .
|
|
@@ -4,8 +4,6 @@
|
|
|
4
4
|
"schema_version": "1.0",
|
|
5
5
|
"prompt_version": "0.1.0",
|
|
6
6
|
"source": "gitlab-api",
|
|
7
|
-
"extends": "agent-connector-sdk:base",
|
|
8
|
-
"compose": "append",
|
|
9
7
|
"description": "GitLab DevOps specialist: code review, CI/CD delivery, and issue tracking over the gitlab-api MCP server.",
|
|
10
8
|
"metadata": {
|
|
11
9
|
"topic": "GitLab DevOps",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gitlab-api
|
|
3
|
-
Version: 27.3.
|
|
3
|
+
Version: 27.3.9
|
|
4
4
|
Summary: GitLab API + MCP Server
|
|
5
5
|
Author-email: Project Maintainers <maintainers@users.noreply.github.com>
|
|
6
6
|
License: MIT
|
|
@@ -12,7 +12,7 @@ Classifier: Programming Language :: Python :: 3
|
|
|
12
12
|
Requires-Python: >=3.12
|
|
13
13
|
Description-Content-Type: text/markdown
|
|
14
14
|
License-File: LICENSE
|
|
15
|
-
Requires-Dist: agent-connector-sdk[graphql,mcp]<1.0.0,>=0.
|
|
15
|
+
Requires-Dist: agent-connector-sdk[graphql,mcp]<1.0.0,>=0.4.0
|
|
16
16
|
Requires-Dist: python-dotenv>=1.2.4
|
|
17
17
|
Provides-Extra: mcp
|
|
18
18
|
Provides-Extra: all
|
|
@@ -45,7 +45,7 @@ Dynamic: license-file
|
|
|
45
45
|

|
|
46
46
|

|
|
47
47
|
|
|
48
|
-
*Version: 27.3.
|
|
48
|
+
*Version: 27.3.9*
|
|
49
49
|
|
|
50
50
|
> **Documentation** — Installation, deployment, usage across the API, CLI, and MCP
|
|
51
51
|
> backing GitLab instance are maintained in the
|
|
@@ -7,8 +7,8 @@ gitlab_api/__init__.py
|
|
|
7
7
|
gitlab_api/__main__.py
|
|
8
8
|
gitlab_api/api_client.py
|
|
9
9
|
gitlab_api/auth.py
|
|
10
|
-
gitlab_api/connector_manifest.yml
|
|
11
10
|
gitlab_api/connector_prep.py
|
|
11
|
+
gitlab_api/connector_sources.py
|
|
12
12
|
gitlab_api/gitlab_gql.py
|
|
13
13
|
gitlab_api/gitlab_input_models.py
|
|
14
14
|
gitlab_api/gitlab_response_models.py
|
|
@@ -35,12 +35,9 @@ gitlab_api/api/api_client_system.py
|
|
|
35
35
|
gitlab_api/api/api_client_users_groups.py
|
|
36
36
|
gitlab_api/api/api_client_vulnerabilities.py
|
|
37
37
|
gitlab_api/connectors/__init__.py
|
|
38
|
-
gitlab_api/connectors/mcp_source_presets.json
|
|
39
|
-
gitlab_api/connectors/tool_schema_fingerprints.json
|
|
40
38
|
gitlab_api/ontology/__init__.py
|
|
41
39
|
gitlab_api/ontology/certification.json
|
|
42
40
|
gitlab_api/ontology/gitlab.ttl
|
|
43
|
-
gitlab_api/ontology/ingest_sources.json
|
|
44
41
|
gitlab_api/ontology/fixtures/records.json
|
|
45
42
|
gitlab_api/ontology/mappings/source.yaml
|
|
46
43
|
gitlab_api/ontology/migrations/manifest.json
|
|
@@ -4,12 +4,12 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "gitlab-api"
|
|
7
|
-
version = "27.3.
|
|
7
|
+
version = "27.3.9"
|
|
8
8
|
description = "GitLab 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"
|
|
12
|
-
dependencies = [ "agent-connector-sdk[mcp,graphql]>=0.
|
|
12
|
+
dependencies = [ "agent-connector-sdk[mcp,graphql]>=0.4.0,<1.0.0", "python-dotenv>=1.2.4",]
|
|
13
13
|
[[project.authors]]
|
|
14
14
|
name = "Project Maintainers"
|
|
15
15
|
email = "maintainers@users.noreply.github.com"
|
|
@@ -69,7 +69,7 @@ dev = [
|
|
|
69
69
|
]
|
|
70
70
|
|
|
71
71
|
[tool.setuptools.package-data]
|
|
72
|
-
gitlab_api = [ "mcp_config.json", "
|
|
72
|
+
gitlab_api = [ "mcp_config.json", "agent_data/**", "prompts/**", "skills/**", "ontology/**", "connectors/**",]
|
|
73
73
|
|
|
74
74
|
[tool.ruff.lint]
|
|
75
75
|
select = [ "E", "F", "I", "UP", "B",]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
agent-connector-sdk[mcp]>=0.4.0,<1.0.0
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
from gitlab_api.connector_sources import declaration as declared_sources
|
|
5
6
|
import re
|
|
6
7
|
from pathlib import Path
|
|
7
8
|
|
|
8
9
|
import pytest
|
|
9
|
-
import yaml
|
|
10
10
|
|
|
11
11
|
import gitlab_api
|
|
12
12
|
|
|
@@ -35,17 +35,15 @@ def test_state_is_declared_on_the_issue_type() -> None:
|
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
def test_merge_request_and_check_run_extend_shared_classes() -> None:
|
|
38
|
-
|
|
38
|
+
# The EG ontology owns MergeRequest's parent (a sibling of PullRequest); the pack gives it none.
|
|
39
|
+
assert "rdfs:subClassOf" not in _block("MergeRequest")
|
|
39
40
|
assert "rdfs:subClassOf :PipelineRun" in _block("CheckRun")
|
|
40
41
|
|
|
41
42
|
|
|
42
43
|
def test_no_mapping_has_a_null_ontology_class() -> None:
|
|
43
|
-
manifest = yaml.safe_load(
|
|
44
|
-
(PACKAGE.parent / "connector_manifest.yml").read_text("utf-8")
|
|
45
|
-
)
|
|
46
44
|
unmapped = [
|
|
47
45
|
name
|
|
48
|
-
for name, mapping in
|
|
49
|
-
if not mapping
|
|
46
|
+
for name, mapping in declared_sources().schema_mappings.items()
|
|
47
|
+
if not mapping.ontology_class
|
|
50
48
|
]
|
|
51
49
|
assert unmapped == []
|
|
@@ -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,13 +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: "gitlab_api"
|
|
40
39
|
}
|
|
41
|
-
|
|
42
|
-
match = re.search(r'^\s*"?connector"?\s*:\s*"?([^"\s,]+)', manifest, re.MULTILINE)
|
|
43
|
-
assert match is not None and match.group(1) == FLEET
|
|
44
|
-
fingerprints = PACKAGE / "connectors" / "tool_schema_fingerprints.json"
|
|
45
|
-
if fingerprints.is_file():
|
|
46
|
-
assert (
|
|
47
|
-
json.loads(fingerprints.read_text(encoding="utf-8"))["connector"] == FLEET
|
|
48
|
-
)
|
|
40
|
+
assert connector_name("gitlab_api") == FLEET
|
|
49
41
|
for module in sorted(PACKAGE.glob("*.py")):
|
|
50
42
|
assert all(name == FLEET for name in _call_connectors(module)), module.name
|
|
@@ -2,21 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from pathlib import Path
|
|
6
5
|
|
|
7
6
|
import pytest
|
|
8
|
-
import
|
|
9
|
-
from agent_connector_sdk.ingest.sources import load_ingest_sources
|
|
7
|
+
from gitlab_api.connector_sources import declaration as declared_sources
|
|
10
8
|
from agent_connector_sdk.mcp.method_tools import operation_annotations, operation_verb
|
|
11
9
|
from agent_connector_sdk.mcp.tool_surface import operation_prefix
|
|
12
10
|
|
|
13
|
-
import gitlab_api
|
|
14
11
|
from gitlab_api.api_client import Api
|
|
15
12
|
|
|
16
13
|
|
|
17
14
|
@pytest.mark.spec("CONN-GITLAB-API-R001")
|
|
18
15
|
def test_declares_ingestible_sources() -> None:
|
|
19
|
-
declaration =
|
|
16
|
+
declaration = declared_sources()
|
|
20
17
|
assert declaration is not None
|
|
21
18
|
assert declaration.connector == "gitlab-mcp"
|
|
22
19
|
source = declaration.source("projects")
|
|
@@ -24,12 +21,7 @@ def test_declares_ingestible_sources() -> None:
|
|
|
24
21
|
prefix = operation_prefix("gitlab-api")
|
|
25
22
|
assert source.tools == (f"{prefix}_get_projects",)
|
|
26
23
|
# The engine admits a record only under the pack mapping of its type.
|
|
27
|
-
|
|
28
|
-
(Path(gitlab_api.__file__).parent / "connector_manifest.yml").read_text(
|
|
29
|
-
"utf-8"
|
|
30
|
-
)
|
|
31
|
-
)
|
|
32
|
-
assert source.record_type in manifest["schema_mappings"]
|
|
24
|
+
assert source.record_type in declared_sources().schema_mappings
|
|
33
25
|
method = getattr(Api, "get_projects")
|
|
34
26
|
annotations = operation_annotations("get_projects", operation_verb(method))
|
|
35
27
|
assert annotations.read_only_hint is True
|
|
@@ -37,19 +29,14 @@ def test_declares_ingestible_sources() -> None:
|
|
|
37
29
|
|
|
38
30
|
@pytest.mark.spec("CONN-GITLAB-API-R001")
|
|
39
31
|
def test_declares_issues_source() -> None:
|
|
40
|
-
declaration =
|
|
32
|
+
declaration = declared_sources()
|
|
41
33
|
assert declaration is not None
|
|
42
34
|
assert declaration.connector == "gitlab-mcp"
|
|
43
35
|
source = declaration.source("issues")
|
|
44
36
|
assert source is not None and source.record_type == "Issue"
|
|
45
37
|
prefix = operation_prefix("gitlab-api")
|
|
46
38
|
assert source.tools == (f"{prefix}_get_issues",)
|
|
47
|
-
|
|
48
|
-
(Path(gitlab_api.__file__).parent / "connector_manifest.yml").read_text(
|
|
49
|
-
"utf-8"
|
|
50
|
-
)
|
|
51
|
-
)
|
|
52
|
-
assert source.record_type in manifest["schema_mappings"]
|
|
39
|
+
assert source.record_type in declared_sources().schema_mappings
|
|
53
40
|
method = getattr(Api, "get_issues")
|
|
54
41
|
annotations = operation_annotations("get_issues", operation_verb(method))
|
|
55
42
|
assert annotations.read_only_hint is True
|
|
@@ -105,6 +105,4 @@ def test_ontology_joins_the_parent_graph(path: Path) -> None:
|
|
|
105
105
|
declared = {s for s, p, o in triples if p == RDF_TYPE and o == OWL + "Class"}
|
|
106
106
|
if not declared:
|
|
107
107
|
pytest.skip("declares no classes")
|
|
108
|
-
imports = {o for s, p, o in triples if p == OWL + "imports"}
|
|
109
|
-
assert any(i == PARENT_IRI or i.startswith(PARENT_IRI + "/") for i in imports)
|
|
110
108
|
assert _orphans(triples) == PENDING_NEW_PARENT & declared
|
|
@@ -1,302 +0,0 @@
|
|
|
1
|
-
connector: gitlab-mcp
|
|
2
|
-
ontology_source: gitlab
|
|
3
|
-
schema_version: '1'
|
|
4
|
-
resources:
|
|
5
|
-
- name: CheckRun
|
|
6
|
-
label: Check Run
|
|
7
|
-
id_prefix: checkrun
|
|
8
|
-
relations: []
|
|
9
|
-
- name: Epic
|
|
10
|
-
label: Epic
|
|
11
|
-
id_prefix: epic
|
|
12
|
-
relations: []
|
|
13
|
-
- name: GitLabGroup
|
|
14
|
-
label: GitLab Group
|
|
15
|
-
id_prefix: gitlabgroup
|
|
16
|
-
relations: []
|
|
17
|
-
- name: Issue
|
|
18
|
-
label: Issue
|
|
19
|
-
id_prefix: issue
|
|
20
|
-
relations: []
|
|
21
|
-
- name: Job
|
|
22
|
-
label: Job
|
|
23
|
-
id_prefix: job
|
|
24
|
-
relations:
|
|
25
|
-
- name: ranOnRunner
|
|
26
|
-
label: ran on runner
|
|
27
|
-
target: Runner
|
|
28
|
-
lpg_rel_type: ''
|
|
29
|
-
- name: MergeRequest
|
|
30
|
-
label: Merge Request
|
|
31
|
-
id_prefix: mergerequest
|
|
32
|
-
relations:
|
|
33
|
-
- name: closesIssue
|
|
34
|
-
label: closes issue
|
|
35
|
-
target: Issue
|
|
36
|
-
lpg_rel_type: ''
|
|
37
|
-
- name: targetsBranch
|
|
38
|
-
label: targets branch
|
|
39
|
-
target: Branch
|
|
40
|
-
lpg_rel_type: ''
|
|
41
|
-
- name: Pipeline
|
|
42
|
-
label: Pipeline
|
|
43
|
-
id_prefix: pipeline
|
|
44
|
-
relations:
|
|
45
|
-
- name: hasJob
|
|
46
|
-
label: has job
|
|
47
|
-
target: Job
|
|
48
|
-
lpg_rel_type: ''
|
|
49
|
-
- name: Project
|
|
50
|
-
label: Project
|
|
51
|
-
id_prefix: project
|
|
52
|
-
relations:
|
|
53
|
-
- name: partOfGroup
|
|
54
|
-
label: part of group
|
|
55
|
-
target: GitLabGroup
|
|
56
|
-
lpg_rel_type: ''
|
|
57
|
-
actions:
|
|
58
|
-
- id: epistemic-answer
|
|
59
|
-
name: Epistemic Answer
|
|
60
|
-
description: 'Answers epistemic_status/why/what_changed queries over the shared knowledge graph: calibrated
|
|
61
|
-
confidence, evidence/source citations, belief justification trees, bitemporal valid/tx history, and
|
|
62
|
-
policy-redaction-aware provenance.'
|
|
63
|
-
label: ''
|
|
64
|
-
parameters: []
|
|
65
|
-
target_resource: null
|
|
66
|
-
conflict_policy: null
|
|
67
|
-
requires_approval: true
|
|
68
|
-
approval_class: unclassified
|
|
69
|
-
effects: []
|
|
70
|
-
- id: run_graph_flow
|
|
71
|
-
name: Graph Flow Execution
|
|
72
|
-
description: Execute a workflow through the agent's graph orchestration engine
|
|
73
|
-
label: ''
|
|
74
|
-
parameters: []
|
|
75
|
-
target_resource: null
|
|
76
|
-
conflict_policy: null
|
|
77
|
-
requires_approval: true
|
|
78
|
-
approval_class: unclassified
|
|
79
|
-
effects: []
|
|
80
|
-
events:
|
|
81
|
-
- name: gitlab-projects.updated
|
|
82
|
-
resource: repository
|
|
83
|
-
description: "Watermark event for 'gitlab-projects' \u2014 advances on last_activity_at (mcp_source_presets.json)."
|
|
84
|
-
identity:
|
|
85
|
-
id_field:
|
|
86
|
-
repository: id
|
|
87
|
-
title_field:
|
|
88
|
-
repository: path_with_namespace
|
|
89
|
-
text_field:
|
|
90
|
-
repository: description
|
|
91
|
-
updated_field:
|
|
92
|
-
repository: last_activity_at
|
|
93
|
-
permissions:
|
|
94
|
-
acl_fields: []
|
|
95
|
-
tenant_field: null
|
|
96
|
-
read_roles: []
|
|
97
|
-
schema_mappings:
|
|
98
|
-
CheckRun:
|
|
99
|
-
ontology_class: PipelineRun
|
|
100
|
-
fields:
|
|
101
|
-
createdAt: xsd:dateTime
|
|
102
|
-
duration: xsd:decimal
|
|
103
|
-
failureReason: xsd:string
|
|
104
|
-
finishedAt: xsd:dateTime
|
|
105
|
-
iid: xsd:string
|
|
106
|
-
logUrl: xsd:string
|
|
107
|
-
pipelineStatus: xsd:string
|
|
108
|
-
ref: xsd:string
|
|
109
|
-
sha: xsd:string
|
|
110
|
-
startedAt: xsd:dateTime
|
|
111
|
-
state: xsd:string
|
|
112
|
-
triggerSource: xsd:string
|
|
113
|
-
webUrl: xsd:string
|
|
114
|
-
Epic:
|
|
115
|
-
ontology_class: WorkItem
|
|
116
|
-
fields:
|
|
117
|
-
createdAt: xsd:dateTime
|
|
118
|
-
duration: xsd:decimal
|
|
119
|
-
failureReason: xsd:string
|
|
120
|
-
finishedAt: xsd:dateTime
|
|
121
|
-
iid: xsd:string
|
|
122
|
-
logUrl: xsd:string
|
|
123
|
-
pipelineStatus: xsd:string
|
|
124
|
-
ref: xsd:string
|
|
125
|
-
sha: xsd:string
|
|
126
|
-
startedAt: xsd:dateTime
|
|
127
|
-
state: xsd:string
|
|
128
|
-
triggerSource: xsd:string
|
|
129
|
-
webUrl: xsd:string
|
|
130
|
-
GitLabGroup:
|
|
131
|
-
ontology_class: IdentityGroup
|
|
132
|
-
fields:
|
|
133
|
-
createdAt: xsd:dateTime
|
|
134
|
-
duration: xsd:decimal
|
|
135
|
-
failureReason: xsd:string
|
|
136
|
-
finishedAt: xsd:dateTime
|
|
137
|
-
iid: xsd:string
|
|
138
|
-
logUrl: xsd:string
|
|
139
|
-
pipelineStatus: xsd:string
|
|
140
|
-
ref: xsd:string
|
|
141
|
-
sha: xsd:string
|
|
142
|
-
startedAt: xsd:dateTime
|
|
143
|
-
state: xsd:string
|
|
144
|
-
triggerSource: xsd:string
|
|
145
|
-
webUrl: xsd:string
|
|
146
|
-
Issue:
|
|
147
|
-
ontology_class: WorkItem
|
|
148
|
-
fields:
|
|
149
|
-
createdAt: xsd:dateTime
|
|
150
|
-
duration: xsd:decimal
|
|
151
|
-
failureReason: xsd:string
|
|
152
|
-
finishedAt: xsd:dateTime
|
|
153
|
-
iid: xsd:string
|
|
154
|
-
logUrl: xsd:string
|
|
155
|
-
pipelineStatus: xsd:string
|
|
156
|
-
ref: xsd:string
|
|
157
|
-
sha: xsd:string
|
|
158
|
-
startedAt: xsd:dateTime
|
|
159
|
-
state: xsd:string
|
|
160
|
-
triggerSource: xsd:string
|
|
161
|
-
webUrl: xsd:string
|
|
162
|
-
Job:
|
|
163
|
-
ontology_class: Action
|
|
164
|
-
fields:
|
|
165
|
-
createdAt: xsd:dateTime
|
|
166
|
-
duration: xsd:decimal
|
|
167
|
-
failureReason: xsd:string
|
|
168
|
-
finishedAt: xsd:dateTime
|
|
169
|
-
iid: xsd:string
|
|
170
|
-
logUrl: xsd:string
|
|
171
|
-
pipelineStatus: xsd:string
|
|
172
|
-
ref: xsd:string
|
|
173
|
-
sha: xsd:string
|
|
174
|
-
startedAt: xsd:dateTime
|
|
175
|
-
state: xsd:string
|
|
176
|
-
triggerSource: xsd:string
|
|
177
|
-
webUrl: xsd:string
|
|
178
|
-
MergeRequest:
|
|
179
|
-
ontology_class: PullRequest
|
|
180
|
-
fields:
|
|
181
|
-
createdAt: xsd:dateTime
|
|
182
|
-
duration: xsd:decimal
|
|
183
|
-
failureReason: xsd:string
|
|
184
|
-
finishedAt: xsd:dateTime
|
|
185
|
-
iid: xsd:string
|
|
186
|
-
logUrl: xsd:string
|
|
187
|
-
pipelineStatus: xsd:string
|
|
188
|
-
ref: xsd:string
|
|
189
|
-
sha: xsd:string
|
|
190
|
-
startedAt: xsd:dateTime
|
|
191
|
-
state: xsd:string
|
|
192
|
-
triggerSource: xsd:string
|
|
193
|
-
webUrl: xsd:string
|
|
194
|
-
Pipeline:
|
|
195
|
-
ontology_class: PipelineRun
|
|
196
|
-
fields:
|
|
197
|
-
createdAt: xsd:dateTime
|
|
198
|
-
duration: xsd:decimal
|
|
199
|
-
failureReason: xsd:string
|
|
200
|
-
finishedAt: xsd:dateTime
|
|
201
|
-
iid: xsd:string
|
|
202
|
-
logUrl: xsd:string
|
|
203
|
-
pipelineStatus: xsd:string
|
|
204
|
-
ref: xsd:string
|
|
205
|
-
sha: xsd:string
|
|
206
|
-
startedAt: xsd:dateTime
|
|
207
|
-
state: xsd:string
|
|
208
|
-
triggerSource: xsd:string
|
|
209
|
-
webUrl: xsd:string
|
|
210
|
-
Project:
|
|
211
|
-
ontology_class: SoftwareProject
|
|
212
|
-
fields:
|
|
213
|
-
createdAt: xsd:dateTime
|
|
214
|
-
duration: xsd:decimal
|
|
215
|
-
failureReason: xsd:string
|
|
216
|
-
finishedAt: xsd:dateTime
|
|
217
|
-
iid: xsd:string
|
|
218
|
-
logUrl: xsd:string
|
|
219
|
-
pipelineStatus: xsd:string
|
|
220
|
-
ref: xsd:string
|
|
221
|
-
sha: xsd:string
|
|
222
|
-
startedAt: xsd:dateTime
|
|
223
|
-
state: xsd:string
|
|
224
|
-
triggerSource: xsd:string
|
|
225
|
-
webUrl: xsd:string
|
|
226
|
-
sync:
|
|
227
|
-
- preset: gitlab-projects
|
|
228
|
-
server: gitlab-mcp
|
|
229
|
-
tool: gitlab_get_projects
|
|
230
|
-
action: null
|
|
231
|
-
records_path: data
|
|
232
|
-
id_field: id
|
|
233
|
-
title_field: path_with_namespace
|
|
234
|
-
text_field: description
|
|
235
|
-
updated_field: last_activity_at
|
|
236
|
-
pagination: page
|
|
237
|
-
doc_type: repository
|
|
238
|
-
tool_schema_sha256: 18b7c440b1165616ba8455535985becf3c14d643a22f40c34d4f321c736c9e06
|
|
239
|
-
raw:
|
|
240
|
-
server: gitlab-mcp
|
|
241
|
-
tool: gitlab_get_projects
|
|
242
|
-
records_path: data
|
|
243
|
-
id_field: id
|
|
244
|
-
title_field: path_with_namespace
|
|
245
|
-
text_field: description
|
|
246
|
-
updated_field: last_activity_at
|
|
247
|
-
pagination: page
|
|
248
|
-
page_kind: number
|
|
249
|
-
page_param: page
|
|
250
|
-
page_size_param: per_page
|
|
251
|
-
doc_type: repository
|
|
252
|
-
params_style: args
|
|
253
|
-
provenance:
|
|
254
|
-
generated_by: scripts/generate_connector_manifests.py
|
|
255
|
-
generated_at: '2026-10-23T00:00:00Z'
|
|
256
|
-
source_artifacts:
|
|
257
|
-
- gitlab_api/connectors/mcp_source_presets.json
|
|
258
|
-
- gitlab_api/connectors/tool_schema_fingerprints.json
|
|
259
|
-
- gitlab_api/ontology/gitlab.ttl
|
|
260
|
-
integrity:
|
|
261
|
-
algorithm: urdna2015-sha256
|
|
262
|
-
hash: 51cdef79ba7080a662846127c295b57fed42f9c35abd42d513112051eeebf473
|
|
263
|
-
triple_count: 95
|
|
264
|
-
signer: UNSIGNED-PREVIEW
|
|
265
|
-
signature_algorithm: none
|
|
266
|
-
signing_public_key: ''
|
|
267
|
-
signature: null
|
|
268
|
-
source_commit: 0ad207db86cf74ee989ebf72581f432906efe85a
|
|
269
|
-
policy:
|
|
270
|
-
pii_fields: {}
|
|
271
|
-
tenant_boundary: null
|
|
272
|
-
rls: []
|
|
273
|
-
review_todos:
|
|
274
|
-
- "policy.rls / policy.tenant_boundary are unset \u2014 no row-level-security predicate has been reviewed\
|
|
275
|
-
\ for this connector."
|
|
276
|
-
- "relation 'authoredBy' has no declared rdfs:domain resolving to a known resource in this connector's\
|
|
277
|
-
\ ontology \u2014 not attached to any resource; verify its true domain manually."
|
|
278
|
-
- "relation 'belongsToProject' has no declared rdfs:domain resolving to a known resource in this connector's\
|
|
279
|
-
\ ontology \u2014 not attached to any resource; verify its true domain manually."
|
|
280
|
-
- "relation 'hasMilestone' has no declared rdfs:domain resolving to a known resource in this connector's\
|
|
281
|
-
\ ontology \u2014 not attached to any resource; verify its true domain manually."
|
|
282
|
-
- "relation 'ranFor' has no declared rdfs:domain resolving to a known resource in this connector's ontology\
|
|
283
|
-
\ \u2014 not attached to any resource; verify its true domain manually."
|
|
284
|
-
- "relation 'triggeredPipeline' has no declared rdfs:domain resolving to a known resource in this connector's\
|
|
285
|
-
\ ontology \u2014 not attached to any resource; verify its true domain manually."
|
|
286
|
-
- "schema_mappings.CheckRun.ontology_class = 'PipelineRun' [source ttl rdfs:subClassOf] \u2014 verify\
|
|
287
|
-
\ manually before relying on this crosswalk for reasoning/joins."
|
|
288
|
-
- "schema_mappings.Epic.ontology_class = 'WorkItem' [source ttl rdfs:subClassOf] \u2014 verify manually\
|
|
289
|
-
\ before relying on this crosswalk for reasoning/joins."
|
|
290
|
-
- "schema_mappings.GitLabGroup.ontology_class = 'IdentityGroup' [source ttl rdfs:subClassOf] \u2014 verify\
|
|
291
|
-
\ manually before relying on this crosswalk for reasoning/joins."
|
|
292
|
-
- "schema_mappings.Issue.ontology_class = 'WorkItem' [source ttl rdfs:subClassOf] \u2014 verify manually\
|
|
293
|
-
\ before relying on this crosswalk for reasoning/joins."
|
|
294
|
-
- "schema_mappings.Job.ontology_class = 'Action' [DRAFT \u2014 nearest hub-canonical-class-by-name heuristic\
|
|
295
|
-
\ (D16 residue; human sign-off required before use)] \u2014 verify manually before relying on this crosswalk\
|
|
296
|
-
\ for reasoning/joins."
|
|
297
|
-
- "schema_mappings.MergeRequest.ontology_class = 'PullRequest' [source ttl rdfs:subClassOf] \u2014 verify\
|
|
298
|
-
\ manually before relying on this crosswalk for reasoning/joins."
|
|
299
|
-
- "schema_mappings.Pipeline.ontology_class = 'PipelineRun' [source ttl rdfs:subClassOf] \u2014 verify\
|
|
300
|
-
\ manually before relying on this crosswalk for reasoning/joins."
|
|
301
|
-
- "schema_mappings.Project.ontology_class = 'SoftwareProject' [source ttl rdfs:subClassOf] \u2014 verify\
|
|
302
|
-
\ manually before relying on this crosswalk for reasoning/joins."
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"_comment": "Tier-1 mcp_tool source presets for gitlab-api (AU-KG.ingest.mcp-tool-connector). Syncs GitLab projects into the KG as repository documents via the gitlab-api MCP server. Contributed presets win over the central MCP_TOOL_PRESETS. Extend with merge-request / pipeline presets as needed.",
|
|
3
|
-
"gitlab-projects": {
|
|
4
|
-
"server": "gitlab-mcp",
|
|
5
|
-
"tool": "gitlab_get_projects",
|
|
6
|
-
"records_path": "data",
|
|
7
|
-
"id_field": "id",
|
|
8
|
-
"title_field": "path_with_namespace",
|
|
9
|
-
"text_field": "description",
|
|
10
|
-
"updated_field": "last_activity_at",
|
|
11
|
-
"pagination": "page",
|
|
12
|
-
"page_kind": "number",
|
|
13
|
-
"page_param": "page",
|
|
14
|
-
"page_size_param": "per_page",
|
|
15
|
-
"doc_type": "repository",
|
|
16
|
-
"params_style": "args"
|
|
17
|
-
}
|
|
18
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"connector": "gitlab-mcp",
|
|
3
|
-
"sources": [
|
|
4
|
-
{
|
|
5
|
-
"source_id": "projects",
|
|
6
|
-
"record_type": "Project",
|
|
7
|
-
"tools": [
|
|
8
|
-
"gitlab_get_projects"
|
|
9
|
-
],
|
|
10
|
-
"records_path": "data",
|
|
11
|
-
"id_field": "id",
|
|
12
|
-
"title_field": "path_with_namespace",
|
|
13
|
-
"text_field": "description",
|
|
14
|
-
"cursor_field": "last_activity_at",
|
|
15
|
-
"incremental": true,
|
|
16
|
-
"description": "GitLab projects visible to the configured token."
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
"source_id": "issues",
|
|
20
|
-
"record_type": "Issue",
|
|
21
|
-
"tools": [
|
|
22
|
-
"gitlab_get_issues"
|
|
23
|
-
],
|
|
24
|
-
"records_path": "data",
|
|
25
|
-
"id_field": "id",
|
|
26
|
-
"title_field": "title",
|
|
27
|
-
"text_field": "description",
|
|
28
|
-
"cursor_field": "updated_at",
|
|
29
|
-
"incremental": false,
|
|
30
|
-
"arguments": {
|
|
31
|
-
"state": "opened",
|
|
32
|
-
"per_page": 50,
|
|
33
|
-
"max_pages": 1
|
|
34
|
-
},
|
|
35
|
-
"description": "Open GitLab issues visible to the configured token (first 50)."
|
|
36
|
-
}
|
|
37
|
-
]
|
|
38
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
agent-connector-sdk[mcp]>=0.2.1,<1.0.0
|
|
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
|
{gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-api-operations/agents/openai.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-merge-request-create/SKILL.md
RENAMED
|
File without changes
|
{gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-merge-request-create/WORKFLOW.md
RENAMED
|
File without changes
|
{gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-merge-request-review/SKILL.md
RENAMED
|
File without changes
|
{gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-merge-request-review/WORKFLOW.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-vulnerabilities/WORKFLOW.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
|