Updated the client and server examples for further use in the following guides: https://modelcontextprotocol.io/docs/develop/build-server and https://modelcontextprotocol.io/docs/develop/build-client ## How Has This Been Tested? claude desktop, cli ## Breaking Changes NaN ## Types of changes - [ ] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality to change) - [x] Example, Documentation update ## Checklist - [x] I have read the [MCP Documentation](https://modelcontextprotocol.io) - [x] My code follows the repository's style guidelines - [x] New and existing tests pass locally - [ ] I have added appropriate error handling - [ ] I have added or updated documentation as needed
67 lines
2.1 KiB
Markdown
67 lines
2.1 KiB
Markdown
# Weather STDIO Server
|
|
|
|
A minimal MCP server that exposes weather forecast and alert tools using the National Weather
|
|
Service API over STDIO transport.
|
|
|
|
## Overview
|
|
|
|
This sample shows how to build a STDIO-based MCP server in Kotlin. It registers two tools that
|
|
query the [weather.gov](https://www.weather.gov/) API — one for weather forecasts by
|
|
latitude/longitude and one for active alerts by US state. Because it uses STDIO, the server is
|
|
launched as a subprocess by an MCP client or a desktop application like Claude Desktop.
|
|
|
|
## Prerequisites
|
|
|
|
- JDK 17+
|
|
- Internet access (the server calls the weather.gov API at runtime)
|
|
|
|
## Build & Run
|
|
|
|
Run the server (it communicates via stdin/stdout):
|
|
|
|
```shell
|
|
./gradlew run
|
|
```
|
|
|
|
### MCP Inspector
|
|
|
|
Build the fat JAR first, then connect with the
|
|
[MCP Inspector](https://modelcontextprotocol.io/docs/tools/inspector):
|
|
|
|
```shell
|
|
./gradlew build
|
|
npx @modelcontextprotocol/inspector -- java -jar samples/weather-stdio-server/build/libs/weather-stdio-server-0.1.0-all.jar
|
|
```
|
|
|
|
### Claude Desktop integration
|
|
|
|
Add the following to your Claude Desktop configuration:
|
|
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"weather": {
|
|
"command": "java",
|
|
"args": [
|
|
"-jar",
|
|
"/absolute/path/to/samples/weather-stdio-server/build/libs/weather-stdio-server-0.1.0-all.jar"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## MCP Capabilities
|
|
|
|
### Tools
|
|
|
|
| Name | Description |
|
|
|----------------|------------------------------------------------------------------------------------------|
|
|
| `get_alerts` | Returns active weather alerts for a two-letter US `state` code (e.g. `CA`, `NY`). |
|
|
| `get_forecast` | Returns weather forecast for a given `latitude` / `longitude` using the weather.gov API. |
|
|
|
|
## Additional Resources
|
|
|
|
- [MCP Specification](https://modelcontextprotocol.io/specification/latest)
|
|
- [Kotlin MCP SDK](https://github.com/modelcontextprotocol/kotlin-sdk)
|
|
- [National Weather Service API](https://www.weather.gov/documentation/services-web-api)
|