MCP Setup Server

MCP Setup Server

A modular MCP server exposing tools for integrating with services like GitHub, Redash, Jenkins, Figma, Jira, Confluence, Teams, Datadog, PagerDuty, Slack, and Presto, enabling users to manage these platforms through natural language via an MCP client.

Category
Visit Server

README

MCP Setup Server

A modular Model Context Protocol server that exposes integration "setup" tools to an MCP client (Claude Desktop, Claude Code, etc.). Each integration lives in its own module, so you can keep adding integrations (Redash, Jenkins, ...) without touching the others.

Layout

server.py                  # entry point: creates FastMCP, registers integrations
integrations/
  __init__.py
  environment.py           # shared MCP_ENV / env-var resolution helpers
  github.py                # GitHub
  redash.py                # Redash
  jenkins.py               # Jenkins
  figma.py                 # Figma
  jira.py                  # Jira (Atlassian Cloud)
  confluence.py            # Confluence (Atlassian Cloud)
  teams.py                 # Microsoft Teams (Graph)
  datadog.py               # Datadog
  pagerduty.py             # PagerDuty
  slack.py                 # Slack
  presto.py                # Presto / Trino

Each integration module exposes a register(mcp) function that attaches its tools. Every integration reads its own credentials from environment variables, and only at the moment a tool is called — so you can configure just the integrations you use and leave the rest unset.

Integrations & required env vars

Integration Env vars Tools
GitHub GITHUB_TOKEN 21
Redash REDASH_URL, REDASH_API_KEY 26
Jenkins JENKINS_URL, JENKINS_USER, JENKINS_API_TOKEN 19
Figma FIGMA_TOKEN 14
Jira JIRA_URL, JIRA_API_TOKEN (+ JIRA_EMAIL for Cloud) 18
Confluence CONFLUENCE_URL, CONFLUENCE_EMAIL, CONFLUENCE_API_TOKEN 13
Teams TEAMS_ACCESS_TOKEN 16
Datadog DATADOG_API_KEY, DATADOG_APP_KEY, DATADOG_SITE 17
PagerDuty PAGERDUTY_API_TOKEN, PAGERDUTY_FROM_EMAIL 17
Slack SLACK_BOT_TOKEN 17
Presto PRESTO_HOST, PRESTO_PORT, PRESTO_USER, PRESTO_CATALOG, PRESTO_SCHEMA 8

See .env.example for where to obtain each credential. 186 tools total.

Jira auto-detects the deployment from JIRA_URL: Atlassian Cloud (*.atlassian.net) uses email + API-token basic auth and REST v3; Server / Data Center uses a Personal Access Token (Bearer) and REST v2, with JIRA_EMAIL left unset. The tools are identical across both.

Tools

GitHub

Tool Description
github_whoami Verify the token and show the authenticated user
github_list_repos List your repositories
github_get_repo Get details for one repository
github_create_repo Create a new repository
github_list_issues List issues for a repository
github_create_issue Open a new issue
github_search_code Search code across GitHub

GitHub — pull requests

Tool Description
github_list_pull_requests List pull requests for a repository
github_create_pull_request Open a new pull request
github_get_pull_request Get full details for one PR
github_update_pull_request Edit title / body / state / base branch
github_list_pull_request_files List changed files with add/delete counts
github_list_pull_request_commits List the commits in a PR
github_comment_on_pull_request Add a conversation-tab comment
github_list_pull_request_conversation_comments Fetch conversation-tab comments
github_add_pull_request_review_comment Add an inline comment on a diff line
github_list_pull_request_review_comments Fetch inline diff comments
github_create_pull_request_review Submit a review (approve / request changes / comment)
github_list_pull_request_reviews Fetch submitted reviews
github_request_pull_request_reviewers Request reviewers (users / teams)
github_merge_pull_request Merge a PR (merge / squash / rebase)

Redash

Tool Description
redash_connectivity Verify the URL + API key and show the current user
Queries
redash_list_queries List queries (optional search)
redash_get_query Get a query's SQL, options and visualizations
redash_create_query Create a query (optionally published)
redash_update_query Update an existing query's fields / publish state
redash_fork_query Duplicate a query
redash_archive_query Archive (soft-delete) a query
redash_run_query Execute a saved query and return result rows
redash_execute_adhoc_query Execute ad-hoc SQL against a data source (not saved)
Data sources
redash_list_data_sources List data sources
redash_get_data_source Get one data source
redash_get_data_source_schema Get tables/columns for a data source
Visualizations
redash_create_visualization Create a visualization for a query
redash_update_visualization Update a visualization
redash_delete_visualization Delete a visualization
Dashboards
redash_list_dashboards List dashboards
redash_get_dashboard Get a dashboard with its widgets
redash_create_dashboard Create a dashboard
redash_update_dashboard Rename / publish / re-layout a dashboard
redash_delete_dashboard Delete a dashboard
redash_add_widget_to_dashboard Add a chart or textbox widget
Alerts
redash_list_alerts List alerts
redash_get_alert Get one alert
redash_create_alert Create a threshold alert on a query
redash_delete_alert Delete an alert
Users
redash_list_users List users

Jenkins

Tool Description
jenkins_connectivity Verify the URL + credentials and show instance info
Jobs & folders
jenkins_list_jobs List jobs at root or inside a folder
jenkins_get_job Job details: recent builds, health, buildable
jenkins_get_job_parameters List a job's build parameters
jenkins_get_job_config Get a job's raw config.xml
jenkins_create_job Create a job from a config.xml string
jenkins_update_job_config Replace a job's config.xml
jenkins_copy_job Copy a job to a new name
jenkins_create_folder Create a folder (Folders plugin)
jenkins_delete_job Delete a job or folder
jenkins_enable_job / jenkins_disable_job Enable / disable a job
Builds
jenkins_trigger_build Trigger a build (optional parameters); handles CSRF crumb
jenkins_get_build Info for a specific build (result, duration, causes)
jenkins_get_last_build Info for the most recent build
jenkins_get_build_log Console log (optionally just the tail)
jenkins_stop_build Abort a running build
Queue
jenkins_get_queue List items waiting in the build queue
jenkins_get_queue_item Status of a queue item (did it start a build?)

Figma

Tool Description
figma_whoami Verify the token and show the current user
figma_get_file Get a file's metadata and pages
figma_get_file_nodes Fetch specific nodes by id
figma_get_images Render nodes to image URLs
figma_get_image_fills Get image fill URLs in a file
figma_get_comments / figma_post_comment / figma_delete_comment Read / add / delete comments
figma_get_file_versions List file version history
figma_get_team_projects / figma_get_project_files Browse team projects and their files
figma_get_team_components / figma_get_team_styles / figma_get_component Components & styles

Jira

Tool Description
jira_myself Verify creds and show the current user
jira_search JQL search
jira_get_issue / jira_create_issue / jira_update_issue / jira_delete_issue Issue CRUD
jira_assign_issue / jira_add_watcher Assign / watch
jira_add_comment / jira_list_comments Comments (plain text → ADF)
jira_list_transitions / jira_transition_issue Workflow transitions
jira_list_projects / jira_get_project / jira_list_issue_types Projects & types
jira_list_boards / jira_list_sprints / jira_get_sprint_issues Agile boards & sprints

Confluence

Tool Description
confluence_current_user Verify creds
confluence_search CQL search
confluence_get_page / confluence_get_page_by_title Read a page
confluence_create_page / confluence_update_page / confluence_delete_page Page CRUD (auto version bump)
confluence_get_page_children Child pages
confluence_list_spaces / confluence_get_space Spaces
confluence_add_comment / confluence_get_comments Comments
confluence_get_attachments Attachments

Microsoft Teams

Tool Description
teams_me / teams_list_users Identity & directory
teams_list_joined_teams / teams_list_channels / teams_get_channel Teams & channels
teams_list_channel_messages / teams_get_channel_message_replies Read channel chat
teams_send_channel_message / teams_reply_to_channel_message Post to channels
teams_list_chats / teams_get_chat_messages / teams_send_chat_message 1:1 / group chat
teams_list_online_meetings / teams_get_online_meeting Meetings
teams_list_meeting_recordings / teams_list_meeting_transcripts Recordings & transcripts (Graph beta)

Datadog

Tool Description
datadog_validate Verify the API key
datadog_query_metrics / datadog_list_active_metrics / datadog_get_metric_metadata Metrics
datadog_list_monitors / datadog_get_monitor / datadog_create_monitor / datadog_update_monitor / datadog_delete_monitor Monitor CRUD
datadog_mute_monitor / datadog_unmute_monitor Mute / unmute
datadog_search_events / datadog_search_logs Events & logs
datadog_list_dashboards / datadog_get_dashboard Dashboards
datadog_list_slos / datadog_get_slo SLOs

PagerDuty

Tool Description
pagerduty_validate / pagerduty_whoami Verify token / current user
pagerduty_list_incidents / pagerduty_get_incident / pagerduty_create_incident / pagerduty_update_incident Incident CRUD
pagerduty_acknowledge_incident / pagerduty_resolve_incident Ack / resolve
pagerduty_add_note / pagerduty_list_notes Incident notes
pagerduty_list_services / pagerduty_get_service Services
pagerduty_list_schedules / pagerduty_get_schedule / pagerduty_list_oncalls Schedules & on-call
pagerduty_list_users / pagerduty_list_escalation_policies Users & escalation

Slack

Tool Description
slack_auth_test Verify the bot token
slack_list_channels / slack_get_channel_info / slack_create_channel / slack_set_channel_topic Channels
slack_invite_to_channel / slack_open_conversation Membership / DMs
slack_post_message / slack_update_message / slack_delete_message Send / edit / delete
slack_get_channel_history / slack_get_thread_replies Read messages
slack_add_reaction React
slack_list_users / slack_get_user_info / slack_get_user_by_email Users
slack_search_messages Search (needs a user token with search:read)

Presto / Trino

Tool Description
presto_connectivity Verify the connection (SELECT 1)
presto_execute_query Run arbitrary SQL (handles the statement-polling protocol)
presto_list_catalogs / presto_list_schemas / presto_list_tables Browse the catalog
presto_describe_table / presto_show_create_table Inspect a table
presto_list_functions List available functions

Setup

  1. Install dependencies (a virtualenv is recommended):

    python -m venv .venv && source .venv/bin/activate
    pip install -r requirements.txt
    
  2. Create a GitHub Personal Access Token at https://github.com/settings/tokens — a fine-grained token, or a classic token with the repo scope.

  3. Export it:

    export GITHUB_TOKEN=ghp_your_token_here
    
  4. (Optional) Check the server boots:

    python server.py   # Ctrl-C to exit
    

Environments (dev / preprod / prod)

Set MCP_ENV to dev (default), preprod or prod to choose which deployment the URL-based connections talk to. For JENKINS_URL, JIRA_URL, CONFLUENCE_URL, REDASH_URL and PRESTO_HOST you can provide per-environment overrides named <ENV>_<VAR>; the plain <VAR> is the fallback for any env.

MCP_ENV=prod
DEV_JENKINS_URL=https://dev-jenkins.example.com
PROD_JENKINS_URL=https://jenkins.example.com
JENKINS_URL=https://jenkins.example.com   # used when no <ENV>_ override is set

So a tool resolving JENKINS_URL gets the dev URL under MCP_ENV=dev and the prod URL under MCP_ENV=prod. An unrecognized MCP_ENV falls back to dev.

JIRA_PROJECTS_FILTER (comma-separated project keys) scopes jira_search to those projects by default — unless the JQL already names a project, or you pass scope_to_default_projects=False.

Verifying credentials

smoke_test.py calls each integration's lightweight verify tool (github_whoami, jira_myself, slack_auth_test, ...). Integrations whose env vars aren't set are skipped, so it's safe to run with only some credentials configured. It reads a .env file next to it if present.

python smoke_test.py            # test everything that's configured
python smoke_test.py slack jira # test only the named integrations
  ✓ github      OK       login=octocat
  ✗ slack       FAIL     Slack API error on auth.test: invalid_auth
  – datadog     skipped  set DATADOG_API_KEY, DATADOG_APP_KEY to test

Exit code is non-zero if any configured integration fails.

Connecting to a client

Claude Code

claude mcp add mcp-setup \
  --env GITHUB_TOKEN=ghp_your_token_here \
  -- python server.py

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "mcp-setup": {
      "command": "python",
      "args": [
        "server.py"
      ],
      "env": {
        "GITHUB_TOKEN": "ghp_your_token_here"
      }
    }
  }
}

Use the absolute path to the python inside your virtualenv (.venv/bin/python) if you installed the dependencies there. Restart the client after editing the config.

server.py loads a project-root .env on startup, so you can keep credentials there instead of in the client config's env block (real env vars still win).

Project-scoped config (.mcp.json)

For per-project auto-discovery, copy .mcp.json.example to .mcp.json in the project root and adjust the command path. Clients that read .mcp.json (e.g. Claude Code) will then launch the server automatically from this directory.

Adding a new integration

  1. Create integrations/<name>.py with the async tool functions and a register(mcp) that calls mcp.add_tool(fn) for each. Read credentials from environment variables (use integrations.environment.require_url for any base URL so it honors MCP_ENV).
  2. Import the module in server.py and add <name>.register(mcp).
  3. Add the env vars to .env.example and the verify tool to smoke_test.py.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured