Skip to main content
Glama

MCP Server Demo

A demonstration Model Context Protocol (MCP) server that provides tools and resources for Java CI/CD workflows and GitLab CI template management.

πŸ“ Repository Structure

mcp-server-demo/
β”œβ”€β”€ main.py                 # Main entry point for the MCP server
β”œβ”€β”€ server.py               # MCP server implementation with tools and resources
β”œβ”€β”€ pyproject.toml          # Python project configuration and dependencies
β”œβ”€β”€ uv.lock                 # Dependency lock file
β”œβ”€β”€ .gitlab-ci.yml          # GitLab CI configuration (template-based)
β”œβ”€β”€ ci-templates/           # GitLab CI template resources
β”‚   β”œβ”€β”€ build.gitlab-ci.yml
β”‚   β”œβ”€β”€ sast-scanner.gitlab-ci.yml
β”‚   β”œβ”€β”€ sca-scanner.gitlab-ci.yml
β”‚   └── build-image.gitlab-ci.yml
└── README.md               # This file

Related MCP server: Multi-service MCP Server

πŸš€ Features

MCP Server Tools

  • Mathematical Operations: sum_two_numbers() - Add two integers

  • CI/CD Template Management: Access to GitLab CI template resources

  • Java Build Tools: Maven-based build commands and configurations

  • Security Scanning: SAST and SCA scanning capabilities

  • Docker Operations: Image building and registry management

  • Deployment Automation: Environment-specific deployment commands

GitLab CI Templates

  • Build Templates: Java and Python build configurations

  • Security Scanning: SAST and SCA scanning templates

  • Docker Integration: Image build and push templates

  • Reusable Components: Template-based CI/CD pipeline generation

πŸ› οΈ Setup Instructions

Prerequisites

  • Python 3.13 or higher

  • uv package manager

Installation

  1. Clone the repository

    git clone <repository-url>
    cd mcp-server-demo
  2. Install dependencies

    uv sync
  3. Verify installation

    uv run python --version

πŸš€ Starting the MCP Server

Method 1: Using uv run

uv run mcp dev main.py

Method 2: Direct execution

uv run python main.py

Method 3: Using the MCP CLI

uv run mcp run main.py

πŸ”§ Configuration

Environment Variables

The server uses standard MCP configuration. No additional environment variables are required for basic operation.

GitLab CI Templates

The ci-templates/ directory contains reusable GitLab CI templates:

  • build.gitlab-ci.yml - Build job templates for Java and Python

  • sast-scanner.gitlab-ci.yml - Static Application Security Testing templates

  • sca-scanner.gitlab-ci.yml - Software Composition Analysis templates

  • build-image.gitlab-ci.yml - Docker image build and push templates

πŸ“‹ Usage Examples

Using the MCP Server Tools

  1. Add two numbers

    result = sum_two_numbers(5, 3)  # Returns 8
  2. Access CI templates

    # Access build template
    build_template = read_build_ci_file()
    
    # Access SAST scanner template
    sast_template = read_sast_scanner_ci_file()

Generating GitLab CI Files

The server provides resources to help generate GitLab CI configurations using the available templates:

  1. Java Application CI

    • Uses .build-java template

    • Includes SAST and SCA scanning

    • Docker image building and deployment

  2. Python Application CI

    • Uses .build-python template

    • Includes security scanning

    • Container deployment capabilities

πŸ” Available Resources

File Resources

  • file://ci-templates/build.gitlab-ci.yml - Java and Python build templates

  • file://ci-templates/sast-scanner.gitlab-ci.yml - SAST scanning templates

  • file://ci-templates/sca-scanner.gitlab-ci.yml - SCA scanning templates

  • file://ci-templates/build-image.gitlab-ci.yml - Docker build templates

Dynamic Resources

  • greeting://{name} - Personalized greeting messages

  • pipeline://{project_name} - CI/CD pipeline status

  • project://{project_name} - Project information

  • template://{template_name} - Template information

πŸ§ͺ Testing

Run the server in development mode

uv run mcp dev main.py

Test individual tools

uv run python -c "from server import sum_two_numbers; print(sum_two_numbers(10, 5))"

πŸ“¦ Dependencies

Core Dependencies

  • mcp[cli]>=1.11.0 - Model Context Protocol server and CLI tools

Development Dependencies

  • Python 3.13+ for modern language features

  • uv for fast dependency management

🀝 Contributing

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Add tests if applicable

  5. Submit a pull request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ†˜ Troubleshooting

Common Issues

  1. MCP server not starting

    • Ensure Python 3.13+ is installed

    • Verify dependencies with uv sync

    • Check for port conflicts

  2. Template access issues

    • Verify ci-templates/ directory exists

    • Check file permissions

    • Ensure template files are properly formatted

  3. GitLab CI generation problems

    • Verify template syntax

    • Check for missing template dependencies

    • Ensure proper job inheritance

Getting Help

  • Check the MCP documentation

  • Review the template files in ci-templates/

  • Examine the server implementation in server.py

Available Tools

1 tool
sum_two_numbersC

Add two numbers

ParametersJSON Schema
NameRequiredDescriptionDefault
aYes
bYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Add two numbers' only states the operation without any information about side effects, error handling, performance, or return format. It fails to provide meaningful behavioral context beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with just three words, front-loading the core purpose without any waste. Every word earns its place, making it highly efficient for an AI agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (simple arithmetic) and the presence of an output schema (which handles return values), the description is somewhat adequate. However, with no annotations and 0% schema coverage, it lacks details on behavior and parameters that could be helpful for more robust use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning the schema provides no descriptions for parameters 'a' and 'b'. The description 'Add two numbers' implies these are numbers to be added but doesn't specify their roles (e.g., which is first operand), constraints, or examples. It adds minimal semantic value beyond the schema's type definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Add two numbers' clearly states the tool's purpose with a specific verb ('Add') and resource ('two numbers'). It's unambiguous about what the tool does. However, with no sibling tools to differentiate from, it cannot achieve the full 5 points for sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any context, prerequisites, or exclusions. With no sibling tools, there's no explicit comparison, but it lacks even basic usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

C2.9/5.0
Disambiguation5/5

With only one tool, there is no possibility of ambiguity or overlap between tools, making it trivially distinct.

Naming Consistency5/5

The single tool name 'sum_two_numbers' follows a clear verb_noun pattern, and with only one tool, consistency is inherently perfect.

Tool Count2/5

A single tool is generally too few for a server's purpose unless it's extremely narrow; this feels thin and may not cover a meaningful domain adequately.

Completeness1/5

The tool surface is severely incomplete, as a single addition tool does not provide any meaningful coverage or lifecycle for a domain, leaving obvious gaps for any practical use.

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    A Model Context Protocol server for Git repository interaction and automation. This server provides tools to read, search, and manipulate Git repositories via Large Language Models.
    12
    90,042
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that enables LLMs to interact with Git repositories, providing tools to read, search, and manipulate Git repositories through commands like status, diff, commit, and branch management.
    12
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ranjaka/mcp-server-demo'

If you have feedback or need assistance with the MCP directory API, please join our Discord server