mcp-tool-discovery

$npx mdskill add serac-labs/serac/mcp-tool-discovery

Discover and enable lazy-loaded Serac MCP tools using tool_search

  • Helps users find relevant tools for ServiceNow tasks and development
  • Relies on the tool_search API to query available MCP tools
  • Uses search queries to identify matching tools based on naming conventions
  • Returns actionable tool suggestions with examples for immediate use

SKILL.md

.github/skills/mcp-tool-discoveryView on GitHub ↗
---
name: mcp-tool-discovery
description: Use tool_search to discover and enable lazy-loaded Serac MCP tools (snow_*, jira_*, github_*, etc). Explains naming conventions, search strategies, and always-available activity tools.
license: Apache-2.0
compatibility: Designed for Snow-Code and ServiceNow development
metadata:
  author: serac
  version: "1.0.0"
  category: platform
tools:
  - tool_search
---

# MCP Tool Discovery Guide

Serac provides 400+ tools via MCP (Model Context Protocol) servers. Tools are **lazy-loaded** to save tokens - use `tool_search` to discover them.

## Quick Start

```javascript
// Find tools for a specific task
tool_search({ query: "incident" }) // ServiceNow incidents
tool_search({ query: "widget" }) // Widget development
tool_search({ query: "update set" }) // Update Set management
tool_search({ query: "cmdb" }) // CMDB operations
```

## Tool Categories

### ServiceNow Core Operations

| Query           | Tools Found                         |
| --------------- | ----------------------------------- |
| `"incident"`    | Incident CRUD, metrics, SLA         |
| `"change"`      | Change requests, CAB, risk          |
| `"problem"`     | Problem management, known errors    |
| `"cmdb"`        | CI search, relationships, discovery |
| `"user lookup"` | User/group queries                  |
| `"query table"` | Universal table queries             |

### ServiceNow Development

| Query              | Tools Found                |
| ------------------ | -------------------------- |
| `"widget"`         | Widget create/update/sync  |
| `"business rule"`  | BR creation and management |
| `"script include"` | Reusable scripts           |
| `"client script"`  | Client-side scripts        |
| `"ui policy"`      | Form policies              |
| `"ui action"`      | Buttons and links          |
| `"update set"`     | Update Set lifecycle       |
| `"snow deploy"`    | Artifact deployment        |

### ServiceNow Platform

| Query             | Tools Found                 |
| ----------------- | --------------------------- |
| `"flow designer"` | Flow/subflow creation       |
| `"workspace"`     | Workspace builder           |
| `"catalog"`       | Service catalog items       |
| `"knowledge"`     | Knowledge articles          |
| `"notification"`  | Email notifications         |
| `"scheduled job"` | Scheduled scripts           |
| `"rest"`          | REST API integration        |
| `"import"`        | Import sets, transform maps |

### Activity & Instance

| Query             | Tools Found                          |
| ----------------- | ------------------------------------ |
| `"activity"`      | Activity tracking (always available) |
| `"instance info"` | Instance URL and config              |
| `"property"`      | System properties                    |
| `"logs"`          | System logs                          |

### Enterprise (if enabled)

| Query            | Tools Found                        |
| ---------------- | ---------------------------------- |
| `"jira"`         | Jira issues, transitions, comments |
| `"azure devops"` | Work items, boards, pipelines      |
| `"confluence"`   | Pages, spaces, search              |
| `"github"`       | Issues, PRs, workflows, releases   |
| `"gitlab"`       | Issues, MRs, pipelines             |

## Always-Available Tools

These tools are loaded by default (no discovery needed):

```javascript
// Activity tracking
activity_start({ source, storyTitle, storyType, ... })
activity_update({ activityId, status, summary })
activity_complete({ activityId, summary })
activity_add_artifact({ activityId, artifactType, ... })

// Core tool discovery
tool_search({ query, enable: true })
```

## How tool_search Works

1. **Search** - Finds tools matching your query
2. **Enable** - Automatically enables found tools for your session
3. **Use** - Call the discovered tool by name

```javascript
// Step 1: Search
tool_search({ query: "jira" })
// Returns: jira_search_issues, jira_get_issue, jira_create_issue, ...

// Step 2: Call discovered tool
jira_search_issues({ jql: "project = PROJ AND status = Open" })
```

## Search Tips

### Be Specific

```javascript
// Too broad - may not find what you need
tool_search({ query: "github" }) // Returns 20+ tools

// More specific - finds exactly what you need
tool_search({ query: "github content" }) // File content tools
tool_search({ query: "github repository" }) // Repo info tools
tool_search({ query: "github pull request" }) // PR tools
```

### Search by Action

```javascript
tool_search({ query: "create incident" })
tool_search({ query: "update widget" })
tool_search({ query: "query cmdb" })
tool_search({ query: "deploy business rule" })
```

### Search by Table

```javascript
tool_search({ query: "sys_script_include" })
tool_search({ query: "sp_widget" })
tool_search({ query: "sysevent_email_action" })
```

## Tool Naming Patterns

Tools follow consistent naming patterns:

| Pattern         | Example                  | Purpose               |
| --------------- | ------------------------ | --------------------- |
| `snow_*`        | `snow_query_table`       | ServiceNow operations |
| `snow_deploy_*` | `snow_deploy_widget`     | Artifact creation     |
| `snow_update_*` | `snow_update_set_manage` | Update operations     |
| `jira_*`        | `jira_search_issues`     | Jira integration      |
| `azdo_*`        | `azdo_search_work_items` | Azure DevOps          |
| `confluence_*`  | `confluence_create_page` | Confluence            |
| `github_*`      | `github_create_issue`    | GitHub                |
| `gitlab_*`      | `gitlab_create_mr`       | GitLab                |

## MCP Server Categories

Serac includes specialized MCP servers:

| Server                     | Purpose               | Example Tools        |
| -------------------------- | --------------------- | -------------------- |
| **ServiceNow Unified**     | Core ServiceNow ops   | Query, CRUD, scripts |
| **ServiceNow Development** | Artifact management   | Deploy, widget sync  |
| **ServiceNow Automation**  | Script execution      | Background scripts   |
| **ServiceNow ITSM**        | IT Service Management | Incidents, changes   |
| **ServiceNow Platform**    | Platform features     | Flows, workspaces    |
| **Enterprise**             | External integrations | Jira, Azure, GitHub  |

## Best Practices

1. **Discover Before Using** - Always use `tool_search` first
2. **Be Specific** - Narrow queries find better matches
3. **Check Results** - Review tool descriptions before calling
4. **Enable by Default** - `enable: true` is the default
5. **Silent Discovery** - Don't tell users you're discovering tools

## Troubleshooting

| Issue                   | Solution                        |
| ----------------------- | ------------------------------- |
| Tool not found          | Try different query terms       |
| Too many results        | Be more specific in query       |
| Tool doesn't work       | Check parameters, may need auth |
| Enterprise tool missing | Verify enterprise auth status   |

## Example Workflows

### Finding Incident Tools

```javascript
// Discover
tool_search({ query: "incident" })

// Use discovered tools
snow_query_incidents({ filters: { active: true, priority: 1 } })
snow_create_incident({ short_description: "...", caller_id: "..." })
```

### Finding Widget Tools

```javascript
// Discover
tool_search({ query: "widget" })

// Use discovered tools
snow_find_artifact({ type: "widget", query: "incident" })
snow_widget_pull({ widget_name: "incident-dashboard", local_path: "./widgets" })
```

### Finding Enterprise Tools

```javascript
// Discover Jira tools
tool_search({ query: "jira" })

// Use discovered tools
jira_search_issues({ jql: "project = SNOW AND status = Open" })
jira_transition_issue({ issueKey: "SNOW-123", transition: "In Progress" })
```

More from serac-labs/serac

SkillDescription
acl-securityCreate and debug ServiceNow ACLs (record, field, REST, script-include). Covers role/condition/script patterns, evaluation order, field-level visibility, and impersonation testing for row- and field-level security.
agent-workspaceBuild ServiceNow Agent Workspace configurations — workspaces, lists, forms, contextual side panels, Agent Assist similar-record finders, and workspace-specific UI actions on sys_aw_* tables.
approval-workflowsConfigure ServiceNow approval rules and sysapproval_approver records — manager/group/script approvers, multi-level routing, delegation via sys_user_delegate, and parent-record state rollup.
asset-managementManage ServiceNow hardware assets, software licenses, and lifecycle states on alm_hardware/alm_license — license allocation, CMDB-to-asset linking, warranty tracking, inventory aggregation (HAM/SAM).
atf-testingBuild ServiceNow Automated Test Framework tests and suites — impersonation, form steps, assertions, server-side script steps, test parameters, and execution via snow_create_atf_test / snow_execute_atf_test.
blast-radiusTrace ServiceNow configuration dependencies — what artifacts touch a given field, what calls a script include, table/app-level config inventory. Use before deletes, renames, or refactors.
bun-file-ioUse this when you are working on file operations like reading, writing, scanning, or deleting files. It summarizes the preferred file APIs and patterns used in this repo. It also notes when to use filesystem helpers for directories.
business-rule-patternsWrite ServiceNow business rules (before/after/async/display) — current vs previous, changesTo/changesFrom, recursion avoidance, setAbortAction, and async dispatch for heavy work.
catalog-itemsBuild ServiceNow Service Catalog items, variables, variable sets, catalog client scripts, record producers, and order guides with reference qualifiers and dynamic pricing.
client-scriptsWrite ServiceNow client scripts (onLoad/onChange/onSubmit/onCellEdit) using g_form, g_user, GlideAjax, field visibility/mandatory toggles, and validation with debounced server calls.