{
  "markdown": "<!-- markdownlint-disable MD033 -->\n# Sentor MCP Server\n\n<img src=\"https://raw.githubusercontent.com/NIKX-Tech/sentor-mcp/prod/logo.png\" width=\"70\" alt=\"Sentor Logo\">\n\n**Entity-based sentiment analysis for Claude, Cursor, Windsurf, and any MCP-compatible AI assistant.**\n\n[![PyPI](https://img.shields.io/pypi/v/sentor-mcp?style=flat-square&logo=python&logoColor=white&label=pypi)](https://pypi.org/project/sentor-mcp/)\n[![Python](https://img.shields.io/pypi/pyversions/sentor-mcp?style=flat-square)](https://pypi.org/project/sentor-mcp/)\n[![License](https://img.shields.io/github/license/NIKX-Tech/sentor-mcp?style=flat-square&color=blue)](https://opensource.org/licenses/MIT)\n[![GitHub Stars](https://img.shields.io/github/stars/NIKX-Tech/sentor-mcp?style=flat-square&color=yellow)](https://github.com/NIKX-Tech/sentor-mcp/stargazers)\n<br>\n[![Website](https://img.shields.io/badge/website-sentor.app-5546FA?style=flat-square&logo=google-chrome&logoColor=white)](https://sentor.app)\n[![Dashboard](https://img.shields.io/badge/get%20api%20key-dashboard.sentor.app-5546FA?style=flat-square)](https://dashboard.sentor.app/settings?tab=api-access)\n[![Docs](https://img.shields.io/badge/docs-sentor.app%2Fdocs-5546FA?style=flat-square)](https://sentor.app/docs/integrations/mcp)\n\nSentor is an entity-based sentiment analysis platform powered by fine-tuned BERT models. This MCP server exposes Sentor's ML APIs as tools your AI assistant can call directly — score sentiment toward specific entities in text, cluster documents by topic, and generate topic labels, all from a single natural-language prompt.\n\n---\n\n## Table of Contents\n\n- [What It Does](#-what-it-does)\n- [Requirements](#-requirements)\n- [Quick Start](#-quick-start)\n  - [Claude Desktop](#claude-desktop)\n  - [Cursor / Windsurf](#cursor--windsurf)\n  - [Claude.ai Web (Remote MCP)](#claudeai-web-remote-mcp)\n- [Tools Reference](#-tools-reference)\n- [Usage Examples](#-usage-examples)\n- [Rate Limits](#-rate-limits)\n- [Remote Deployment](#-remote-deployment)\n- [Links](#-links)\n\n---\n\n## 🎯 What It Does\n\nOnce connected, your AI assistant gains four tools:\n\n| Tool | What it does |\n|------|-------------|\n| `analyze_sentiment` | Score sentiment toward named entities (brands, products, features, people) in one or more documents. Returns per-document and per-sentence breakdowns. |\n| `cluster_documents` | Group 5+ documents into thematic clusters using BERTopic + HDBSCAN. Automatically discovers the number of clusters. |\n| `name_topic` | Generate a 3–5 word descriptive label for each cluster using an LLM (e.g. \"Shipping Delay Complaints\"). |\n| `health_check` | Verify the Sentor API is reachable and ML models are loaded. |\n\n**Example prompt after setup:**\n> *\"Analyse these 50 customer reviews for sentiment toward our checkout flow and delivery speed. Then cluster them by topic and name each cluster.\"*\n\n---\n\n## 📋 Requirements\n\n- Python 3.10+\n- A Sentor API key — [get one free at dashboard.sentor.app](https://dashboard.sentor.app/settings?tab=api-access)\n\n---\n\n## 🚀 Quick Start\n\n### Claude Desktop\n\n**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`\n**Windows:** `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"sentor\": {\n      \"command\": \"uvx\",\n      \"args\": [\"sentor-mcp\"],\n      \"env\": {\n        \"SENTOR_API_KEY\": \"your_api_key_here\"\n      }\n    }\n  }\n}\n```\n\nRestart Claude Desktop. A hammer icon appears in the tool selector — Sentor is ready.\n\n> **No `uvx`?** Install it with `pip install uv`, or use `sentor-mcp` directly after `pip install sentor-mcp`.\n\n---\n\n### Cursor / Windsurf\n\nAdd to `.cursor/mcp.json` (project-level) or `~/.cursor/mcp.json` (global):\n\n```json\n{\n  \"mcpServers\": {\n    \"sentor\": {\n      \"command\": \"uvx\",\n      \"args\": [\"sentor-mcp\"],\n      \"env\": {\n        \"SENTOR_API_KEY\": \"your_api_key_here\"\n      }\n    }\n  }\n}\n```\n\n---\n\n### Claude.ai Web (Remote MCP)\n\nRun the HTTP server and connect by URL:\n\n```bash\ndocker run -e SENTOR_API_KEY=your_api_key -p 8080:8080 ghcr.io/nikx-tech/sentor-mcp:latest\n```\n\nThen in Claude.ai → Settings → Integrations → Add MCP Server:\n```\nhttp://your-server:8080/sse\n```\n\n---\n\n## 🔧 Tools Reference\n\n### `analyze_sentiment(docs, language=\"en\")`\n\nAnalyse entity-level sentiment in one or more documents.\n\n```python\ndocs = [\n    {\n        \"doc_id\": \"review-1\",\n        \"doc\": \"The delivery was fast but the packaging was completely crushed.\",\n        \"entities\": [\"delivery\", \"packaging\"]\n    }\n]\n# Returns: predicted_label, probabilities, per-sentence details\n```\n\n**Supported languages:** `en` (English), `nl` (Dutch)\n\n---\n\n### `cluster_documents(documents, language=\"en\")`\n\nGroup documents into thematic clusters. Requires at least 5 documents.\n\n```python\ndocuments = [\n    {\"doc_id\": \"r1\", \"text\": \"Great product quality, very happy.\", \"entities\": [\"product\"]},\n    # ... at least 5 documents\n]\n# Returns: clusters with cluster_id, document_count, documents, top_words\n# Cluster -1 = outliers that did not fit any topic\n```\n\n---\n\n### `name_topic(cluster_id, documents, top_words, entities, language=\"en\")`\n\nGenerate a short label for a cluster. Pass data directly from `cluster_documents` output.\n\n```python\nname_topic(\n    cluster_id=0,\n    documents=cluster[\"documents\"],\n    top_words=cluster[\"top_words\"],\n    entities=[\"BrandName\"],  # exclude your brand from the label\n    language=\"en\"\n)\n# Returns: { \"topic_name\": \"Shipping Delay Complaints\", \"generation_method\": \"LLM\" }\n```\n\n---\n\n### `health_check()`\n\n```python\n# Returns: { \"status\": \"healthy\", \"version\": \"1.0.0\", \"llm_status\": \"available\" }\n```\n\n---\n\n## 💬 Usage Examples\n\n**Single document:**\n> *\"Use Sentor to analyse the sentiment of this review toward Apple and iPhone: [paste text]\"*\n\n**Batch analysis:**\n> *\"I have 100 customer reviews. Use Sentor to score sentiment toward 'delivery' and 'support' in each one, then tell me the ratio of positive to negative.\"*\n\n**Full pipeline:**\n> *\"Use Sentor to: 1) analyse sentiment in these 200 reviews for 'product quality' and 'price', 2) cluster them by topic, 3) name each cluster, 4) summarise the findings.\"*\n\n**Competitive analysis:**\n> *\"Analyse these tweets for sentiment toward Apple, Samsung, and Google separately using Sentor, then compare the results.\"*\n\n---\n\n## 📊 Rate Limits\n\n| Plan | Per Minute | Per Day | Per Month |\n|------|:---------:|:-------:|:---------:|\n| **Free** | 5 | 100 | 1,000 |\n| **Starter** | 60 | 1,000 | 10,000 |\n| **Growth** | 200 | 3,000 | 30,000 |\n| **Business** | 500 | 10,000 | 100,000 |\n| **Enterprise** | Custom | Custom | Custom |\n\n[View full pricing →](https://sentor.app/pricing)\n\n---\n\n## 🐳 Remote Deployment\n\nRun as a hosted HTTP/SSE server for AI tools that support remote MCP endpoints.\n\n**Docker:**\n\n```bash\ndocker build -t sentor-mcp .\ndocker run \\\n  -e SENTOR_API_KEY=your_key \\\n  -p 8080:8080 \\\n  sentor-mcp\n```\n\nThe server exposes:\n- `GET /sse` — SSE stream (MCP transport)\n- `POST /messages` — message endpoint\n\n**Environment variables:**\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `SENTOR_API_KEY` | — | **Required.** Your Sentor API key. |\n| `SENTOR_BASE_URL` | `https://sentor.app/api` | Override to point at a self-hosted Sentor instance. |\n| `PORT` | `8080` | HTTP server port. |\n\n---\n\n## 🔗 Links\n\n- [Sentor Dashboard](https://dashboard.sentor.app) — manage API keys, projects, and usage\n- [API Documentation](https://sentor.app/docs) — full REST API reference\n- [MCP Integration Guide](https://sentor.app/docs/integrations/mcp) — step-by-step setup\n- [PyPI Package](https://pypi.org/project/sentor-mcp/) — `pip install sentor-mcp`\n- [Support](mailto:sentor@nikx.one)\n\n---\n\n<!-- mcp-name: io.github.NIKX-Tech/sentor-mcp -->\n\n<p align=\"center\">\n  Built by <a href=\"https://nikx.one\">NIKX Technologies B.V.</a>\n</p>\n",
  "bytes": 7805,
  "sha": "ae89ec7a1b78ccb3563d777aeff4ad94d493f54d6143641055cc5296b790ce5a",
  "repo_slug": "nikx-tech/sentor-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_nikx_tech_sentor_mcp_0cd8642e/readme"
}