host-mcp-jenkins

host-mcp-jenkins

A local MCP server for Jenkins that provides 17 tools to interact with Jenkins jobs, builds, logs, SCM, and test results via REST API, no plugin required.

Category
访问服务器

README

host-mcp-jenkins

A local MCP (Model Context Protocol) server for Jenkins that replicates the Jenkins MCP Server Plugin by calling Jenkins REST API over HTTP.

No plugin installation required on your Jenkins instance.

Why?

The official Jenkins MCP Server Plugin must be installed on the Jenkins server. If you don't have admin rights to install plugins, host-mcp-jenkins gives you the same 17 MCP tools running locally, calling Jenkins REST API with your personal API token.

Compatibility

Jenkins Version Status
LTS 2.462.x+ ✅ Fully supported
LTS 2.426.x ✅ Fully supported
LTS 2.401.x ✅ Fully supported
LTS 2.361.x ✅ Fully supported
Weekly (latest) ✅ Fully supported

Minimum version: Jenkins 2.164+. All REST API endpoints used by this server have been available in Jenkins core since the earliest 2.x releases. The tree query parameter (used for response field filtering) was introduced in Jenkins 1.464.

Plugin Dependencies

Most tools (11 out of 17) use only the Jenkins core REST API and require no plugins. Some tool categories depend on specific plugins:

Tools Required Plugin Min Plugin Version Notes
getJobScm, getBuildScm, findJobsWithScmUrl Git Plugin 2.0+ SCM data exposed via Git plugin actions
getTestResults JUnit Plugin 1.0+ Bundled with Jenkins since 1.577
getFlakyFailures JUnit Plugin 1.33+ Flaky test detection support required

Note: The Git Plugin is installed on ~96% of Jenkins controllers. The JUnit Plugin is installed on ~97% and has been bundled with Jenkins by default since version 1.577. If these plugins are not present, the corresponding tools will return empty results or 404 errors.

API Endpoint Matrix

Every tool maps to one or more Jenkins REST API endpoints. All JSON endpoints support the tree parameter for field filtering.

Tool Method REST Endpoint Dependency
getJob GET /job/{name}/api/json Core
getJobs GET /api/json Core
getBuild GET /job/{name}/{build|lastBuild}/api/json Core
triggerBuild POST /job/{name}/build, /job/{name}/buildWithParameters Core
updateBuild POST /job/{name}/{build}/submitDescription, configSubmit Core
whoAmI GET /me/api/json Core
getStatus GET /api/json, /computer/api/json, /queue/api/json Core
getQueueItem GET /queue/item/{id}/api/json Core
getBuildLog GET /job/{name}/{build}/consoleText Core
getProgressiveBuildLog GET /job/{name}/{build}/logText/progressiveText Core
searchBuildLog GET /job/{name}/{build}/consoleText Core
getJobScm GET /job/{name}/api/json Git Plugin
getBuildScm GET /job/{name}/{build}/api/json Git Plugin
getBuildChangeSets GET /job/{name}/{build}/api/json Core
findJobsWithScmUrl GET /api/json (recursive 3-level tree) Git Plugin
getTestResults GET /job/{name}/{build}/testReport/api/json JUnit Plugin
getFlakyFailures GET /job/{name}/{build}/testReport/api/json JUnit Plugin ≥ 1.33

Quick Start

npx @mister-good-deal/host-mcp-jenkins \
  --jenkins-url https://jenkins.example.com \
  --jenkins-user your-username \
  --jenkins-token your-api-token

HTTP Transport

To start the server with Streamable HTTP transport instead of stdio:

npx @mister-good-deal/host-mcp-jenkins \
  --jenkins-url https://jenkins.example.com \
  --jenkins-user your-username \
  --jenkins-token your-api-token \
  --transport http \
  --port 3000

This exposes:

  • Health check: GET /health{"status":"ok"}
  • MCP endpoint: /mcp (Streamable HTTP)
  • Graceful shutdown on SIGINT / SIGTERM

Configuration

All options support both CLI arguments and environment variables (CLI takes precedence):

CLI Argument Environment Variable Required Default Description
--jenkins-url JENKINS_URL Jenkins base URL
--jenkins-user JENKINS_USER Jenkins username
--jenkins-token JENKINS_API_TOKEN Jenkins API token
--insecure JENKINS_INSECURE=true false Skip TLS certificate verification
--log-level LOG_LEVEL info debug | info | warn | error
--timeout JENKINS_TIMEOUT 30000 HTTP request timeout (ms)
--max-retries JENKINS_MAX_RETRIES 3 Max retries for transient errors (429/5xx)
--retry-delay JENKINS_RETRY_DELAY 1000 Base delay in ms for exponential backoff
--transport MCP_TRANSPORT stdio Transport type (stdio | http)
--port MCP_PORT 3000 HTTP server port (only with --transport http)

Getting a Jenkins API Token

  1. Log in to Jenkins
  2. Click your username (top-right) → Configure
  3. Under API Token, click Add new Token
  4. Name it and click Generate — copy the token value

MCP Client Configuration

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "jenkins": {
      "command": "npx",
      "args": ["-y", "@mister-good-deal/host-mcp-jenkins"],
      "env": {
        "JENKINS_URL": "https://jenkins.example.com",
        "JENKINS_USER": "your-username",
        "JENKINS_API_TOKEN": "your-api-token"
      }
    }
  }
}

VS Code

Add to .vscode/mcp.json:

{
  "servers": {
    "jenkins": {
      "command": "npx",
      "args": ["-y", "@mister-good-deal/host-mcp-jenkins"],
      "env": {
        "JENKINS_URL": "https://jenkins.example.com",
        "JENKINS_USER": "your-username",
        "JENKINS_API_TOKEN": "your-api-token"
      }
    }
  }
}

Cursor

Add to your MCP server configuration:

{
  "mcpServers": {
    "jenkins": {
      "command": "npx",
      "args": ["-y", "@mister-good-deal/host-mcp-jenkins", "--jenkins-url", "https://jenkins.example.com", "--jenkins-user", "your-username", "--jenkins-token", "your-api-token"]
    }
  }
}

Note for contributors: If you're running the MCP server from within this workspace (where package.json declares "packageManager": "pnpm@...") and npx fails with host-mcp-jenkins: not found, use pnpm dlx instead. This happens because corepack intercepts npx when run from a pnpm-managed project.

HTTP Transport (Remote)

When the server is running with --transport http, MCP clients can connect via HTTP URL instead of launching a subprocess:

Claude Desktop / VS Code / Cursor:

{
  "mcpServers": {
    "jenkins": {
      "url": "http://localhost:3000/mcp"
    }
  }
}

Docker Usage

HTTP transport enables AI agents running inside Docker containers to connect to the MCP server without needing an MCP gateway.

Running the MCP Server on the Host

Start the server with HTTP transport on the host machine:

npx @mister-good-deal/host-mcp-jenkins \
  --jenkins-url https://jenkins.example.com \
  --jenkins-user your-username \
  --jenkins-token your-api-token \
  --transport http \
  --port 3000

From inside a Docker container, connect to http://host.docker.internal:3000/mcp.

Docker Compose Example

services:
  ai-agent:
    image: your-ai-agent:latest
    environment:
      MCP_SERVER_URL: "http://host.docker.internal:3000/mcp"
    extra_hosts:
      - "host.docker.internal:host-gateway"

Note: The extra_hosts mapping is required on Linux. On macOS and Windows, Docker Desktop resolves host.docker.internal automatically.

Available Tools (17)

Full parity with the Jenkins MCP Server Plugin, plus extras:

Core (8)

Tool Description
getJob Get a Jenkins job by its full path
getJobs Get a paginated list of Jenkins jobs, sorted by name
getBuild Get a specific build or the last build of a Jenkins job
triggerBuild Trigger a build for a Jenkins job (supports parameters)
updateBuild Update build display name and/or description
whoAmI Get information about the currently authenticated user
getStatus Check the health and readiness status of a Jenkins instance
getQueueItem Get the queue item details by its ID

Build Logs (3)

Tool Description
getBuildLog Retrieve paginated log lines for a build
getProgressiveBuildLog Incrementally retrieve build logs via Jenkins progressive text API
searchBuildLog Search for log lines matching a pattern (string or regex)

SCM (4)

Tool Description
getJobScm Retrieve SCM configurations of a Jenkins job
getBuildScm Retrieve SCM configurations of a Jenkins build
getBuildChangeSets Retrieve change log sets of a Jenkins build
findJobsWithScmUrl Find jobs that use a specified git SCM URL

Test Results (2)

Tool Description
getTestResults Retrieve test results for a build (optionally only failures)
getFlakyFailures Retrieve flaky test failures for a build

Comparison with Jenkins MCP Server Plugin

Feature Jenkins Plugin host-mcp-jenkins
Installation Requires Jenkins admin None — runs locally
Transport SSE, Streamable HTTP, Stateless stdio (default), Streamable HTTP
Authentication Jenkins built-in API token over HTTP Basic
Tools 16 17 (full parity + progressive log)
Response format ToolResponse envelope Same ToolResponse envelope
tree parameter Via internal API Forwarded to REST API

Development

# Install dependencies
pnpm install

# Build
pnpm run build

# Run in development mode
pnpm run dev -- --jenkins-url https://jenkins.example.com --jenkins-user admin --jenkins-token TOKEN

# Lint
pnpm run lint

# Unit tests
pnpm test

# Integration tests (requires Docker)
pnpm run test:integration

License

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选