Spring AI MCP Batch Job Server

Spring AI MCP Batch Job Server

A Spring Boot Model Context Protocol (MCP) server that provides batch processing tools for financial transactions.

iAMSagar44

研究与数据
访问服务器

README

Spring AI MCP Batch Job Server

A Spring Boot Model Context Protocol (MCP) server that provides batch processing tools for financial transactions. This project showcases the Spring AI MCP Server Boot Starter capabilities with STDIO transport implementation, combined with Spring Batch for processing financial data.

Prerequisites

  • Java 21 or later
  • PostgreSQL database
  • Understanding of Spring Boot, Spring Batch, Spring AI and MCP concepts
  • OpenAI API key for AI-powered transaction categorization

About Spring AI MCP Server Boot Starter

The project uses Spring AI's MCP Server Boot Starter to expose batch processing operations as tools that can be consumed by AI assistants. It combines this with Spring Batch to process financial transaction data, categorize transactions using AI, and store them in a PostgreSQL database.

Tool Implementation

The project demonstrates how to implement and register MCP tools using Spring's dependency injection and auto-configuration:

@Service
public class BatchJobService {
    @Tool(description = "Triggers a batch job based on the provided file name.")
    public ResponseEntity<JobDetails> startJob(String fileName) {
        // Implementation
    }

    @Tool(description = "Restarts a failed job based on the job execution ID.")
    public ResponseEntity<?> restartJob(Long executionId) {
        // Implementation
    }

    @Tool(description = "Retrieves the status of a batch job based on the job execution ID.")
    public ResponseEntity<JobDetails> getJobStatus(Long executionId) {
        // Implementation
    }
}

Available Agents

  1. Start Job Agent

    • Triggers a batch job to process a financial transactions file
    • Requires the file name
    • Reads CSV files from the user's Downloads directory
    • Returns job execution details including ID and status
  2. Restart Job Agent

    • Restarts a failed job execution
    • Requires the job execution ID of the failed job
    • Returns the new job execution details
  3. Job Status Agent

    • Retrieves the current status of a job
    • Requires the job execution ID
    • Provides detailed execution information including start/end times
    • Useful for monitoring job progress

Processing Pipeline

The batch job processes financial transactions through multiple steps:

  1. File Movement Step

    • Moves the input file to a temporary location
    • Ensures file safety during processing
  2. Transaction Processing Step

    • Reads CSV files with transaction data
    • Filters and categorizes credit/debit transactions
    • Uses AI to categorize transactions by type
    • Writes processed data to PostgreSQL database
  3. Cleanup Step

    • Removes temporary files after processing
    • Ensures clean workspace for next execution

Configuration

Application Properties

# Required STDIO Configuration
spring.main.web-application-type=none
spring.main.banner-mode=off
logging.pattern.console=

# Server Configuration
spring.ai.mcp.server.enabled=true
spring.ai.mcp.server.stdio=true
spring.ai.mcp.server.name=batch-job-mcp

# Database Configuration
spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.batch.jdbc.initialize-schema=always

# OpenAI Configuration
spring.ai.openai.api-key=${OPENAI_API_KEY}
spring.ai.openai.chat.options.model=gpt-4o

Building and Running

The server uses STDIO transport mode and is typically started automatically by the client. To build the server jar:

./mvnw clean install

Client Integration

To use this batch processing server with Claude Desktop, add the following configuration to your Claude Desktop settings:

{
    "mcpServers": {
        "spring-ai-batch-mcp": {
            "command": "java",
            "args": [
                "-Dspring.ai.mcp.server.stdio=true",
                "-Dspring.main.web-application-type=none",
                "-Dlogging.pattern.console=",
                "-Dlogging.file.name=<log_path/batch-job-mcp-0.0.1-SNAPSHOT.log>",
                "-jar",
                "/absolute/path/to/batch-job-mcp-0.0.1-SNAPSHOT.jar"
            ],
            "env": {
                "OPENAI_API_KEY": "<YOUR_API_KEY>"
            }
        }
    }
}

Replace /absolute/path/to/ with the actual path to your built jar file.

Replace log_path with the actual path where you want the logs to be generated.

Database Schema

The application requires the following PostgreSQL tables:

  • financial_transaction: Main transactions table
  • credit_transactions: Credit transactions
  • credit_card_payments: Credit card payment transactions
  • categories: List of transaction categories

If the spring.profiles.active in the application.properties file is set to 'local', then these tables are automatically created.

The Spring Batch tables are automatically created when spring.batch.jdbc.initialize-schema=always.

Additional Resources

推荐服务器

Crypto Price & Market Analysis MCP Server

Crypto Price & Market Analysis MCP Server

一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。

精选
TypeScript
MCP PubMed Search

MCP PubMed Search

用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的。

精选
Python
mixpanel

mixpanel

连接到您的 Mixpanel 数据。从 Mixpanel 分析查询事件、留存和漏斗数据。

精选
TypeScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Nefino MCP Server

Nefino MCP Server

为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。

官方
Python
Vectorize

Vectorize

将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。

官方
JavaScript
Cryo MCP Server

Cryo MCP Server

一个API服务器,实现了模型补全协议(MCP),用于Cryo区块链数据提取。它允许用户通过任何兼容MCP的客户端查询以太坊区块链数据。

本地
Python
Substack Reader

Substack Reader

允许从 Adam Mancini 在 Substack 上的 Trade Companion 获取和阅读仅限订阅者内容,使 Claude 能够访问和讨论最新的金融交易文章。

本地
Python
mcp-solver

mcp-solver

一个模型上下文协议(MCP)服务器,它向大型语言模型公开 MiniZinc 约束求解能力。

本地
Python
Excel Reader Server

Excel Reader Server

一个模型上下文协议 (MCP) 服务器,提供读取 Excel (xlsx) 文件的工具,能够从整个工作簿或特定工作表中提取数据,并将结果以结构化的 JSON 格式返回。

本地
Python