Fluent (ServiceNow SDK)
Manage ServiceNow metadata, modules, records, and tests using Fluent, a TypeScript-based declarative DSL. Supports all ServiceNow SDK CLI commands.
Fluent MCP Server
An MCP server that brings ServiceNow Fluent SDK capabilities to AI-assisted development environments. Enables natural language interaction with ServiceNow SDK commands, API specifications, code snippets, and development resources.
Key Features
- 🤖 AI-Powered Error Analysis - Intelligent diagnosis with root cause, solutions, and prevention tips (MCP Sampling)
- Complete SDK Coverage - ServiceNow SDK commands:
init,build,install,dependencies,transform,download,clean,pack - Rich Resources - API specifications, code snippets, instructions for 35+ metadata types
- Auto-Authentication - Automatic auth profile detection and session management via environment variables
- Session-Aware - Maintains working directory and auth context across commands
This MCP server implements the complete Model Context Protocol specification with the following capabilities:
Core
- Resources - Provides 100+ resources across 35+ ServiceNow metadata types (API specs, instructions, snippets, prompts)
- Tools - Exposes 9 ServiceNow SDK commands as MCP tools with full parameter validation
- Prompts - Offers development workflow templates for common ServiceNow tasks
- Logging - Structured logging for debugging and monitoring
Client Capabilities (used by this server)
The server leverages these MCP client capabilities when available:
-
Roots - Requests workspace roots from the client for context-aware operations
- Falls back to project root when client doesn't provide roots
-
Sampling (MCP 2024-11-05) - Leverages client LLM for intelligent error analysis when SDK commands fail
- Automatically analyzes command errors >50 characters
- Provides structured diagnostics: root cause, solutions, prevention tips
- Configurable via
FLUENT_MCP_ENABLE_ERROR_ANALYSISenvironment variable
-
Elicitation (MCP 2024-11-05) - Interactive parameter collection for complex workflows
init_fluent_app- Prompts for missing project parameters (workingDirectory, template, appName, etc.)- Supports both creation and conversion workflows with smart validation
- Handles user acceptance/rejection of elicited data
-
Session Management - Tracks working directory per session for multi-project workflows
-
Root Fallback - Automatically falls back to MCP root context when no session directory is set
-
Error Handling - Comprehensive error messages with actionable guidance
-
Type Safety - Full TypeScript implementation with strict typing
Quick Start
# Test with MCP Inspector
npx @modelcontextprotocol/inspector npx @modesty/fluent-mcp
# Or use in your MCP client (see Configuration below)
Example prompt:
Create a new Fluent app in ~/projects/time-off-tracker to manage employee PTO requests
Available Tools
SDK Commands
| Tool | Description | Key Parameters |
|---|---|---|
sdk_info | Get SDK version or help | flag (-v/-h), command (optional for -h) |
get-api-spec | Get API spec or list all metadata types | metadataType (optional, omit to list all) |
init_fluent_app | Initialize or convert ServiceNow app | workingDirectory (required), template, from (optional) |
build_fluent_app | Build the application | debug (optional) |
deploy_fluent_app | Deploy to ServiceNow instance | auth (auto-injected), debug (optional) |
fluent_transform | Convert XML to Fluent TypeScript | from, auth (auto-injected) |
download_fluent_dependencies | Download dependencies and type definitions | auth (auto-injected) |
download_fluent_app | Download metadata from instance | directory, incremental (optional) |
clean_fluent_app | Clean output directory | source (optional) |
pack_fluent_app | Create installable artifact | source (optional) |
Note: Authentication is automatically configured at startup via environment variables. The
authparameter is auto-injected from the session for commands that require instance access. Useinit_fluent_appto establish working directory context for subsequent commands.
Resources
Standardized URI patterns following MCP specification:
| Resource Type | URI Pattern | Example | Purpose |
|---|---|---|---|
| API Specs | sn-spec://{type} | sn-spec://business-rule | API documentation and parameters |
| Instructions | sn-instruct://{type} | sn-instruct://script-include | Best practices and guidance |
| Code Snippets | sn-snippet://{type}/{id} | sn-snippet://acl/0001 | Practical code examples |
| Prompts | sn-prompt://{id} | sn-prompt://coding_in_fluent | Development guides |
Supported Metadata Types
Core Types: acl, application-menu, business-rule, client-script, cross-scope-privilege, form, list, property, role, scheduled-script, script-action, script-include, scripted-rest, service-portal, table, ui-action, ui-page, user-preference
Table Types: column, column-generic
ATF (Automated Test Framework): atf-appnav, atf-catalog-action, atf-catalog-validation, atf-catalog-variable, atf-email, atf-form, atf-form-action, atf-form-declarative-action, atf-form-field, atf-reporting, atf-rest-api, atf-rest-assert-payload, atf-server, atf-server-catalog-item, atf-server-record
Configuration
Requirements: Node.js 22.15.1+, npm 11.4.1+
MCP Client Setup
Add to your MCP client configuration file:
{
"mcpServers": {
"fluent-mcp": {
"command": "npx",
"args": ["-y", "@modesty/fluent-mcp"],
"env": {
"SN_INSTANCE_URL": "https://your-instance.service-now.com",
"SN_AUTH_TYPE": "basic",
"SN_USER_NAME": "local-username",
"SN_PASSWORD": "local-password"
}
}
}
}
Client-Specific Locations:
- Claude Desktop / macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - VSCode Copilot:
.vscode/mcp.json(use Command Palette:MCP: Add Server...) - Cursor: Settings → Features → MCP Settings
- Windsurf: Settings → Cascade → MCP Servers → View raw config
- Gemini CLI:
~/.gemini/settings.json
VSCode note: For VSCode, the JSON structure uses
"mcp": { "servers": { ... } }instead of"mcpServers".
Environment Variables:
| Variable | Description | Default |
|---|---|---|
SN_INSTANCE_URL | ServiceNow instance URL for auto-auth validation | - |
SN_AUTH_TYPE | Authentication method: basic or oauth | oauth |
SN_USER_NAME | Username for basic auth (informational) | - |
SN_PASSWORD | Password for basic auth (informational) | - |
FLUENT_MCP_ENABLE_ERROR_ANALYSIS | Enable AI error analysis | true |
FLUENT_MCP_MIN_ERROR_LENGTH | Minimum error length for analysis | 50 |
Note: The server automatically detects existing auth profiles matching
SN_INSTANCE_URLat startup. If a matching profile is found, it's stored in the session and auto-injected into SDK commands. If no profile exists, you'll be prompted to run the auth command manually.
Usage Examples
Typical Workflow
-
Initialize Project
Create a new Fluent app in ~/projects/asset-tracker for IT asset management -
Develop with Resources
Show me the business-rule API specification and provide an example snippet -
Build and Deploy
Build the app with debug output, then deploy it
Note: Authentication is automatically configured via environment variables (
SN_INSTANCE_URL,SN_AUTH_TYPE). If you need to set up a new auth profile, run:npx @servicenow/sdk auth --add <instance-url> --type <basic|oauth> --alias <alias>
Testing with MCP Inspector
The MCP Inspector provides a web interface for testing MCP servers.
Launch Inspector
# Test published package
npx @modelcontextprotocol/inspector npx @modesty/fluent-mcp
# Or for local development
npm run build && npm run inspect
Test Scenarios
Scenario 1: Explore Business Rule Resources
Objective: Access API specs and code snippets for business rules
Steps:
- Launch Inspector and wait for server connection
- Navigate to Resources tab
- Find and click
sn-spec://business-rulein the resource list - Review the API specification showing all available methods and parameters
- Go back and search for
sn-snippet://business-rule/0001 - Click the snippet to view a complete TypeScript example
- Verify content includes proper imports and follows Fluent patterns
Expected Results:
- API spec displays structured documentation with method signatures
- Snippet shows runnable TypeScript code with ServiceNow metadata patterns
- Content is properly formatted and readable
Scenario 2: Test SDK Info Command
Objective: Verify SDK version and help information retrieval
Steps:
- Navigate to Tools tab
- Select
sdk_infofrom the tool list - Test Version:
- Set
flagparameter to-v - Click Execute
- Verify response shows version number (e.g., "4.0.1")
- Set
- Test Help:
- Set
flagparameter to-h - Set
commandparameter tobuild - Click Execute
- Verify response shows build command documentation with options
- Set
- Monitor Notifications pane for command execution logs
Expected Results:
- Version command returns SDK version string
- Help command returns detailed command documentation
- List metadata (
-lm) returns available Fluent metadata types - No errors in notifications pane
- Commands execute within 2-3 seconds
License
MIT
Related Servers
Scout Monitoring MCP
sponsorPut performance and error data directly in the hands of your AI assistant.
Alpha Vantage MCP Server
sponsorAccess financial market data: realtime & historical stock, ETF, options, forex, crypto, commodities, fundamentals, technical indicators, & more
Azure DevOps MCP Server for Cursor
Integrate Azure DevOps with Cursor IDE. Provides over 60 tools using PAT authentication, no CLI needed.
Authless MCP Server Example
An example of a remote MCP server deployable on Cloudflare Workers without authentication.
Reports MCP Server
Manages penetration testing reports and vulnerabilities via a REST API.
Jupyter MCP Server
Interact with Jupyter notebooks running in any JupyterLab environment, supporting real-time control and smart execution of notebook cells.
SJ RedM MCP Server
A versatile MCP server for RedM development, providing access to RDR3 discoveries, framework documentation, native functions, and database operations.
mcp.shop
A web shop built with MCP, WorkOS AuthKit, and Next.js.
Remote MCP Server on Cloudflare
A template for deploying a remote MCP server on Cloudflare Workers, allowing for custom tool integration.
DiffuGen
Generate images from text using Flux and Stable Diffusion models.
ActionKit MCP Starter
A demonstration server for ActionKit, providing access to Slack actions via Claude Desktop.
MCP Server Demonstration
A demonstration on setting up and using MCP servers within Cursor, with Docker examples.