NLP Tools - Sentiment, NER, Toxicity & Language Detection

Toxicity, sentiment, NER, PII detection, and language identification tools

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
88%
Naming quality
90%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,500Tokens (tool definitions)
~601 BTypical response size
Moderate attention impact (1.17% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "nlp-tools": {
      "url": "https://nlp-mcp.thankfulfield-a7857897.eastus.azurecontainerapps.io/mcp"
    }
  }
}

Remote endpoints

https://nlp-mcp.thankfulfield-a7857897.eastus.azurecontainerapps.io/mcpstreamable-http
https://apim-ai-apis.azure-api.net/mcp/nlp/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢analyze_toxicity(text)

Analyze text for toxic content. Returns scores for 6 categories: toxic, severe_toxic, obscene, threat, insult, identity_hate. Each score is 0.0-1.0. BERT-based classifier with sub-15ms latency on GPU. Args: text: Text to analyze for toxicity (hate speech, insults, threats). Returns: dict with keys: - toxic (float 0-1): Overall toxicity score - severe_toxic (float 0-1): Severe toxicity score - obscene (float 0-1): Obscenity score - threat (float 0-1): Threat score - insult (float 0-1): Insult score - identity_hate (float 0-1): Identity-based hate score - is_toxic (bool): Whether text exceeds toxicity threshold

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "description": "Text to analyze for toxicity (hate speech, insults, threats)",
      "maxLength": 100000,
      "type": "string"
    }
  },
  "required": [
    "text"
  ]
}
🟢analyze_sentiment(text, model)

Analyze text sentiment. Returns positive/negative classification with confidence scores. DistilBERT-based with sub-10ms latency. Multiple domain-specific model variants available. Args: text: Text to analyze for sentiment (positive/negative). model: Model variant -- 'general' (default), 'financial', 'twitter'. Returns: dict with keys: - label (str): 'positive' or 'negative' - score (float 0-1): Confidence score for the predicted label - scores (dict): All label scores (positive, negative)

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "description": "Text to analyze for sentiment (positive/negative)",
      "maxLength": 100000,
      "type": "string"
    },
    "model": {
      "default": "general",
      "description": "Model variant: 'general' (default), 'financial', 'twitter'",
      "type": "string"
    }
  },
  "required": [
    "text"
  ]
}
🟢extract_entities(text)

Extract named entities (NER) from text. Identifies persons, organizations, locations, and miscellaneous entities with span offsets and confidence scores. BERT-NER based with sub-50ms latency. Args: text: Text to extract named entities from. Returns: dict with keys: - entities (list): Detected entities, each containing: - text (str): Entity text - label (str): Entity type (PER, ORG, LOC, MISC) - start (int): Character offset start - end (int): Character offset end - score (float 0-1): Confidence score - count (int): Total number of entities found

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "description": "Text to extract named entities from (persons, organizations, locations)",
      "maxLength": 100000,
      "type": "string"
    }
  },
  "required": [
    "text"
  ]
}
🟢detect_pii(text, redact)

Detect personally identifiable information (PII) in text. Finds emails, phone numbers, SSNs, credit cards, IP addresses, and person names. Optionally returns redacted text with PII replaced by type labels (e.g. [EMAIL], [PHONE]). BERT-NER + regex ensemble. Args: text: Text to scan for personally identifiable information. redact: If true, return redacted text with PII replaced by [TYPE]. Returns: dict with keys: - pii_found (list): Detected PII items, each containing: - text (str): The PII value found - type (str): PII type (EMAIL, PHONE, SSN, CREDIT_CARD, IP, PERSON) - start (int): Character offset start - end (int): Character offset end - score (float 0-1): Detection confidence - count (int): Total PII items found - redacted_text (str|null): Text with PII replaced (when redact=true) - has_pii (bool): Whether any PII was detected

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "description": "Text to scan for personally identifiable information",
      "maxLength": 100000,
      "type": "string"
    },
    "redact": {
      "default": false,
      "description": "If true, return redacted text with PII replaced by [TYPE]",
      "type": "boolean"
    }
  },
  "required": [
    "text"
  ]
}
🟢detect_language(text, top_k)

Detect the language of text. Supports 176 languages using fastText. Sub-1ms inference latency. Returns ISO 639-1 codes with confidence scores. Args: text: Text to identify the language of. top_k: Number of top language predictions to return (default: 3). Returns: dict with keys: - language (str): Top predicted language ISO 639-1 code - confidence (float 0-1): Confidence for top prediction - predictions (list): Top-k predictions, each with: - language (str): ISO 639-1 code - confidence (float 0-1): Prediction confidence

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "description": "Text to identify the language of",
      "maxLength": 100000,
      "type": "string"
    },
    "top_k": {
      "default": 3,
      "description": "Number of top language predictions to return",
      "type": "integer"
    }
  },
  "required": [
    "text"
  ]
}
🟢check_nlp_service

Check health status of NLP API services and loaded models. Returns: dict with keys: - status (str): 'healthy' or error state - models (dict): Loaded model status per capability - version (str): API version

Input Schema

{
  "type": "object",
  "properties": {}
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools
verifiedversion not recorded6 tools
verifiedversion not recorded6 tools
verifiedversion not recorded6 tools
verifiedversion not recorded6 tools
verifiedversion not recorded6 tools