diff --git a/mcp-docs/pom.xml b/mcp-docs/pom.xml new file mode 100644 index 0000000..a4b958a --- /dev/null +++ b/mcp-docs/pom.xml @@ -0,0 +1,89 @@ + + + + + 4.0.0 + + org.springframework.experimental + mcp-parent + 0.4.0-SNAPSHOT + + mcp-docs + Spring AI MCP Docs + Spring AI MCP documentation + + + + + org.antora + antora-maven-plugin + ${org.maven.antora-version} + true + + + + + + + src/main/antora/antora-playbook.yml + + @antora/cli@3.2.0-alpha.6 + @antora/atlas-extension@1.0.0-alpha.2 + @antora/collector-extension@1.0.0-beta.1 + @asciidoctor/tabs@1.0.0-beta.6 + @springio/antora-extensions@1.14.2 + @springio/asciidoctor-extensions@1.0.0-alpha.12 + @djencks/asciidoctor-mathjax@0.0.9 + + + + + io.spring.maven.antora + antora-component-version-maven-plugin + ${io.spring.maven.antora-version} + + + + antora-component-version + + + + + + org.apache.maven.plugins + maven-assembly-plugin + ${maven-assembly-plugin.version} + + + src/assembly/javadocs.xml + + spring-ai-mcp-${project.version} + true + + + + org.apache.maven.plugins + maven-deploy-plugin + ${maven-deploy-plugin.version} + + true + + + + + + \ No newline at end of file diff --git a/mcp-docs/src/assembly/javadocs.xml b/mcp-docs/src/assembly/javadocs.xml new file mode 100644 index 0000000..a12b36e --- /dev/null +++ b/mcp-docs/src/assembly/javadocs.xml @@ -0,0 +1,31 @@ + + + + docs + + zip + + false + + + ../target/site/apidocs + api + + + \ No newline at end of file diff --git a/mcp-docs/src/main/antora/antora-playbook.yml b/mcp-docs/src/main/antora/antora-playbook.yml new file mode 100644 index 0000000..bb45a0b --- /dev/null +++ b/mcp-docs/src/main/antora/antora-playbook.yml @@ -0,0 +1,48 @@ +# PACKAGES antora@3.2.0-alpha.6 @antora/atlas-extension:1.0.0-alpha.1 @antora/collector-extension@1.0.0-alpha.3 @springio/antora-extensions@1.1.0-alpha.2 @asciidoctor/tabs@1.0.0-alpha.12 @opendevise/antora-release-line-extension@1.0.0-alpha.2 +# +# The purpose of this Antora playbook is to build the docs in the current branch. +antora: + extensions: + - '@antora/collector-extension' + # - require: '@springio/antora-extensions/root-component-extension' + - require: '@springio/antora-extensions' + root_component_name: 'ai' +site: + title: Spring AI Reference + url: https://docs.spring.io/spring-ai-mcp/reference + robots: allow +git: + ensure_git_suffix: false +content: + sources: + - url: ./../../../.. + branches: HEAD + start_path: mcp-docs/src/main/antora + worktrees: true +asciidoc: + attributes: + page-related-doc-categories: ai,java,ml,mcp + page-pagination: '' + hide-uri-scheme: '@' + tabs-sync-option: '@' + chomp: 'all' + stem: 'asciimath' + extensions: + - '@asciidoctor/tabs' + - '@springio/asciidoctor-extensions' + - '@springio/asciidoctor-extensions/javadoc-extension' + - '@springio/asciidoctor-extensions/include-code-extension' + - '@djencks/asciidoctor-mathjax' + sourcemap: true +urls: + latest_version_segment_strategy: redirect:to + latest_version_segment: '' + redirect_facility: httpd +runtime: + log: + failure_level: warn + format: pretty +ui: + bundle: + url: https://github.com/spring-io/antora-ui-spring/releases/download/v0.4.17/ui-bundle.zip + snapshot: true \ No newline at end of file diff --git a/mcp-docs/src/main/antora/antora.yml b/mcp-docs/src/main/antora/antora.yml new file mode 100644 index 0000000..916c760 --- /dev/null +++ b/mcp-docs/src/main/antora/antora.yml @@ -0,0 +1,12 @@ +name: ai +version: true +title: Spring AI +nav: + - modules/ROOT/nav.adoc +ext: + collector: + - run: + command: mvnw process-resources + local: true + scan: + dir: mcp-docs/target/classes/antora-resources \ No newline at end of file diff --git a/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-architecture.jpg b/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-architecture.jpg new file mode 100644 index 0000000..7463b84 Binary files /dev/null and b/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-architecture.jpg differ diff --git a/mcp-docs/src/main/antora/modules/ROOT/nav.adoc b/mcp-docs/src/main/antora/modules/ROOT/nav.adoc new file mode 100644 index 0000000..b456e4a --- /dev/null +++ b/mcp-docs/src/main/antora/modules/ROOT/nav.adoc @@ -0,0 +1,3 @@ +* xref:index.adoc[Overview] +// ** xref:concepts.adoc[AI Concepts] +// * xref:getting-started.adoc[Getting Started] diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/index.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/index.adoc new file mode 100644 index 0000000..ff74be2 --- /dev/null +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/index.adoc @@ -0,0 +1,119 @@ += Java & Spring MCP + +Java SDK for the Model Context Protocol (MCP), providing seamless integration between Java and Spring applications and MCP-compliant AI resources and tools. + +== Overview + +Provides Java and Spring Framework integration for the link:https://modelcontextprotocol.org/docs/concepts/architecture[Model Context Protocol]. It enables Java applications to interact with AI models and tools through a standardized interface, supporting both synchronous and asynchronous communication patterns. + +image::spring-ai-mcp-architecture.jpg[Spring AI MCP Architecture,600] + +== Modules + +The project consists of two main modules: + +=== mcp + +Java implementation of the Model Context Protocol specification. It includes: + +* Synchronous and asynchronous link:https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/mcp/README.md#client-usage-examples[MCP Client] and link:https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/mcp/README.md#server-usage-examples[MCP Server] implementations +* Standard MCP operations support (tool discovery, resource management, prompt handling, structured logging). Support for request and notification handling. +* link:https://spec.modelcontextprotocol.io/specification/basic/transports/#stdio[Stdio] and link:https://spec.modelcontextprotocol.io/specification/basic/transports/#http-with-sse[SSE] transport implementations. +* link:./mcp/README.md[Find more]. + +=== spring-ai-mcp + +The Spring integration module provides Spring-specific functionality: + +* Integration with Spring AI's function calling system +* Spring-friendly abstractions for MCP clients +* Auto-configurations (WIP) + +== Requirements + +* Java 17 or later +* Maven 3.6 or later +* Spring AI 1.0.0-M4 or later + +== Installation + +Add the following dependencies to your Maven project: + +[source,xml] +---- + + + org.springframework.experimental + mcp + 0.4.0-SNAPSHOT + + + + + org.springframework.experimental + spring-ai-mcp + 0.4.0-SNAPSHOT + +---- + +== Example Demos + +Explore these MCP examples in the link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol[spring-ai-examples/model-context-protocol] repository: + +* link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/sqlite/simple[SQLite Simple] - Demonstrates LLM integration with a database +* link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/sqlite/chatbot[SQLite Chatbot] - Interactive chatbot with SQLite database interaction +* link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/filesystem[Filesystem] - Enables LLM interaction with local filesystem folders and files +* link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/brave[Brave] - Enables natural language interactions with Brave Search, allowing you to perform internet searches. +* link:./spring-ai-mcp-sample/[Spring-ai-mcp-sample] - Showcases how to create and use MCP servers and clients with different transport modes and capabilities. + +== Documentation + +* link:mcp/README.md[Java MCP SDK documentation] +** link:docs/ref-index.md[Reference documentation] +* link:spring-ai-mcp/README.md[Spring Integration documentation] + +== Development + +=== Building from Source + +[source,bash] +---- +mvn clean install +---- + +=== Running Tests + +[source,bash] +---- +mvn test +---- + +== Project Information + +* *Group ID*: org.springframework.experimental +* *Version*: 0.4.0-SNAPSHOT +* *Java Version*: 17 +* *Spring AI Version*: 1.0.0-M4 + +== Contributing + +This is an experimental Spring project. Contributions are welcome! Please: + +1. Fork the repository +2. Create a feature branch +3. Submit a Pull Request + +== Team + +* Christian Tzolov +* Dariusz Jędrzejczyk + +== Links + +* link:https://github.com/spring-projects-experimental/spring-ai-mcp[GitHub Repository] +* link:https://github.com/spring-projects-experimental/spring-ai-mcp/issues[Issue Tracker] +* link:https://github.com/spring-projects-experimental/spring-ai-mcp/actions[CI/CD] + +== License + +This project is licensed under the link:LICENSE[Apache License 2.0]. diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/index2.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/index2.adoc new file mode 100644 index 0000000..226a186 --- /dev/null +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/index2.adoc @@ -0,0 +1,54 @@ += Spring AI MCP Spring +:page-title: Spring AI MCP Spring +:doctype: book +:icons: font +:source-highlighter: highlight.js +:toc: left + +Spring Integration module for Model Control Protocol (MCP) that provides Spring-specific functionality for working with MCP clients. + +== Overview + +The `spring-ai-mcp` module is part of the https://github.com/spring-projects-experimental/spring-ai-mcp[Spring AI MCP] project. It provides Spring Framework integration for the Model Control Protocol (MCP), enabling seamless integration of MCP functionality within Spring applications. + +== Features + +* Spring integration for MCP clients +* Function callback implementation for tool invocations +* Seamless integration with Spring AI's function calling capabilities + +== Main Components + +=== McpFunctionCallback + +The `McpFunctionCallback` class is the primary component of this module. It implements Spring AI's `FunctionCallback` interface and provides: + +* Integration between Spring AI's function calling system and MCP tools +* Automatic conversion between JSON and Java objects for tool arguments +* Synchronous tool execution support + +== Usage + +To use this module, add the following dependency to your Maven project: + +[source,xml] +---- + + org.springframework.experimental + spring-ai-mcp + 0.4.0-SNAPSHOT + +---- + +== License + +This project is licensed under the https://www.apache.org/licenses/LICENSE-2.0[Apache License 2.0]. + +== Links + +* https://github.com/spring-projects-experimental/spring-ai-mcp[GitHub Repository] +* https://github.com/spring-projects-experimental/spring-ai-mcp/issues[Issue Tracker] + +== Contributing + +This is an experimental Spring project. Contributions are welcome! Please refer to the main project's contribution guidelines. diff --git a/mcp-docs/src/main/antora/resources/antora-resources/antora.yml b/mcp-docs/src/main/antora/resources/antora-resources/antora.yml new file mode 100644 index 0000000..99706e0 --- /dev/null +++ b/mcp-docs/src/main/antora/resources/antora-resources/antora.yml @@ -0,0 +1,2 @@ +version: ${antora-component.version} +prerelease: ${antora-component.prerelease} \ No newline at end of file diff --git a/mcp-docs/src/main/javadoc/overview.html b/mcp-docs/src/main/javadoc/overview.html new file mode 100644 index 0000000..3a30a69 --- /dev/null +++ b/mcp-docs/src/main/javadoc/overview.html @@ -0,0 +1,33 @@ + + + + +

+ This document is the API specification for Spring AI +

+
+

+ For further API reference and developer documentation, see the + + Spring AI MCP reference documentation. + That documentation contains more detailed, developer-targeted + descriptions, with conceptual overviews, definitions of terms, + and working code examples. +

+
+ + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 383a2d2..ea74ed2 100644 --- a/pom.xml +++ b/pom.xml @@ -93,12 +93,16 @@ 3.4.5 3.3.0 0.0.43 + 1.0.0-alpha.4 + 0.0.4 + 1.6.2 mcp spring-ai-mcp spring-ai-mcp-sample + mcp-docs