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.
Files changed (96) hide show
  1. {gitlab_api-27.3.8/gitlab_api.egg-info → gitlab_api-27.3.9}/PKG-INFO +3 -3
  2. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/README.md +1 -1
  3. gitlab_api-27.3.9/gitlab_api/connector_sources.py +261 -0
  4. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/mcp_server.py +1 -1
  5. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/ontology/certification.json +0 -3
  6. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/ontology/gitlab.ttl +3 -6
  7. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/prompts/devops_specialist.json +0 -2
  8. {gitlab_api-27.3.8 → gitlab_api-27.3.9/gitlab_api.egg-info}/PKG-INFO +3 -3
  9. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api.egg-info/SOURCES.txt +1 -4
  10. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api.egg-info/requires.txt +1 -1
  11. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/pyproject.toml +3 -3
  12. gitlab_api-27.3.9/requirements.txt +1 -0
  13. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_cq_paths.py +5 -7
  14. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_fleet_name.py +2 -10
  15. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_ingest_sources.py +5 -18
  16. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_ontology_parent_link.py +0 -2
  17. gitlab_api-27.3.8/gitlab_api/connector_manifest.yml +0 -302
  18. gitlab_api-27.3.8/gitlab_api/connectors/mcp_source_presets.json +0 -18
  19. gitlab_api-27.3.8/gitlab_api/connectors/tool_schema_fingerprints.json +0 -8
  20. gitlab_api-27.3.8/gitlab_api/ontology/ingest_sources.json +0 -38
  21. gitlab_api-27.3.8/requirements.txt +0 -1
  22. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/LICENSE +0 -0
  23. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/MANIFEST.in +0 -0
  24. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/__init__.py +0 -0
  25. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/__main__.py +0 -0
  26. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/api/__init__.py +0 -0
  27. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/api/api_client_base.py +0 -0
  28. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/api/api_client_environments.py +0 -0
  29. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/api/api_client_issues.py +0 -0
  30. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/api/api_client_merge_requests.py +0 -0
  31. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/api/api_client_other.py +0 -0
  32. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/api/api_client_pipelines.py +0 -0
  33. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/api/api_client_projects.py +0 -0
  34. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/api/api_client_repositories.py +0 -0
  35. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/api/api_client_system.py +0 -0
  36. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/api/api_client_users_groups.py +0 -0
  37. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/api/api_client_vulnerabilities.py +0 -0
  38. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/api_client.py +0 -0
  39. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/auth.py +0 -0
  40. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/connector_prep.py +0 -0
  41. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/connectors/__init__.py +0 -0
  42. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/gitlab_gql.py +0 -0
  43. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/gitlab_input_models.py +0 -0
  44. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/gitlab_response_models.py +0 -0
  45. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/instances.py +0 -0
  46. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/kg_ingest.py +0 -0
  47. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/mcp_config.json +0 -0
  48. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/ontology/__init__.py +0 -0
  49. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/ontology/fixtures/records.json +0 -0
  50. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/ontology/mappings/source.yaml +0 -0
  51. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/ontology/migrations/manifest.json +0 -0
  52. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/ontology/shapes/connector.shacl.ttl +0 -0
  53. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/prompts/__init__.py +0 -0
  54. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/__init__.py +0 -0
  55. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-api-operations/SKILL.md +0 -0
  56. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-api-operations/agents/openai.yaml +0 -0
  57. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-api-operations/references/catalog.md +0 -0
  58. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-issues/SKILL.md +0 -0
  59. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-issues/WORKFLOW.md +0 -0
  60. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-merge-request-create/SKILL.md +0 -0
  61. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-merge-request-create/WORKFLOW.md +0 -0
  62. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-merge-request-review/SKILL.md +0 -0
  63. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-merge-request-review/WORKFLOW.md +0 -0
  64. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-pipelines/SKILL.md +0 -0
  65. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-pipelines/WORKFLOW.md +0 -0
  66. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-vulnerabilities/SKILL.md +0 -0
  67. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api/skills/gitlab-vulnerabilities/WORKFLOW.md +0 -0
  68. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api.egg-info/dependency_links.txt +0 -0
  69. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api.egg-info/entry_points.txt +0 -0
  70. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/gitlab_api.egg-info/top_level.txt +0 -0
  71. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/scripts/check_import_safety.py +0 -0
  72. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/scripts/security_contract.py +0 -0
  73. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/scripts/security_sanitizer.py +0 -0
  74. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/scripts/verify_api_integration.py +0 -0
  75. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/setup.cfg +0 -0
  76. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/__init__.py +0 -0
  77. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/conftest.py +0 -0
  78. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_api_wrapper.py +0 -0
  79. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_auth.py +0 -0
  80. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_connector_prep.py +0 -0
  81. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_default_content_surfaces.py +0 -0
  82. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_gitlab_a2a_validation.py +0 -0
  83. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_gitlab_api_brute_force_coverage.py +0 -0
  84. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_gitlab_gql.py +0 -0
  85. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_gitlab_mcp_validation.py +0 -0
  86. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_gitlab_models.py +0 -0
  87. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_identity_context_scoping.py +0 -0
  88. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_init_dynamics.py +0 -0
  89. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_instances.py +0 -0
  90. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_kg_ingest.py +0 -0
  91. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_mock_coverage.py +0 -0
  92. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_security_sanitizer.py +0 -0
  93. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_startup.py +0 -0
  94. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_tool_modes.py +0 -0
  95. {gitlab_api-27.3.8 → gitlab_api-27.3.9}/tests/test_verify_agent.py +0 -0
  96. {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.8
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.3.18
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
  ![PyPI - Wheel](https://img.shields.io/pypi/wheel/gitlab-api)
46
46
  ![PyPI - Implementation](https://img.shields.io/pypi/implementation/gitlab-api)
47
47
 
48
- *Version: 27.3.8*
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
  ![PyPI - Wheel](https://img.shields.io/pypi/wheel/gitlab-api)
21
21
  ![PyPI - Implementation](https://img.shields.io/pypi/implementation/gitlab-api)
22
22
 
23
- *Version: 27.3.8*
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.8"
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
- rdfs:subClassOf :PullRequest ;
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.8
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.3.18
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
  ![PyPI - Wheel](https://img.shields.io/pypi/wheel/gitlab-api)
46
46
  ![PyPI - Implementation](https://img.shields.io/pypi/implementation/gitlab-api)
47
47
 
48
- *Version: 27.3.8*
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
@@ -1,4 +1,4 @@
1
- agent-connector-sdk[graphql,mcp]<1.0.0,>=0.3.18
1
+ agent-connector-sdk[graphql,mcp]<1.0.0,>=0.4.0
2
2
  python-dotenv>=1.2.4
3
3
 
4
4
  [all]
@@ -4,12 +4,12 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "gitlab-api"
7
- version = "27.3.8"
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.3.18,<1.0.0", "python-dotenv>=1.2.4",]
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", "connector_manifest.yml", "agent_data/**", "prompts/**", "skills/**", "ontology/**", "connectors/**",]
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
- assert "rdfs:subClassOf :PullRequest" in _block("MergeRequest")
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 manifest["schema_mappings"].items()
49
- if not mapping["ontology_class"]
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
- manifest = (PACKAGE / "connector_manifest.yml").read_text(encoding="utf-8")
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 yaml
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 = load_ingest_sources(Path(gitlab_api.__file__).parent)
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
- manifest = yaml.safe_load(
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 = load_ingest_sources(Path(gitlab_api.__file__).parent)
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
- manifest = yaml.safe_load(
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,8 +0,0 @@
1
- {
2
- "algorithm": "agent-connector-sdk:mcp-tool-contract-compat:v2",
3
- "connector": "gitlab-mcp",
4
- "schema_version": "1",
5
- "tools": {
6
- "gitlab_get_projects": "18b7c440b1165616ba8455535985becf3c14d643a22f40c34d4f321c736c9e06"
7
- }
8
- }
@@ -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