Skip to main content
Glama

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

  1. Clone this repository

  2. Create a .env file 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

Run directly without containers:

{
  "mcpServers": {
    "tagging-mcp": {
      "command": "uv",
      "args": ["run", "fastmcp", "run", "/path/to/tagging_mcp/tagging.py"]
    }
  }
}

Option 2: Container Deployment

  1. Build the container:

    container build -t tagging_mcp .
  2. 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 tag

  • taxonomy (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 variable

  • output_path (str, optional): Path to save tagged CSV

  • include_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 tag

  • taxonomy (Dict): Full taxonomy dictionary with field definitions and value descriptions

  • text_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 variable

  • output_path (str, optional): Path to save tagged CSV

  • include_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 file

  • rows (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

  1. Preview your CSV:

    Use preview_csv with csv_path="/path/to/data.csv"
  2. 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"
  3. 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 tag

  • confidence: Confidence score (0.0 to 1.0)

  • thinking: Reasoning for each possible value (if include_reasoning=true)

  • reflection: Overall analysis (if include_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 tools
get_tagging_infoA

Get information about the tagging MCP server and supported providers

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
csv_pathYesPath to the CSV file
rowsNoNumber of rows to preview (default: 5)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
csv_pathYesPath to the CSV file to tag
taxonomyYesList of possible tags/categories to assign (e.g., ["technology", "business", "science"])
text_columnNoName of the column containing text to analyze (default: "text")text
providerNoLLM provider - "claude", "openai", "gemini", "groq", or "bedrock" (default: "groq")groq
modelNoModel identifier (default: "llama-3.3-70b-versatile")llama-3.3-70b-versatile
api_keyNoAPI key for the provider (if not set via environment variable)
output_pathNoOptional path to save the tagged CSV (if not provided, returns preview)
include_reasoningNoWhether to include detailed reasoning and reflection in output (default: False)
field_nameNoName for the classification field (default: "category")category

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
csv_pathYesPath to the CSV file to tag
taxonomyYesFull taxonomy dictionary with structure: { "field_name": { "description": "What this field represents", "values": { "value1": "Definition of value1", "value2": "Definition of value2" } } }
text_columnNoName of the column containing text to analyze (default: "text")text
providerNoLLM provider - "claude", "openai", "gemini", "groq", or "bedrock" (default: "groq")groq
modelNoModel identifier (default: "llama-3.3-70b-versatile")llama-3.3-70b-versatile
api_keyNoAPI key for the provider (if not set via environment variable)
output_pathNoOptional path to save the tagged CSV
include_reasoningNoWhether to include detailed reasoning and reflection (default: False)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 4 tool updatesv0.2.0
    • First observedget_tagging_info
    • First observedpreview_csv
    • First observedtag_csv
    • First observedtag_csv_advanced

TDQS

A4/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Enables 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.
    8
    172
    6
    Apache 2.0
  • A
    license
    C
    quality
    B
    maintenance
    Enables 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.
    35
    37
    36
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    28
    4
    ISC

Latest Blog Posts

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