mcp-server-with-spring-ai Details

mcp-server-with-spring-ai is a Spring Boot integrated MCP (Model Context Protocol) server example that showcases how to expose executable tools from an MCP server to clients (including LLMs) and how to wire a MCP client to consume those tools. The documentation explains MCP at a high level, outlines the three-layer MCP Java SDK architecture (Client/Server Layer, Session Layer, Transport Layer), and demonstrates two sample tools implemented in SellerAccountTools. This repo emphasizes how an MCP server can connect to external data sources (e.g., a PostgreSQL DB) and expose tools that an AI model can invoke to retrieve data, with the example illustrating tool invocation and automatic tool selection by prompts.

Use Case

Use this MCP server to enable AI models (including LLMs) to interact with external data sources via well-defined tools exposed by the server. In the example, two tools are exposed to search a SellerAccounts table by name or by owner. The MCP architecture is described as three-layer: Client/Server Layer (McpClient and McpServer), Session Layer (McpSession with DefaultMcpSession), and Transport Layer (McpTransport for JSON-RPC with multiple transports). The server exposes tools that the client can invoke, allowing the LLM to select the correct tool based on the prompt.

Code example (as provided in the docs):

@Service
public class SellerAccountTools {
private final SellerAccountRepository sellerAccountRepository;

public SellerAccountTools(SellerAccountRepository sellerAccountRepository) {
this.sellerAccountRepository = sellerAccountRepository;
}

@Tool(name = "Search Seller account by name", description = "Find all Seller Accounts by name")
public String getAccountByName(
@ToolParam(description = "Seller Account Name") String name) {
List<SellerAccount> accountList = sellerAccountRepository.findByName(name);
StringBuilder result = new StringBuilder();
for (SellerAccount account : accountList) {
result.append(account.toString()).append("\n");
}
return result.toString();
}

@Tool(description = "Find all Seller Accounts by owner")
public String getAccountByOwner(
@ToolParam(description = "Seller Account owner") String owner) {
List<SellerAccount> accountList = sellerAccountRepository.findByOwner(owner);
StringBuilder result = new StringBuilder();
for (SellerAccount account : accountList) {
result.append(account.toString()).append("\n");
}
return result.toString();
}
}

Explanation

  • Tools allows server to expose tools that can be invoked by LLM, for this example i have created two tools which will search from account table by Name and by Owner.

  • Based on the prompt AI LLM will automatocally pick the correct method but we need to write name and descrition properly
  • Available Tools (2)

    Examples & Tutorials

    @Service
    public class SellerAccountTools {
    private final SellerAccountRepository sellerAccountRepository;

    public SellerAccountTools(SellerAccountRepository sellerAccountRepository) {
    this.sellerAccountRepository = sellerAccountRepository;
    }

    @Tool(name = "Search Seller account by name", description = "Find all Seller Accounts by name")
    public String getAccountByName(
    @ToolParam(description = "Seller Account Name") String name) {
    List<SellerAccount> accountList = sellerAccountRepository.findByName(name);
    StringBuilder result = new StringBuilder();
    for (SellerAccount account : accountList) {
    result.append(account.toString()).append("\n");
    }
    return result.toString();
    }

    @Tool(description = "Find all Seller Accounts by owner")
    public String getAccountByOwner(
    @ToolParam(description = "Seller Account owner") String owner) {
    List<SellerAccount> accountList = sellerAccountRepository.findByOwner(owner);
    StringBuilder result = new StringBuilder();
    for (SellerAccount account : accountList) {
    result.append(account.toString()).append("\n");
    }
    return result.toString();
    }
    }

    Installation Guide

    Step 1 Create Postgresql DB

    Run docker-compose.yml file and run the table.sql to create table.

    Step 2 Run ollama locally

    Download ollama and run any model as per you machine capacity

    Step 3 Creating MCP Server

    Download the mcp-server project and run it.

    Important classes to note - SellerAccountTools

    Step 4 Creating MCP Client

    Download the mcp-client project and run.

    Step 5 Testing

    DB Table Data

    !image

    Frequently Asked Questions

    Is this your MCP?

    Claim ownership and get verified badge

    Repository Stats

    Sponsored

    Ad Space Available
    Important Notes

    Tools allows server to expose tools that can be invoked by LLM, for this example i have created two tools which will search from account table by Name and by Owner. Based on the prompt LLM will automatically pick the correct method and it will format the results.

    Details
    Last Updated3/17/2026
    SourceGitHub

    Compare Alternatives

    Similar MCP Tools

    9 related tools
    OpenClaw MCP Server

    OpenClaw MCP Server

    OpenClaw MCP Server is a secure Model Context Protocol (MCP) bridge that connects Claude.ai with a self-hosted OpenClaw assistant, enabling OAuth2 authentication and safe, controlled communication between the Claude AI ecosystem and your local or hosted OpenClaw deployment. This MCP server acts as an orchestration layer that exposes MCP tools to Claude.ai, manages authentication, and enforces security boundaries like CORS and transport options. It is designed to be deployed via Docker or run locally, with detailed installation, configuration, and security guidance provided in the documentation. By serving as a bridge, it enables Claude.ai to delegate tasks to your OpenClaw bot while preserving control over data flow and access controls, in line with MCP specifications and best security practices.

    Graphiti MCP Server

    Graphiti MCP Server

    Graphiti MCP Server is an experimental implementation that exposes Graphiti's real-time, temporally-aware knowledge graph capabilities through the MCP (Model Context Protocol) interface. It enables AI agents and MCP clients to interact with Graphiti's knowledge graph for structured extraction, reasoning, and memory across conversations, documents, and enterprise data. The server supports multiple backends (FalkorDB by default and Neo4j), a variety of LLM providers (OpenAI, Anthropic, Gemini, Groq, Azure OpenAI), and multiple embedder options, all accessible via an HTTP MCP endpoint at /mcp/ for broad client compatibility. It also includes queue-based asynchronous episode processing, rich entity types for structured data, and flexible configuration through config.yaml, environment variables, or CLI arguments.

    Context7 MCP Server

    Context7 MCP Server

    Context7 MCP Server delivers up-to-date, code-first documentation and examples for LLMs and AI code editors by pulling content directly from the source. It supports multiple MCP clients and exposes tools that help you resolve library IDs and retrieve library documentation, ensuring prompts use current APIs and usage patterns. The repository provides installation and integration guides for Cursor, Claude Code, Opencode, and other clients, along with practical configuration samples and OAuth options for remote HTTP connections. This MCP server is designed to keep prompts in sync with the latest library docs, reducing hallucinations and outdated code snippets.

    TrendRadar MCP

    TrendRadar MCP

    TrendRadar MCP is an AI-driven Model Context Protocol (MCP) based analysis server that exposes a suite of specialized tools for cross-platform news analysis, trend tracking, and intelligent push notifications. It integrates with TrendRadar’s multi-platform data aggregation (RSS and trending topics) and provides advanced AI-powered insights, sentiment analysis, and cross-platform correlation. The MCP server enables developers to query, analyze, and compare news across platforms using a consistent toolset, with ongoing updates that expand capabilities such as RSS querying, date parsing, and multi-date trend analysis. This documentation references the MCP module updates, tool additions, and architecture changes that enhance extensibility, cross-platform data handling, and AI-assisted reporting.

    ChainAware Behavioural Prediction MCP

    ChainAware Behavioural Prediction MCP

    The ChainAware Behavioural Prediction MCP is an MCP-based server that provides AI-powered tools to analyze wallet behaviour prediction, fraud detection, and rug pull prediction. Designed for Web3 security and DeFi analytics, it enables developers and platforms to integrate risk assessment, predictive wallet behavior insights, and rug-pull detection through MCP-compatible clients. The server exposes three specialized tools and uses Server-Sent Events (SSE) for real-time responses, helping safeguard DeFi users, monitor liquidity risks, and score wallet or contract trustworthiness. Access to production endpoints is API-key gated, reflecting a private backend architecture that supports secure, scalable risk analytics across wallets, contracts, and pools.

    Playwright MCP

    Playwright MCP

    Playwright MCP server. A Model Context Protocol (MCP) server that provides browser automation capabilities using Playwright. This server enables large language models (LLMs) to interact with web pages through structured accessibility snapshots, bypassing the need for screenshots or visually-tuned models. The server is designed to be fast, lightweight, and deterministic, offering LLM-friendly tooling and a rich set of browser automation capabilities via MCP tools. It supports standalone operation, containerized deployments, and integration with a variety of MCP clients (Claude Desktop, VS Code, Copilot, Cursor, Goose, Windsurf, and others).

    Sequential Thinking MCP Server

    Sequential Thinking MCP Server

    Sequential Thinking MCP Server provides a dedicated MCP tool that guides problem-solving through a structured, step-by-step thinking process. It supports dynamic adjustment of the number of thoughts and allows revision and branching within a controlled workflow, making it ideal for complex analysis and solution hypothesis development. This server is designed to register a single tool, sequential_thinking, and is integrated with common MCP deployment methods (NPX, Docker) as well as editor integrations like Claude Desktop and VS Code for quick setup. The documentation provides exact configuration snippets, usage patterns, and building instructions to help you deploy and use the MCP server effectively, including Codex CLI, NPX, and Docker installation examples.

    N8N MCP Server

    N8N MCP Server

    An MCP (Model Context Protocol) server designed to integrate Claude Desktop, Claude Code, Windsurf, and Cursor with n8n workflows. This MCP enables users to build, test, and orchestrate complex workflows by exposing a set of tools that bridge Claude’s capabilities with n8n’s automation platform. The project emphasizes robust trigger handling, multi-tenant readiness, and progressive documentation to help developers understand how tools map to real-world workflow tasks. It also outlines future tooling integration points (such as getNodeEssentials and getNodeInfo) to further enhance node-structure awareness within MCP-powered automations.

    Hugging Face MCP Server

    Hugging Face MCP Server

    Hugging Face Official MCP Server connects your large language models (LLMs) to the Hugging Face Hub and thousands of Gradio AI Applications, enabling seamless MCP (Model Context Protocol) integration across multiple transports. It supports STDIO, SSE (to be deprecated but still commonly deployed), StreamableHTTP, and StreamableHTTPJson, with the Web Application allowing dynamic tool management and status updates. This MCP server is designed to be run locally or in Docker, and it provides integrations with Claude Desktop, Claude Code, Gemini CLI (and its extension), VSCode, and Cursor, making it easy to configure and manage MCP-enabled tools and endpoints. Tools such as hf_doc_search and hf_doc_fetch can be enabled to enhance document discovery, and an optional Authenticate tool can be included to handle OAuth challenges when called.