AshwiniGhuge3012/jenkins-mcp-server
If you are the rightful owner of jenkins-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
An MCP server for interacting with a Jenkins CI/CD server, enabling job management, build status checks, and server management through MCP.
trigger_job
Triggers a Jenkins job with optional parameters.
get_job_info
Gets detailed information about a Jenkins job, including its parameters.
get_build_status
Gets the status of a specific build.
get_console_log
Retrieves the console log for a specific build.
list_jobs
Lists all available jobs on the Jenkins server.
get_queue_info
Gets information about builds currently in the queue.
server_info
Gets basic information about the Jenkins server.
summarize_build_log
(Demonstration) Summarizes a build log using a pre-configured LLM prompt.
Jenkins MCP Server.
An MCP server for interacting with a Jenkins CI/CD server. Allows you to trigger jobs, check build statuses, and manage your Jenkins instance through MCP.
Features
- Job Management: Trigger, list, and get detailed information about Jenkins jobs.
- Build Status: Check the status of specific builds and retrieve console logs.
- Queue Management: View items currently in the build queue.
- Server Information: Get basic information about the connected Jenkins server.
- LLM Integration: Includes prompts and configurations for summarizing build logs (demonstration).
- Transport Support: Supports both STDIO and Streamable HTTP transports.
- Input Validation: Uses Pydantic for robust input validation and error handling.
- Compatibility: Fully compatible with the MCP Gateway.
Prerequisites
- Python 3.12+
- A running Jenkins instance
uv
for package management
Installation
-
Clone the repository:
git clone https://github.com/AshwiniGhuge3012/jenkins-mcp-server cd jenkins-mcp-server
-
Create a virtual environment:
uv venv
-
Activate the virtual environment:
source .venv/bin/activate
-
Install dependencies:
uv pip install -e .
-
Create a
.env
file: Create a.env
file in the project root and add your Jenkins credentials and URL.JENKINS_URL="http://your-jenkins-instance:8080" JENKINS_USER="your-username" JENKINS_API_TOKEN="your-api-token" MCP_PORT=8010
Usage
Running the Server
You can run the server in two modes:
1. STDIO Mode (for direct interaction)
python jenkins_mcp_server_enhanced.py
2. HTTP Mode (for use with MCP Gateway)
python jenkins_mcp_server_enhanced.py --transport streamable-http --port 8010
The port can be configured via the --port
argument or the MCP_PORT
environment variable.
Available Tools
Here is a list of the tools exposed by this MCP server:
trigger_job
- Description: Triggers a Jenkins job with optional parameters.
- Parameters:
job_name
(string): The name of the Jenkins job.params
(object, optional): Job parameters as a JSON object. For multiselect parameters, pass an array of strings.
- Returns: A confirmation message with the queue URL.
get_job_info
- Description: Gets detailed information about a Jenkins job, including its parameters.
- Parameters:
job_name
(string): The name of the Jenkins job.
- Returns: An object containing the job's description, parameters, and last build number.
get_build_status
- Description: Gets the status of a specific build.
- Parameters:
job_name
(string): The name of the Jenkins job.build_number
(integer): The build number.
- Returns: An object with the build status, timestamp, duration, and URL.
get_console_log
- Description: Retrieves the console log for a specific build.
- Parameters:
job_name
(string): The name of the Jenkins job.build_number
(integer): The build number.start
(integer, optional): The starting byte position for fetching the log.
- Returns: The console log text and information about whether more data is available.
list_jobs
- Description: Lists all available jobs on the Jenkins server.
- Parameters: None
- Returns: A list of job names.
get_queue_info
- Description: Gets information about builds currently in the queue.
- Parameters: None
- Returns: A list of items in the queue.
server_info
- Description: Gets basic information about the Jenkins server.
- Parameters: None
- Returns: The Jenkins version and URL.
summarize_build_log
- Description: (Demonstration) Summarizes a build log using a pre-configured LLM prompt.
- Parameters:
job_name
(string): The name of the Jenkins job.build_number
(integer): The build number.
- Returns: A placeholder summary and the prompt that would be used.
Example Usage with mcp-cli
First, ensure the server is running in HTTP mode and registered with your MCP Gateway.
# Example: Triggering a job
mcp-cli cmd --server gateway --tool jenkins_server.trigger_job --tool-args '{"job_name": "my-test-job", "params": {"branch": "develop", "deploy": true}}'
# Example: Listing all jobs
mcp-cli cmd --server gateway --tool jenkins_server.list_jobs
Dependencies
fastmcp
pydantic
requests
python-dotenv
License
This project is licensed under the Apache 2.0 License.