Commit graph example-remote-server/package.json
Author SHA1 Message Date
Olivier Chafik
bf6cd3b405
chore: bump ext-apps + example servers to 1.7.5
Bumps @modelcontextprotocol/ext-apps and the example server packages to
1.7.5. Notably picks up server-lazy-auth's larger consent-button touch
targets so the /lazy-auth flow is tappable on mobile
(modelcontextprotocol/ext-apps#714).
2026-08-06 12:39:06 +00:00
Olivier Chafik
8b919a9d22
chore: bump ext-apps + example servers to 1.7.4
Bumps @modelcontextprotocol/ext-apps and the example server packages to
1.7.4, which includes base-path mount support in server-lazy-auth.
2026-06-05 20:15:07 +01:00
Olivier Chafik
e83d4207a6
chore: bump ext-apps + example servers to 1.7.1, sdk to 1.29.0
ext-apps@1.7.x peers on @modelcontextprotocol/sdk ^1.29.0, which
required bumping the pinned sdk from 1.24.2 and adapting to its
StreamableHTTPServerTransport refactor:

- redisTransport: sessionId is now a readonly getter on the Node
  wrapper; inject it (and _initialized) on the underlying web-standard
  transport so resumed sessions validate. Also guard message.id which
  is now optional on JSONRPCMessage.
- shttp.integration.test: handleRequest now routes through
  @hono/node-server, so the mock IncomingMessage needs url/host/
  rawHeaders/on/off/resume, and the session-id header now arrives via
  writeHead instead of setHeader.
2026-04-27 16:35:26 +01:00
Olivier Chafik
bd1b77be5e
chore: bump ext-apps packages from ^1.1.2 to ^1.3.1 2026-03-23 20:26:29 +00:00
Claude
794de5d93e
chore: bump ext-apps packages from ^1.1.1 to ^1.1.2 2026-02-25 15:36:48 +00:00
Claude
4597f7453b
bump ext-apps and server packages to 1.1.1, add debug-server
- Bump @modelcontextprotocol/ext-apps from ^1.1.0 to ^1.1.1
- Bump all @modelcontextprotocol/server-* packages from ^1.1.0 to ^1.1.1
- Add new @modelcontextprotocol/server-debug package at ^1.1.1
- Wire up debug server in example-apps module at /debug/mcp
2026-02-24 14:15:15 +00:00
Olivier Chafik
8934d3069d
bump ext-apps to 1.1.0 version 2026-02-21 17:40:17 -08:00
Olivier Chafik
d679eea486
Update MCP Apps example server packages to v1.0.1
- Update @modelcontextprotocol/ext-apps to ^1.0.1
- Update all @modelcontextprotocol/server-* packages to ^1.0.1
- Pin @modelcontextprotocol/sdk to 1.24.2 to avoid SDK upgrades from transitive deps
- Pin @types/express-serve-static-core to 5.1.0 for type compatibility

Claude-Generated-By: Claude Code (cli/claude-opus-4-5=100%)
Claude-Steers: 1
Claude-Permission-Prompts: 0
Claude-Escapes: 0
2026-01-26 23:09:50 +00:00
Olivier Chafik
9a9ed02059
update 2026-01-26 22:45:49 +00:00
Claude
c0261a467b
Update MCP Apps example server packages to v1.0.0
Bump all 13 @modelcontextprotocol/server-* packages from ^0.4.1 to ^1.0.0.

https://claude.ai/code/session_015HUUQ248MDW6Du6xmsiQJh
2026-01-26 18:11:32 +00:00
Jerome Swannack
56a0835fd4 feat: add MCP Apps example servers module
Wire up 13 MCP Apps servers from the @modelcontextprotocol/server-* packages:
- budget-allocator: Interactive budget allocation UI
- cohort-heatmap: Customer retention heatmap
- customer-segmentation: Scatter chart with clustering
- map: Interactive 3D globe viewer (CesiumJS)
- pdf: Interactive PDF viewer
- scenario-modeler: SaaS business projections dashboard
- shadertoy: Real-time GLSL shader renderer
- sheet-music: ABC notation to sheet music visualizer
- system-monitor: Real-time OS metrics display
- threejs: 3D scene renderer
- transcript: Live speech transcription
- video-resource: Binary video streaming via MCP resources
- wiki-explorer: Wikipedia link graph visualization

Each server is mounted at /{slug}/mcp and shares the same OAuth
authentication as the main MCP server.

Also updates the splash page to dynamically list all available
example servers.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 16:24:20 +00:00
Anton Pidkuiko MacBook
2903c3a023
fix: update MCP Apps to use new _meta.ui.resourceUri format
- Update @modelcontextprotocol/ext-apps to 0.4.0
- Use new nested format `_meta.ui.resourceUri` in tool definition
- Remove resourceUri from tool result (only needed in tool definition)
- Add example structuredContent and _meta in tool result for demo
2026-01-14 20:10:41 +00:00
Jerome Swannack
c872ecd224
Add MCP Apps hello world demo tool
Implements a simple MCP Apps tool that returns an interactive React UI:

- Add `mcp_apps_hello_world` tool with `_meta.ui/resourceUri` metadata
- Add resource handler for `ui://hello-world/app.html` returning HTML
- Create React app using `@modelcontextprotocol/ext-apps/react` hooks
- Add Vite build tooling to bundle React apps into single HTML files

The tool demonstrates the MCP Apps extension (SEP-1865) which allows
MCP servers to return interactive UI that runs in the client.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-07 18:06:38 +00:00
Jerome Swannack
e6f4377452
Bump @modelcontextprotocol/sdk from PR preview to ^1.24.2
Replace the pkg.pr.new preview URL (PR #1189) with the official npm
release now that the changes have been merged and published.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-07 17:22:29 +00:00
Basil Hosmer
bc3619c73c
Unify auth and MCP servers into single modular codebase
- Merge auth-server and mcp-server into unified architecture under src/modules/
- Add configurable auth modes: internal (single process) and external (separate processes)
- Update example scripts to support OAuth discovery and both auth modes
- Consolidate OAuth documentation into comprehensive implementation guide
- Add configuration options for development vs production deployments
- Support both Redis-backed and in-memory session storage
2025-10-14 13:53:03 -04:00
Basil Hosmer
c03a9b4e77
Remove embedded OAuth implementation and flatten directory structure
Simplified the repository to have a single OAuth pattern with separate auth and MCP servers at the top level. Preserved embedded OAuth documentation as an alternative pattern.
2025-10-06 21:30:14 -04:00
Basil Hosmer
112997d352
refactor, improve docs 2025-10-05 23:51:06 -04:00
Basil Hosmer
67def732ff
Fix token audience validation in separate auth mode
The auth server's /introspect endpoint now correctly sets the 'aud' field
to the resource server URL (BASE_URI) instead of the client ID. This ensures
proper audience validation when the MCP server verifies tokens in separate mode.

- Import BASE_URI in auth server
- Set aud to BASE_URI in introspection response
- Fixes "Token was not issued for this resource server" error

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-25 13:30:55 -04:00
Basil Hosmer
b32d638c87
Consolidate TypeScript build configuration
Use single tsconfig.json for both main server and auth-server to avoid
nested directory issues during build. Update e2e test scripts to run
directly instead of using concurrently.
2025-09-15 02:10:52 -04:00
Basil Hosmer
fdbf40bdc7
Simplify build scripts to catch all compilation errors
- Make 'npm run build' build both main server and auth server
- Remove redundant build:auth-server and build:all scripts
- Update README to reflect simplified build command
- Ensures compilation errors in auth server are caught by default build
2025-09-12 00:48:18 -04:00
Basil Hosmer
890beed75a
Add rate limiting and improve e2e testing workflow
- Add express-rate-limit to custom endpoints for security:
  - /introspect: 100 requests per 5 minutes
  - /fakeupstreamauth/*: 20 requests per minute
  - Static files: 25 requests per 10 minutes
- Add automated e2e testing npm scripts using concurrently:
  - npm run test:e2e:integrated: Auto-starts server and runs test
  - npm run test:e2e:separate: Auto-starts both servers and runs test
- Update README with automated testing approach documentation
- Update docs/streamable-http-design.md with current file structure
- Remove redundancy in README e2e testing documentation
- Verified: All tests, linting, and e2e scripts pass with rate limiting
2025-09-12 00:27:07 -04:00
Basil Hosmer
5c408eb43d
Phase 4: Create standalone authorization server
- Created auth-server/index.ts with full OAuth endpoint support
- Reuses EverythingAuthProvider from main server
- Added custom /oauth/introspect endpoint for token validation
- Includes fake upstream auth routes for user authentication
- Added TypeScript configuration for auth server
- Added comprehensive npm scripts for all modes:
  - dev:integrated, dev:separate, dev:auth-server
  - dev:with-separate-auth (runs both servers)
  - build:auth-server, build:all
- Added concurrently dependency for running multiple servers
- Added detailed README for auth server
- Successfully serves OAuth metadata and health endpoints
2025-09-04 22:01:57 -04:00
Jerome
927d34c0d1
Fix 'stream is not readable' error in SSE message handler
- Replace getRawBody with direct req.body usage since express.json() middleware already parses it
- Add debugging support with --inspect flag for dev scripts
- Add VS Code launch configurations for debugging

The issue was that getRawBody tried to read an already-consumed stream. Since express.json()
middleware is applied globally, we can directly use req.body instead.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 13:41:34 +01:00
Jerome
e13aefc8c4
Fix TypeScript type conflicts and update build process
- Add overrides for @types/express to resolve version conflicts
- Remove SDK build step from CI as we're now using published version
- Move mcp.png to src/static folder and update serving path
- Add copy-static script to build process

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-10 16:39:41 +01:00
Jerome
f52ea9ad03
Bumped sdk version 2025-07-10 16:27:33 +01:00
Jerome
9d768bc393
Using specific typescript sdk commit 2025-07-10 11:27:48 +01:00
Jerome
46c71a9857
Tidying up static files 2025-07-10 11:17:11 +01:00
Jerome
93c939614e
Fix tests to work with ES modules and TypeScript
- Updated Jest configuration to use ts-jest ESM preset
- Added NODE_OPTIONS flag for experimental VM modules support
- Fixed import statements in all test files to import Jest globals
- Rewrote provider.test.ts to work with ESM (using actual implementations with mock Redis)
- Fixed test expectations to match actual implementation
- Fixed encryption key generation in tests (using proper 64-char hex tokens)
- Standardized token_type to "Bearer" across codebase
- Removed unused imports to fix lint errors
- Excluded scratch folder from test runs

All tests now pass successfully with proper ES module support.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

Relocked
2025-06-04 13:16:42 +01:00
Jerome
b1d1790f62
Initial commit 2025-06-04 13:16:20 +01:00