GitLab Tools
List and summarize GitLab merge requests and issues with read-only GitlabTools functions.
"""
GitLab Tools
Setup:
1. Create a personal access token in GitLab with read scopes.
2. Set environment variables:
- GITLAB_ACCESS_TOKEN: Your token
- GITLAB_BASE_URL: Optional GitLab URL (defaults to https://gitlab.com)
"""
from agno.agent import Agent
from agno.tools.gitlab import GitlabTools
# ---------------------------------------------------------------------------
# Create Agent
# ---------------------------------------------------------------------------
agent = Agent(
instructions=[
"Use GitLab tools to answer repository questions.",
"Use read-only operations unless explicitly asked to modify data.",
],
tools=[
GitlabTools(
enable_list_projects=True,
enable_get_projects=True,
enable_list_merge_requests=True,
enable_get_merge_request=True,
enable_list_issues=True,
)
],
)
# ---------------------------------------------------------------------------
# Run Agent
# ---------------------------------------------------------------------------
if __name__ == "__main__":
agent.print_response(
"List open merge requests for project 'gitlab-org/gitlab' and summarize the top 5 by recency.",
markdown=True,
)
# Async variant:
# import asyncio
#
# async def run_async():
# await agent.aprint_response(
# "List open issues for project 'gitlab-org/gitlab' with labels and assignees.",
# markdown=True,
# )
#
# asyncio.run(run_async())All five registered tools are read-only; the instruction about modifying data does not enable write tools. Results are paginated. For the commented async variant, retain the GitlabTools instance and call await tools.aclose() in finally to close its HTTP client.
Run the Example
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activateInstall dependencies
uv pip install -U agno openai python-gitlabExport environment variables
export GITLAB_ACCESS_TOKEN="your_gitlab_access_token_here"
export OPENAI_API_KEY="your_openai_api_key_here"Run the example
Save the code above as gitlab_tools.py, then run:
python gitlab_tools.pyFull source: cookbook/91_tools/gitlab_tools.py