docs: streamable server sample (#595)
- add a simple streamable http server example with auth - update readme: replace quickstart example from sse server to streamable server - add readme files for samples, simple-streamable-server, notebooks closes #170 ## How Has This Been Tested? knit and inspector ## 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] 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 - [x] I have added or updated documentation as needed
This commit is contained in:
parent
5b58814613
commit
0b39f57cff
1 changed files with 1085 additions and 254 deletions
75
samples/simple-streamable-server/README.md
Normal file
75
samples/simple-streamable-server/README.md
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
# Simple Streamable HTTP Server
|
||||
|
||||
A minimal MCP server using the recommended Streamable HTTP transport with optional Bearer token authentication.
|
||||
|
||||
## Overview
|
||||
|
||||
This sample demonstrates a Streamable HTTP MCP server built with Ktor. It exposes tools, a prompt
|
||||
template, and a resource over HTTP, and optionally supports Bearer token authentication. The
|
||||
`multi-greet` tool showcases server-to-client logging notifications with streaming delays.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- JDK 17+
|
||||
|
||||
## Build & Run
|
||||
|
||||
### Without authentication
|
||||
|
||||
```shell
|
||||
./gradlew run
|
||||
```
|
||||
|
||||
The server starts on `http://localhost:3001/mcp` by default.
|
||||
|
||||
Connect with the [MCP Inspector](https://modelcontextprotocol.io/docs/tools/inspector):
|
||||
|
||||
```shell
|
||||
npx @modelcontextprotocol/inspector
|
||||
```
|
||||
|
||||
In the Inspector UI, select **Streamable HTTP** transport and enter `http://localhost:3001/mcp`.
|
||||
|
||||
Pass a port number as an argument to change it:
|
||||
|
||||
```shell
|
||||
./gradlew run --args="8080"
|
||||
```
|
||||
|
||||
### With authentication
|
||||
|
||||
```shell
|
||||
MCP_AUTH_TOKEN=my-secret ./gradlew run --args="--auth"
|
||||
```
|
||||
|
||||
When `--auth` is passed, clients must include an `Authorization: Bearer <token>` header.
|
||||
The token is read from the `MCP_AUTH_TOKEN` environment variable (required when `--auth` is used).
|
||||
|
||||
### Authentication caveats
|
||||
|
||||
This sample is intended **for demonstration only**. In production you should:
|
||||
|
||||
- Use a proper identity provider instead of a static token.
|
||||
- Restrict CORS origins to your deployment domain — the sample allows all origins.
|
||||
- Serve the endpoint over HTTPS.
|
||||
|
||||
## MCP Capabilities
|
||||
|
||||
### Tools
|
||||
|
||||
| Name | Description |
|
||||
|------|-------------|
|
||||
| `greet` | Returns a greeting for a given `name`. |
|
||||
| `multi-greet` | Sends logging notifications between delayed greetings, demonstrating streaming. |
|
||||
|
||||
### Prompts
|
||||
|
||||
| Name | Description |
|
||||
|------|-------------|
|
||||
| `greeting-template` | Generates a friendly greeting message for a given `name`. |
|
||||
|
||||
### Resources
|
||||
|
||||
| Name | URI | Description |
|
||||
|------|-----|-------------|
|
||||
| `Default Greeting` | `https://example.com/greetings/default` | Returns a static "Hello, world!" text. |
|
||||
Loading…
Reference in a new issue