GitLab Tools

List and summarize GitLab merge requests and issues with read-only GitlabTools functions.

gitlab_tools.py
"""
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/activate

Install dependencies

uv pip install -U agno openai python-gitlab

Export 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.py

Full source: cookbook/91_tools/gitlab_tools.py