Tagging MCP
Enables parallel tagging and classification of CSV data using OpenAI models (GPT-4, GPT-4-turbo, GPT-3.5-turbo) with structured output and confidence scoring.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Tagging MCPtag this customer feedback CSV with sentiment categories and include reasoning"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Tagging MCP
MCP server for tagging CSV rows using polar_llama with parallel LLM inference.
Overview
This MCP server enables fast, parallel tagging of CSV data using multiple LLM providers. It leverages polar_llama to process rows concurrently, making it ideal for batch classification and tagging tasks.
Related MCP server: par5-mcp
Features
Parallel Processing: Tag hundreds or thousands of CSV rows concurrently
Multiple LLM Providers: Support for Claude (Anthropic), OpenAI, Gemini, and Groq
Structured Output: Uses Pydantic models for consistent, type-safe results
Flexible Taxonomy: Define custom tag lists for your use case
Optional Reasoning: Include confidence levels and explanations for tags
Installation
Prerequisites
Python 3.12+
UV package manager
API key for at least one LLM provider
Environment Setup
Clone this repository
Create a
.envfile with your API keys:ANTHROPIC_API_KEY=your_key_here OPENAI_API_KEY=your_key_here GEMINI_API_KEY=your_key_here GROQ_API_KEY=your_key_here
Claude Desktop Configuration
Option 1: Local Development (Recommended)
Run directly without containers:
{
"mcpServers": {
"tagging-mcp": {
"command": "uv",
"args": ["run", "fastmcp", "run", "/path/to/tagging_mcp/tagging.py"]
}
}
}Option 2: Container Deployment
Build the container:
container build -t tagging_mcp .Configure Claude Desktop:
{ "mcpServers": { "tagging-mcp": { "command": "container", "args": ["run", "--interactive", "tagging_mcp"] } } }
Available Tools
tag_csv
Simple tagging with a list of categories. Perfect for basic classification tasks.
Parameters:
csv_path(str): Path to the CSV file to tagtaxonomy(List[str]): List of possible tags/categories (e.g., ["technology", "business", "science"])text_column(str, optional): Column containing text to analyze (default: "text")provider(str, optional): LLM provider - "claude", "openai", "gemini", "groq", or "bedrock" (default: "groq")model(str, optional): Model identifier (default: "llama-3.3-70b-versatile")api_key(str, optional): API key if not set via environment variableoutput_path(str, optional): Path to save tagged CSVinclude_reasoning(bool, optional): Include detailed reasoning and reflection (default: false)field_name(str, optional): Name for the classification field (default: "category")
Returns: Dictionary with status, tagged data preview, confidence scores, and optional errors
tag_csv_advanced
Advanced multi-dimensional classification with custom taxonomy definitions. Use this for complex tagging with multiple fields.
Parameters:
csv_path(str): Path to the CSV file to tagtaxonomy(Dict): Full taxonomy dictionary with field definitions and value descriptionstext_column(str, optional): Column containing text to analyze (default: "text")provider(str, optional): LLM provider (default: "groq")model(str, optional): Model identifier (default: "llama-3.3-70b-versatile")api_key(str, optional): API key if not set via environment variableoutput_path(str, optional): Path to save tagged CSVinclude_reasoning(bool, optional): Include detailed reasoning (default: false)
Example Taxonomy:
{
"sentiment": {
"description": "The emotional tone of the text",
"values": {
"positive": "Text expresses positive emotions or favorable opinions",
"negative": "Text expresses negative emotions or unfavorable opinions",
"neutral": "Text is factual and objective"
}
},
"urgency": {
"description": "How urgent the content is",
"values": {
"high": "Requires immediate attention",
"medium": "Should be addressed soon",
"low": "Can be addressed at any time"
}
}
}Returns: Dictionary with status, all field values, confidence scores per field, and optional reasoning
preview_csv
Preview the first few rows of a CSV file to understand its structure.
Parameters:
csv_path(str): Path to the CSV filerows(int, optional): Number of rows to preview (default: 5)
Returns: Dictionary with columns, row count, and preview data
get_tagging_info
Get information about the tagging MCP server and supported providers.
Returns: Server metadata, supported providers, features, and available tools
Example Usage
Basic Tagging
Preview your CSV:
Use preview_csv with csv_path="/path/to/data.csv"Simple category tagging:
Use tag_csv with: - csv_path="/path/to/data.csv" - taxonomy=["technology", "business", "science", "politics"] - text_column="description" - output_path="/path/to/tagged_output.csv"Include reasoning for transparency:
Use tag_csv with: - csv_path="/path/to/data.csv" - taxonomy=["urgent", "normal", "low_priority"] - field_name="priority" - include_reasoning=true
Advanced Multi-Field Tagging
For complex classification with multiple dimensions:
Use tag_csv_advanced with:
- csv_path="/path/to/support_tickets.csv"
- taxonomy={
"department": {
"description": "Which department should handle this",
"values": {
"sales": "Product inquiries and purchases",
"support": "Technical issues and bugs",
"billing": "Payment and account questions"
}
},
"priority": {
"description": "How urgent this is",
"values": {
"urgent": "Service down or critical issue",
"high": "Significant problem",
"normal": "Standard request"
}
}
}
- text_column="ticket_description"
- output_path="/path/to/classified_tickets.csv"Output Structure
Basic Tagging Output
Original CSV columns
{field_name}: The selected tagconfidence: Confidence score (0.0 to 1.0)thinking: Reasoning for each possible value (ifinclude_reasoning=true)reflection: Overall analysis (ifinclude_reasoning=true)
Advanced Tagging Output
Original CSV columns
For each taxonomy field:
{field_name}: Selected value{field_name}_confidence: Confidence score{field_name}_thinking: Reasoning dict (if enabled){field_name}_reflection: Analysis (if enabled)
Supported LLM Providers
Groq (Recommended): llama-3.3-70b-versatile, llama-3.1-70b-versatile, mixtral-8x7b-32768
Claude (Anthropic): claude-3-5-sonnet-20241022, claude-3-opus-20240229
OpenAI: gpt-4, gpt-4-turbo, gpt-3.5-turbo
Gemini: gemini-1.5-pro, gemini-1.5-flash
AWS Bedrock: anthropic.claude-3-sonnet, anthropic.claude-3-haiku
Key Features
⨠Detailed Reasoning: For each tag, see why the model chose it š Reflection: Model reflects on its analysis š Confidence Scores: Know how confident each classification is (0.0-1.0) ā” Parallel Processing: All rows processed concurrently šÆ Error Detection: Automatic error tracking and reporting š§ Flexible: Simple list or complex multi-field taxonomies
License
MIT
Available Tools
4 toolsget_tagging_infoA
Get information about the tagging MCP server and supported providers
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It indicates a safe read operation, but lacks details on response format or side effects. However, no misleading information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with 12 words, front-loaded essential information. No wasted content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and presence of output schema, the description is adequate. There is a minor lack of detail about what 'providers' entails, but overall complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so baseline is 4. Description adds no parameter info as none are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it retrieves information about the tagging MCP server and supported providers, which is a specific verb-resource pair. It distinguishes from sibling tools that handle CSV operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternatives are given, but the context implies it should be called before tagging tools. Usage is implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_csvA
Preview the first few rows of a CSV file to understand its structure.
| Name | Required | Description | Default |
|---|---|---|---|
| csv_path | Yes | Path to the CSV file | |
| rows | No | Number of rows to preview (default: 5) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It indicates a read-only preview but does not explicitly state that no modifications occur, missing an opportunity to emphasize safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence of 15 words that front-loads the action. Every word serves a purpose, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema, the description suffices. It does not mention the default row count or limitations, but these are minor omissions for a simple preview tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description does not need to add much. It does not elaborate on parameter semantics beyond what the schema provides, maintaining the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Preview the first few rows') and the resource ('a CSV file'), with the purpose ('to understand its structure'). It effectively distinguishes from sibling tools which focus on tagging.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies using this tool for initial exploration of CSV structure before tagging, but does not explicitly state when not to use or suggest alternatives. Siblings are different enough that implicit guidance is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tag_csvA
Tag all rows in a CSV file based on a provided taxonomy using parallel LLM inference.
| Name | Required | Description | Default |
|---|---|---|---|
| csv_path | Yes | Path to the CSV file to tag | |
| taxonomy | Yes | List of possible tags/categories to assign (e.g., ["technology", "business", "science"]) | |
| text_column | No | Name of the column containing text to analyze (default: "text") | text |
| provider | No | LLM provider - "claude", "openai", "gemini", "groq", or "bedrock" (default: "groq") | groq |
| model | No | Model identifier (default: "llama-3.3-70b-versatile") | llama-3.3-70b-versatile |
| api_key | No | API key for the provider (if not set via environment variable) | |
| output_path | No | Optional path to save the tagged CSV (if not provided, returns preview) | |
| include_reasoning | No | Whether to include detailed reasoning and reflection in output (default: False) | |
| field_name | No | Name for the classification field (default: "category") | category |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It mentions parallel inference and output options but omits details like error behavior, rate limits, or prerequisites. Reasonable but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no filler. All words contribute to the purpose and method. Efficiently structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters, no annotations, and an output schema not described, the description leaves gaps (e.g., return format, error scenarios). However, the presence of an output schema partially mitigates. It is minimally complete but not rich.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add significant meaning beyond the schema; it rephrases but does not clarify usage context or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Tag'), the resource ('rows in a CSV file'), and the method ('using parallel LLM inference'). It distinguishes from siblings by specifying the operation on CSV data with taxonomy-based tagging.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus siblings like 'tag_csv_advanced' or 'preview_csv'. The description implies its use for tagging, but lacks when-not-to-use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tag_csv_advancedA
Tag CSV rows using a custom taxonomy with multiple fields and detailed value definitions.
This is the advanced version that accepts a full taxonomy dictionary for multi-dimensional classification.
| Name | Required | Description | Default |
|---|---|---|---|
| csv_path | Yes | Path to the CSV file to tag | |
| taxonomy | Yes | Full taxonomy dictionary with structure: { "field_name": { "description": "What this field represents", "values": { "value1": "Definition of value1", "value2": "Definition of value2" } } } | |
| text_column | No | Name of the column containing text to analyze (default: "text") | text |
| provider | No | LLM provider - "claude", "openai", "gemini", "groq", or "bedrock" (default: "groq") | groq |
| model | No | Model identifier (default: "llama-3.3-70b-versatile") | llama-3.3-70b-versatile |
| api_key | No | API key for the provider (if not set via environment variable) | |
| output_path | No | Optional path to save the tagged CSV | |
| include_reasoning | No | Whether to include detailed reasoning and reflection (default: False) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears the full burden of behavioral disclosure. It only describes the basic tagging operation but omits details such as error handling, file overwrite behavior, side effects, or required permissions. The inclusion of parameters like provider and api_key hints at external calls but lacks transparency on rate limits or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences that efficiently convey the core purpose and key differentiator (advanced version). Every sentence is meaningful and front-loaded, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, nested objects) and the presence of an output schema, the description is minimally adequate. It explains what the tool does but does not mention the output format or how new columns are added, relying on the output schema to fill gaps. More context could assist an agent in understanding the workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds context about the taxonomy being for 'multi-dimensional classification,' which aligns with the schema. However, it does not significantly enhance understanding beyond what the input schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool tags CSV rows using a custom taxonomy and explicitly identifies itself as the advanced version accepting a full taxonomy dictionary. The verb 'tag' and resource 'CSV rows' are specific, and the mention of 'multiple fields' and 'multi-dimensional classification' distinguishes it from simpler sibling tools like tag_csv.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this advanced version is for multi-dimensional classification with a full taxonomy, suggesting it should be used over the simpler tag_csv when such detail is needed. However, it does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
4 tool updates
v0.2.0- First observed
get_tagging_info - First observed
preview_csv - First observed
tag_csv - First observed
tag_csv_advanced
TDQS
Each tool has a clearly distinct purpose: get_tagging_info provides server info, preview_csv shows CSV structure, tag_csv performs simple tagging, and tag_csv_advanced handles complex multi-dimensional tagging. No overlap.
All tools follow a consistent verb_noun pattern (get_tagging_info, preview_csv, tag_csv, tag_csv_advanced) with a clear advanced variant suffix, making it easy to understand the action and target.
With 4 tools, the server is well-scoped for its purpose of CSV tagging: informational, preview, basic tagging, and advanced tagging. No unnecessary tools and the count feels appropriate.
The core workflow (preview CSV, tag with taxonomy) is covered, including advanced multi-dimensional tagging. Minor gaps: no tool to list available taxonomies or to retrieve/modify past tagging results, but the server's primary function is adequately supported.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Validate and convert JSONL fine-tuning data across 11 AI providers. 13 tools.
Multi-LLM entity enrichment: schemas, single/batch enrichment, fusion, model benchmarks.
Sentiment, toxicity, entity extraction, PII, translation, summary, QA, fraud scoring, safety audit.
Turn documents into structured, AI-ready data by parsing, enriching, chunking, and embedding.
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables running multiple Claude prompts simultaneously in parallel with support for file contexts and output redirection to individual files.1-
- AlicenseAqualityAmaintenanceEnables parallel execution of shell commands and AI coding agents (Claude, Gemini, Codex) across lists of items like files or URLs, with batched processing and real-time streaming output for batch operations.81726Apache 2.0
- AlicenseCqualityBmaintenanceEnables conversational data analysis of Excel/CSV files through natural language queries, powered by 395 Excel functions via HyperFormula and multi-provider AI. Supports advanced analytics, bulk operations, financial modeling, and large file processing with intelligent chunking.353736MIT
- AlicenseNot gradedqualityDmaintenanceEnables efficient reading, analyzing, and querying of Excel, CSV, and JSON files with support for chunked processing, column/field filtering, and streaming for large datasets. Supports multiple transport protocols (stdio, HTTP, SSE) for flexible integration.284ISC
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/daviddrummond95/tagging_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server