sdk_infoLABSCO SUMMARY
Carries the SDK's reference material as tools, so the model writes Fluent from the current spec rather than from memory.
Being able to fetch the API specification, the conventions and a working snippet for a metadata type before generating code is what separates this from an agent shelling out to the SDK. The project-context rule is deliberate and worth knowing: every project command resolves its directory from an explicit argument, the session or an environment variable, and refuses rather than guessing — which is what stops a build landing in the wrong app.
What it is
A wrapper around the ServiceNow Fluent SDK: the project commands as tools, plus the specifications, authoring guidance and code snippets for ServiceNow metadata types.
What you get
- The application lifecycle as calls: initialize a new app or convert an existing scoped one, build it, pack it into a zip, deploy it to an instance, and clean the build output
- Dependencies and TypeScript type definitions downloaded from the project's configuration, and application metadata downloaded from an instance into a local directory
- XML metadata converted into Fluent TypeScript source, either from a local path or straight from an instance
- Read-only Table API queries against an instance, returning matching records
- Authoring support per metadata type — the API specification, the instructions and conventions, and a code snippet — for the metadata types the SDK covers
- Documentation lookup for any Fluent API or guide by topic name, with no project required
- Authentication validated lazily and then cached, with a status call that reports where it stands
- Structured content alongside the text on the read tools, for programmatic consumers
Requirements
The ServiceNow SDK and a ServiceNow instance you can authenticate to. SN_INSTANCE_URL and SN_AUTH_TYPE — basic or oauth — configure the lazy authentication. Project-aware tools need a working directory: pass workingDirectory on the call, establish a session by initializing an app, or set FLUENT_MCP_WORKING_DIR; the server never guesses from its own process directory and fails with an explanation instead. Published on npm as @modesty/fluent-mcp over stdio, and also built as a self-contained bundle.
Setup effort
One command plus credentials — npx -y @modesty/fluent-mcp, then supply credentials
USE CASES
Writing a business rule or script include correctly
Fetch the API spec and the authoring guidance for that metadata type, then start from the snippet.
Getting a change onto an instance
Build the application, then deploy it, checking the authentication status first if it has been a while.
Bringing existing configuration into a Fluent project
Download the metadata from the instance and transform the XML records into Fluent source.
Starting a new application
Initialize it with its name and scope, pull the dependencies and type definitions, then build.
Checking data on the instance while you work
Run a read-only Table query with your encoded query and the fields you want.
Producing an installable artifact
Build, then pack it into a zip, cleaning the output directory when you need a fresh one.
17 tools
Listed in project docs. Your client may show a different list.
explain_fluent_apiinit_fluent_appbuild_fluent_appdeploy_fluent_appfluent_transformdownload_fluent_dependenciesdownload_fluent_appclean_fluent_apppack_fluent_appquery_fluent_recordscicd_fluent_appcicd_fluent_testget-api-specget-snippetget-instructcheck_auth_statusBEFORE YOU INSTALL
What to know first
Tools you get
17 tools named in the project's documentation. cicd_fluent_app and cicd_fluent_test arrived in the 4.10.x line, so older builds lack them. Both change instance state: one installs, publishes or rolls back an app, the other runs real ATF steps.
Requires
- npx on PATH
- SN_PASSWORD in your environment
INSTALLATION
Connect your client
Server setup
npx -y @modesty/fluent-mcpMCP Clients
Claude Desktop — npx, Gemini CLI
{
"mcpServers": {
"fluent-mcp": {
"command": "npx",
"args": [
"-y",
"@modesty/fluent-mcp"
],
"env": {
"FLUENT_MCP_WORKING_DIR": "<YOUR_FLUENT_MCP_WORKING_DIR>",
"SN_INSTANCE_URL": "https://<YOUR_INSTANCE>.service-now.com",
"SN_AUTH_TYPE": "basic",
"SN_USER_NAME": "local-username",
"SN_PASSWORD": "local-password"
}
}
}
}GitHub Copilot in VS Code
{
"servers": {
"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"
}
}
}
}Cursor
Settings → Features → MCP Settings
{
"mcpServers": {
"fluent-mcp": {
"command": "npx",
"args": [
"-y",
"@modesty/fluent-mcp"
],
"env": {
"FLUENT_MCP_WORKING_DIR": "<YOUR_FLUENT_MCP_WORKING_DIR>",
"SN_INSTANCE_URL": "https://<YOUR_INSTANCE>.service-now.com",
"SN_AUTH_TYPE": "basic",
"SN_USER_NAME": "local-username",
"SN_PASSWORD": "local-password"
}
}
}
}Windsurf
Settings → Cascade → MCP Servers → View raw config
{
"mcpServers": {
"fluent-mcp": {
"command": "npx",
"args": [
"-y",
"@modesty/fluent-mcp"
],
"env": {
"FLUENT_MCP_WORKING_DIR": "<YOUR_FLUENT_MCP_WORKING_DIR>",
"SN_INSTANCE_URL": "https://<YOUR_INSTANCE>.service-now.com",
"SN_AUTH_TYPE": "basic",
"SN_USER_NAME": "local-username",
"SN_PASSWORD": "local-password"
}
}
}
}Claude Desktop — .mcpb bundle
git clone https://github.com/modesty/fluent-mcp.git
cd fluent-mcp
npm install
npm run bundleThis produces fluent-mcp-<YOUR_VERSION>.mcpb. Open that file with Claude Desktop (double-click it) and click Install; the extension settings ask for FLUENT_MCP_WORKING_DIR, SN_INSTANCE_URL and SN_AUTH_TYPE.