ServiceNow MCP Server
- mcp_server_servicenow
"""
ServiceNow MCP Server CLI
This module provides the command-line interface for the ServiceNow MCP server.
"""
import argparse
import os
import sys
from dotenv import load_dotenv
from mcp_server_servicenow.server import ServiceNowMCP, create_basic_auth
def main():
"""Run the ServiceNow MCP server from the command line"""
# Load environment variables from .env file if it exists
load_dotenv()
parser = argparse.ArgumentParser(description="ServiceNow MCP Server")
parser.add_argument("--url", help="ServiceNow instance URL", default=os.environ.get("SERVICENOW_INSTANCE_URL"))
parser.add_argument("--transport", help="Transport protocol (stdio or sse)", default="stdio", choices=["stdio", "sse"])
# Authentication options
auth_group = parser.add_argument_group("Authentication")
auth_group.add_argument("--username", help="ServiceNow username", default=os.environ.get("SERVICENOW_USERNAME"))
auth_group.add_argument("--password", help="ServiceNow password", default=os.environ.get("SERVICENOW_PASSWORD"))
auth_group.add_argument("--token", help="ServiceNow token", default=os.environ.get("SERVICENOW_TOKEN"))
auth_group.add_argument("--client-id", help="OAuth client ID", default=os.environ.get("SERVICENOW_CLIENT_ID"))
auth_group.add_argument("--client-secret", help="OAuth client secret", default=os.environ.get("SERVICENOW_CLIENT_SECRET"))
args = parser.parse_args()
# Check required parameters
if not args.url:
print("Error: ServiceNow instance URL is required")
print("Set SERVICENOW_INSTANCE_URL environment variable or use --url")
sys.exit(1)
# Determine authentication method
auth = None
if args.token:
from mcp_server_servicenow.server import create_token_auth
auth = create_token_auth(args.token)
elif args.client_id and args.client_secret and args.username and args.password:
from mcp_server_servicenow.server import create_oauth_auth
auth = create_oauth_auth(args.client_id, args.client_secret, args.username, args.password, args.url)
elif args.username and args.password:
auth = create_basic_auth(args.username, args.password)
else:
print("Error: Authentication credentials required")
print("Either provide username/password, token, or OAuth credentials")
sys.exit(1)
# Create and run the server
server = ServiceNowMCP(instance_url=args.url, auth=auth)
server.run(transport=args.transport)
if __name__ == "__main__":
main()