Skip to main content
Glama
PritamPatil2603

Upstage MCP Server

Upstage MCP Server

A Model Context Protocol (MCP) server for Upstage AI's document digitization and information extraction capabilities

Overview

The Upstage MCP Server provides a robust bridge between AI assistants and Upstage AI’s powerful document processing APIs. This server enables AI models—such as Claude—to effortlessly extract and structure content from various document types including PDFs, images, and Office files. The package supports multiple formats and comes with seamless integration options for Claude Desktop.

Related MCP server: Nutrient Document Engine MCP Server

Key Features

  • Document Digitization: Extract structured content from documents while preserving layout.

  • Information Extraction: Retrieve specific data points using intelligent, customizable schemas.

  • Multi-format Support: Handles JPEG, PNG, BMP, PDF, TIFF, HEIC, DOCX, PPTX, and XLSX.

  • Claude Desktop Integration: Effortlessly connect with Claude and other MCP clients.

Prerequisites

Before using this server, ensure you have the following:

  1. Upstage API Key: Obtain your API key from Upstage API.

  2. Python 3.10+: The server requires Python version 3.10 or higher.

  3. The MCP server relies upon Astral UV to run, please install

Installation & Configuration

This guide provides step-by-step instructions to set up and configure the upstage-mcp-server

Using uv (Recommended)

No additional installation is required when using uvx as it handles execution. However, if you prefer to install the package directly:

uv pip install upstage-mcp-server

Configure Claude Desktop

For integration with Claude Desktop, add the following content to your claude_desktop_config.json:

Configuration Location

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "upstage-mcp-server": {
      "command": "uvx",
      "args": ["upstage-mcp-server"],
      "env": {
        "UPSTAGE_API_KEY": "<your-api-key>"
      }
    }
  }
}

If uvx is not available globally, you may encounter a Server disconnected error. To resolve this, run which uvx to find its full path, and replace "command": "uvx" above with the returned path.

After adding the configuration, restart Claude Desktop to apply the changes.

Output Directories

Processing results are stored in your home directory under:

  • Document Parsing Results:
    ~/.upstage-mcp-server/outputs/document_parsing/

  • Information Extraction Results:
    ~/.upstage-mcp-server/outputs/information_extraction/

  • Generated Schemas:
    ~/.upstage-mcp-server/outputs/information_extraction/schemas/

Local/Development Setup

Follow these steps to set up and run the project locally:

Step 1: Clone the Repository

git clone https://github.com/PritamPatil2603/upstage-mcp-server.git
cd upstage-mcp-server

Step 2: Set Up the Python Environment

# Install uv if not already installed
pip install uv

# Create and activate a virtual environment
uv venv

# Activate the virtual environment
# On Windows:
# .venv\Scripts\activate
# On macOS/Linux:
source .venv/bin/activate

# Install dependencies in editable mode
uv pip install -e .

Step 3: Configure Claude Desktop for Local Testing

  1. Download Claude Desktop:
    Download Claude Desktop

  2. Open and Edit Configuration:

    • Navigate to Claude → Settings → Developer → Edit Config.

    • Edit the claude_desktop_config.json file with the following configurations:

    For Windows:

    {
      "mcpServers": {
        "upstage-mcp-server": {
          "command": "uv",
          "args": [
            "run",
            "--directory",
            "C:\\path\\to\\cloned\\upstage-mcp-server",
            "python",
            "-m",
            "upstage_mcp.server"
          ],
          "env": {
            "UPSTAGE_API_KEY": "your_api_key_here"
          }
        }
      }
    }

    Replace C:\\path\\to\\cloned\\upstage-mcp-server with your actual repository path.

    For macOS/Linux:

    {
      "mcpServers": {
        "upstage-mcp-server": {
          "command": "/Users/username/.local/bin/uv",
          "args": [
            "run",
            "--directory",
            "/path/to/cloned/upstage-mcp-server",
            "python",
            "-m",
            "upstage_mcp.server"
          ],
          "env": {
            "UPSTAGE_API_KEY": "your_api_key_here"
          }
        }
      }
    }

    Replace:

    • /Users/username/.local/bin/uv with the output of which uv.

    • /path/to/cloned/upstage-mcp-server with the absolute path to your local clone.

Tip for macOS/Linux users: If connection issues occur, using the full path to your uv executable can improve reliability.

After configuring, restart Claude Desktop.

Available Tools

The server exposes two primary tools for AI models:

  1. Document Parsing (parse_document):

    • Description: Processes documents and extracts content while preserving structure.

    • Parameter:
      file_path – the path to the document to be processed.

    • Example Query:
      "Can you parse the document at C:\Users\username\Documents\contract.pdf and provide a summary?"

  2. Information Extraction (extract_information):

    • Description: Extracts structured information from documents based on predefined or auto-generated schemas.

    • Parameters:
      file_path – the document file path;
      schema_path (optional) – a JSON file with an extraction schema;
      auto_generate_schema (default true) – whether to auto-generate a schema.

    • Example Query:
      "Extract the invoice number, date, and total from C:\Users\username\Documents\invoice.pdf."

Below is the revised troubleshooting section formatted as requested. You can copy and paste the following Markdown directly into your README:

Troubleshooting

Common Issues

  • API Key Missing:
    Ensure that your UPSTAGE_API_KEY is correctly set in your claude_desktop_config.json file. Obtain a valid API key from Upstage Console.

  • File Not Found:
    Double-check the file path for correctness and accessibility. Ensure that file paths are absolute (e.g., C:\Users\name\Documents\file.pdf) and that any special characters in the path are properly escaped.

  • Server Not Starting:
    Verify that your virtual environment is activated and all dependencies are installed. Additionally, review the Claude Desktop log files for errors:

    • Windows: %APPDATA%\Claude\logs\mcp-server-upstage-mcp-server.log

    • macOS: ~/Library/Logs/Claude/mcp-server-upstage-mcp-server.log

  • Server Connection Issues:
    Restart Claude Desktop. Ensure that uvx is installed and available in your system PATH, or use its absolute path in your configuration if needed.

  • Processing Failures:
    Check that the document is in a supported format (PDF, JPEG, PNG, TIFF, etc.), its file size is under 50MB, and it contains fewer than 100 pages. Test with a simpler document to confirm functionality.

  • Invalid Document Format:
    Verify that the document is in a supported, uncorrupted format.

  • Failed to Connect to Upstage API:
    Confirm your network connection, firewall settings, and configuration details in claude_desktop_config.json. Review the logs for more detailed error messages.

Log Files

For troubleshooting, view the server logs at:

  • Windows:
    %APPDATA%\Claude\logs\mcp-server-upstage-mcp-server.log

  • macOS:
    ~/Library/Logs/Claude/mcp-server-upstage-mcp-server.log

Contributing

Contributions are welcome! If you wish to enhance the project or add new features, please fork the repository and submit a pull request. For major changes, please open an issue first to discuss what you would like to change.

License

This project is licensed under the MIT License.

Available Tools

2 tools
extract_informationB

Extract structured information from documents using Upstage Universal Information Extraction.

This tool can extract key information from any document type without pre-training.
You can either provide a schema defining what information to extract, or let the system
automatically generate an appropriate schema based on the document content.

Supported file formats: JPEG, PNG, BMP, PDF, TIFF, HEIC, DOCX, PPTX, XLSX
Max file size: 50MB
Max pages: 100

Args:
    file_path: Path to the document file to process
    schema_path: Optional path to a JSON file containing the extraction schema
    schema_json: Optional JSON string containing the extraction schema
    auto_generate_schema: Whether to automatically generate a schema if none is provided
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesPath to the document file to process
schema_jsonNoJSON string containing the extraction schema (optional)
schema_pathNoPath to JSON file containing the extraction schema (optional)
auto_generate_schemaNoWhether to automatically generate a schema

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the auto-generation behavior, file format support, and limits. It does not discuss error handling, parameter interaction (e.g., if both schema_path and schema_json are provided), or return value format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured: a brief overview sentence, a paragraph explaining capabilities, and a bullet list of constraints. The 'Args:' section is somewhat redundant with the schema but provides a quick summary. One minor inefficiency: the parameter descriptions in 'Args' are nearly verbatim from the schema.

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 no output schema, the description does not explain what the tool returns (e.g., a JSON object? a string?). It covers usage and constraints well but omits return value description and fails to differentiate from the sibling tool. These are notable gaps in completeness.

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%, meaning the input schema already describes each parameter. The description adds minimal additional context, such as default values (auto_generate_schema defaults to true) and optional nature. It mostly repeats schema info, so value added is marginal.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Extract structured information from documents', providing a specific verb and resource. While it doesn't explicitly distinguish from the sibling 'parse_document', the focus on information extraction versus parsing is implied by the name and context.

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 gives useful context like supported file formats, size limits, and page limits. It explains the two modes (schema provided or auto-generated). However, it does not state when to use this tool over the sibling 'parse_document', nor does it provide any exclusions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parse_documentC

Parse a document using Upstage AI's document digitization API.

This tool extracts the structure and content from various document types,
including PDFs, images, and Office files. It preserves the original formatting
and layout while converting the document into a structured format.

Supported file formats include: PDF, JPEG, PNG, TIFF, and other common document formats.
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesPath to the document file to be processed
output_formatsNoOutput formats (e.g., 'html', 'text', 'markdown')

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, placing the full burden on the description. The description only mentions that the tool extracts content without discussing side effects, authentication, rate limits, or whether it modifies the document. This lack of behavioral disclosure is insufficient for a tool that processes files.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise at three sentences plus a format list. It front-loads the main purpose and avoids unnecessary detail. It could be slightly more structured, but overall it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of document parsing, the description lacks information about the output structure, error handling, performance characteristics, and behavior with different input types. Without an output schema, the agent is left guessing what the tool returns. This is a significant gap.

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?

The input schema covers all parameters with 100% description coverage. The description adds value by enumerating supported file formats for file_path, but does not elaborate on output_formats (e.g., default behavior, accepted values). The complementary information is helpful but not extensive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool parses documents using Upstage AI's API, extracting structure and content while preserving formatting. It lists supported file formats (PDF, JPEG, etc.). However, it does not differentiate itself from the sibling tool 'extract_information', which may cause confusion about when to use which.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context about the API used and supported file types but does not specify when to use this tool versus the alternative 'extract_information'. It lacks explicit guidance on prerequisites, limitations, or recommended use cases.

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. 2 tool updatesv0.1.0
    • First observedextract_information
    • First observedparse_document

TDQS

A3.5/5.0
Disambiguation5/5

The two tools have clearly distinct purposes: parse_document extracts structure and layout, while extract_information extracts specific information. There is no overlap or ambiguity.

Naming Consistency5/5

Both tools follow a consistent verb_noun pattern (parse_document, extract_information), making it predictable and easy to understand.

Tool Count3/5

With only 2 tools, the server feels thin for the scope of document processing. While the tools are high-value, the count is borderline low.

Completeness4/5

The tools cover core digitization and information extraction, but lack operations like listing, deleting, or batch processing. These are minor gaps that agents can work around.

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

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables extraction of text, tables, and structured data from PDFs, images, and office documents using LandingAI's Agentic Document Extraction API. Supports both direct parsing and background job processing for large files with privacy-focused processing.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents and users to process documents through natural language, supporting PDF operations like text extraction, redaction, splitting, form filling, annotations, and content search.
    275
    61
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables document processing through Upstage AI services including parsing various document formats, extracting structured information with custom schemas, auto-generating extraction schemas, and classifying documents into categories.
    4
    29
    3
    MIT

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/PritamPatil2603/upstage-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server