- Create docs/customization-guide.md with guidance on replacing demo functionality - Add customization section to main README - Fix all references to renamed oauth-architecture-patterns.md - Update repository structure comments to clarify what to replace vs keep
3.7 KiB
Customization Guide
This reference implementation includes demo functionality to showcase MCP features. Here's how to adapt it for your own use case.
Overview: What to Customize vs. Keep
Replace with your own:
- MCP tools, resources, and prompts (your business logic)
- Authentication provider (use commercial OAuth provider)
Keep as-is (infrastructure):
- Redis transport and session management
- HTTP handlers and routing
- Security middleware and rate limiting
- Logging infrastructure
Customizing MCP Functionality
All MCP feature implementations live in mcp-server/src/services/mcp.ts. This is where you define what your server can do.
Tools
Replace the 7 demo tools (echo, add, etc.) with your actual tools:
Location: createMcpServer() function, look for the CallToolRequestSchema handler
What to change:
- Tool definitions: name, description, input schema (using Zod)
- Tool execution logic: what happens when the tool is called
- Return format: text, images, or embedded resources
Pattern: Each tool validates input with a Zod schema and returns content in MCP format.
Resources
Replace the 100 fake resources with your actual data sources:
Location: createMcpServer() function, resource-related handlers:
ListResourcesRequestSchema- List available resourcesReadResourceRequestSchema- Read specific resourcesSubscribeRequestSchema/UnsubscribeRequestSchema- Resource updates
What to change:
- Resource URIs and names
- Data fetching logic
- Pagination if needed
- Update notifications for subscribed resources
Pattern: Resources use URIs (e.g., db://users/123) and return content as text, JSON, or binary.
Prompts
Replace the 3 demo prompts with useful prompts for your domain:
Location: createMcpServer() function, prompt-related handlers:
ListPromptsRequestSchema- List available promptsGetPromptRequestSchema- Return prompt content
What to change:
- Prompt names and descriptions
- Prompt arguments and validation
- Prompt content and embedded resources
Pattern: Prompts can include dynamic arguments and reference resources.
Customizing Authentication
Replace the demo auth server with a commercial OAuth provider (Auth0, Okta, Azure AD, AWS Cognito, Google, GitHub, etc.).
See OAuth Architecture Patterns for detailed integration steps.
Do not repurpose the demo auth server - it's designed for development/testing only. Commercial providers offer better security, reliability, and user management.
Configuration
Update environment variables for your deployment:
MCP Server (mcp-server/.env):
BASE_URI=https://your-mcp-server.com
PORT=443
AUTH_SERVER_URL=https://your-tenant.auth0.com
REDIS_URL=redis://your-redis-server:6379
Auth Server (only if using the demo server for development):
AUTH_SERVER_URL=http://localhost:3001
BASE_URI=https://your-mcp-server.com
Testing Your Customizations
- Unit tests: Add tests for your tools/resources in
mcp-server/src/services/ - Integration tests: Test with MCP Inspector or client.js
- Build and lint: Run
npm run build && npm run lint - End-to-end: Use the examples to verify OAuth and MCP flows
Next Steps
- Fork/clone this repository
- Replace tools, resources, and prompts in
mcp-server/src/services/mcp.ts - Integrate with your OAuth provider (see OAuth Architecture Patterns doc)
- Update environment variables for your deployment
- Test thoroughly before deploying
For questions about the MCP protocol itself, see the MCP specification.