Some PDIs are currently unavailable, and PDI actions are paused. View the latest updates here. Read More

MCP Server Configuration

Anish Reghu
Kilo Sage

Dear all,

 

I am trying to configure a MCP Server.

 

I tried my best, but I am failing, not sure why. (Attached are the MCP Server connection logs as well)

 

I am trying to use the nowaikit which is open source MCP Server.

I configured everything via the terminal as well as tried entering those configurations into the claude_desktop_config file as well, but it still throws error.

The JSON code is as below:


{
  "mcpServers": {
    "webpage-mcp": {
      "command": "cmd.exe",
      "args": [
        "/c",
        "npx",
        "-y",
        "-p",
        "webpage-mcp@latest",
        "webpage-mcp-stdio"
      ]
    },
    "nowaikit": {
      "command": "npx",
      "args": [
        "-y",
        "nowaikit"
      ],
      "env": {
        "SERVICENOW_INSTANCE_URL": "https://dev*****.service-now.com",
        "SERVICENOW_BASIC_USERNAME": "mcp_admin",
        "SERVICENOW_BASIC_PASSWORD": "*THE_PASSWORD",
        "WRITE_ENABLED": "true",
        "SCRIPTING_ENABLED": "true"
      }
    }
  },
  "coworkUserFilesPath": "C:\\Users\\AnishReghuKumaranNai\\Claude",
  "preferences": {
    "launchPreviewPersistedWorkspaces": [],
    "launchPreviewSessionScopedSessions": [],
    "coworkScheduledTasksEnabled": false,
    "coworkHipaaRestricted": false,
    "ccdScheduledTasksEnabled": false,
    "bypassPermissionsGateByAccount": {
      "eb4efa2c-d675-43ba-a986-48d24c44df66": false
    },
    "coworkWebSearchEnabled": true,
    "coworkModelAutoFallbackByAccount": {
      "eb4efa2c-d675-43ba-a986-48d24c44df66": true
    },
    "remoteToolsDeviceName": "rcchn0259",
    "epitaxyPrefs": {
      "starred-local-code-sessions": [],
      "starred-cowork-spaces": [],
      "starred-session-groups": [],
      "dframe-group-scopes": {},
      "dframe-local-slice": {
        "pinnedOrder": [],
        "homeProjectsPinnedOrder": []
      },
      "ccd-sessions-filter": {
        "state": {
          "selectedProjects": []
        },
        "version": 0
      },
      "desktop-frame.paneStore.v1": {
        "state": {
          "extraPanesByMode": {},
          "colWeightsByMode": {},
          "rowSplit": 0.5,
          "draftNonce": 0
        },
        "version": 4
      }
    }
  }
}

 

But still this doesn't connect the MCP Server, it fails. Please help.
I created a wrapper script as well and modified the JSON point to that as well.

 

const { spawn } = require('child_process');

const child = spawn('npx', ['-y', 'nowaikit'], {
  env: process.env,
  stdio: ['inherit', 'pipe', 'inherit']
});

child.stdout.on('data', (data) => {
  const lines = data.toString().split('\n');
  for (const line of lines) {
    const trimmed = line.trim();
    if (trimmed.startsWith('{') && trimmed.endsWith('}')) {
      process.stdout.write(line + '\n');
    }
  }
});

child.on('exit', (code) => {
  process.exit(code);
});
{
  "mcpServers": {
    "webpage-mcp": {
      "command": "cmd.exe",
      "args": [
        "/c",
        "npx",
        "-y",
        "-p",
        "webpage-mcp@latest",
        "webpage-mcp-stdio"
      ]
    },
    "nowaikit": {
      "command": "node",
      "args": [
        "C:\\Users\\USERPROFILE_NAMEi\\nowaikit-wrapper.js"
      ],
      "env": {
        "SERVICENOW_INSTANCE_URL": "https://dev*****.service-now.com",
        "SERVICENOW_BASIC_USERNAME": "mcp_admin",
        "SERVICENOW_BASIC_PASSWORD": "THE_PASSWORD",
        "WRITE_ENABLED": "true",
        "SCRIPTING_ENABLED": "true"
      }
    }
  }
}

 

Still the nowaikit fails to run.

 

NOTE - mcp_admin is configured with Identity type = Machine and Internal Integration User - checked.

Please help.

Request - Once again, requesting specific answers that can troubleshoot the issue, no article links, product documentation links, etc.

 

Regards,

Anish

7 REPLIES 7

Hi @Hardik Benani,

Believe me or not, I had tried applying the same settings as the other MCP Server on the nowaikit as well, it still was not working. but now after your recommendation, tried it and all of a sudden it's working. I will wait on this one and mark the thread closed, if it further stays unaffected. Logically, I think this should be root cause. Thanks a ton! Had been sitting behind this for hours now!

Regards,

Anish

Hi @Hardik Benani,


Now I am getting the authentication issue:

You'll need to authenticate to your ServiceNow instance for me to query the incident table — I got an authentication error trying to run the count. Could you connect/re-authenticate the NowAIKit connector, and I'll pull the active incident count right after?

Is there no way other than using the OAuth? Can't we set this basic authentication right? I had deleted the config from Claude client and relaunched it. Also the user has a password set, role is admin. Identity type is Machine and Internal integration user - checked.

Any reasons why the basic auth fails?

By the way I tried validating the basic auth on the terminal, trying to fetch details of the same table which is queried via prompt on the MCP client.

AnishReghu_0-1785242003085.png

And as you can see it fetched the result as well.

That leaves me surprised, why the basic auth fails only on the MCP client.

Regards,

Anish

ServiceNow started enforcing it in the 2026 releases: inbound REST basic auth is now blocked unless the account is explicitly allow-listed, even with an admin role and a valid password. That will give 401.

 

The specific fix: grant mcp_admin the role snc_basic_auth_api_access. That's the exact role ServiceNow checks to permit basic auth for REST (it's set in the instance property glide.authenticate.basic_auth.allowed_roles). Once that role is on the user, the Table API calls will authenticate.

 

But if you curl test is working and returns the incident with those credentials, then the credentials are fine and your instance is not blocking basic auth. 

Check the below:

 

1. Env var names. They must be exactly SERVICENOW_BASIC_USERNAME and SERVICENOW_BASIC_PASSWORD. If you used SERVICENOW_USERNAME/SERVICENOW_PASSWORD, basic auth stays empty and you get a 401.


2. Password. Retype it in the config, no spaces before or after. If it has a backslash or a quote, double the backslash (\\) and put a backslash before the quote (\").


3. Fully quit Claude Desktop and reopen. Closing the window is not enough, it keeps the old settings.

 

If it still fails, open this folder on Windows: press Win+R, paste %APPDATA%\Claude\logs, and open mcp-server-nowaikit.log. Run one prompt, then read the last few lines. It shows the instance it is calling, so you can confirm it matches your curl.

That will pinpoint it. Let me know what the log says.