MCP Server Demo - Learning Project
A comprehensive learning project demonstrating MCP server implementation with tools for calculator operations, file management, and system information retrieval, including Google ADK integration patterns and best practices.
README
MCP Server Demo - Learning Project
A comprehensive learning project demonstrating how to build a Model Context Protocol (MCP) server with Google ADK integration using best practices.
๐ฏ Learning Objectives
This project teaches you:
-
MCP Server Architecture
- How to structure an MCP server
- Tool definitions and handlers
- Resource management
- Error handling patterns
-
Best Practices
- TypeScript for type safety
- Separation of concerns
- Input validation and security
- Error handling
- Extensible architecture
-
Google ADK Integration
- Integration points for Google Actions
- Analytics and logging
- Fulfillment handlers (placeholder)
๐ Project Structure
mcp-server-demo/
โโโ src/
โ โโโ index.ts # Main server entry point
โ โโโ tools/
โ โ โโโ base-tool.ts # Base tool interface
โ โ โโโ calculator.ts # Calculator tool example
โ โ โโโ file-operations.ts # File operations tool
โ โ โโโ system-info.ts # System information tool
โ โโโ integrations/
โ โโโ google-adk.ts # Google ADK integration
โโโ package.json
โโโ tsconfig.json
โโโ README.md
๐ Getting Started
Prerequisites
- Node.js 18+
- npm or yarn
Installation
# Install dependencies
npm install
# Build the project
npm run build
# Run in development mode (with auto-reload)
npm run dev
# Run the built server
npm start
๐ ๏ธ Available Tools
1. Calculator Tool
Perform basic mathematical operations.
Example:
{
"name": "calculator",
"arguments": {
"operation": "add",
"a": 10,
"b": 5
}
}
2. File Operations Tool
Read, write, list, and get info about files.
Example:
{
"name": "file_operations",
"arguments": {
"operation": "read",
"path": "README.md"
}
}
3. System Info Tool
Get system information (platform, memory, CPU, etc.).
Example:
{
"name": "system_info",
"arguments": {
"detail": "full"
}
}
๐ Google ADK Integration
The project includes a Google ADK integration module that demonstrates:
- Analytics Logging: Track tool usage
- Fulfillment Handlers: Process Google Assistant requests (placeholder)
- Usage Statistics: Get insights into tool usage
Enabling Google ADK
Set the environment variable:
export GOOGLE_ADK_ENABLED=true
Next Steps for Full Integration
-
Set up Google Actions Project
- Create a project in Google Cloud Console
- Enable Actions API
- Set up OAuth credentials
-
Implement Webhook Server
- Use Express.js or similar
- Handle fulfillment requests
- Connect to MCP server tools
-
Deploy
- Deploy to Google Cloud Functions or Cloud Run
- Configure webhook URL in Actions Console
๐ Best Practices Demonstrated
1. Type Safety
- Full TypeScript implementation
- Strict type checking enabled
- Interface definitions for all tools
2. Security
- Path validation (prevents directory traversal)
- Input sanitization
- Error message sanitization
3. Error Handling
- Comprehensive try-catch blocks
- Meaningful error messages
- Graceful degradation
4. Code Organization
- Separation of concerns
- Modular tool architecture
- Clear abstraction layers
5. Extensibility
- Easy to add new tools (extend
BaseTool) - Plugin-like architecture
- Configuration-driven behavior
๐งช Testing Your MCP Server
Using Claude Desktop
- Add to Claude Desktop configuration:
{
"mcpServers": {
"demo": {
"command": "node",
"args": ["/path/to/mcp-server-demo/dist/index.js"]
}
}
}
- Restart Claude Desktop
- The tools should be available in Claude
Using MCP Client
You can also test with an MCP client library or create a simple test script.
๐ Learning Path
Beginner Tasks
- โ Understand the project structure
- โ Run the server and test tools
- โ Read through the code comments
- โ Modify calculator tool to add new operations
Intermediate Tasks
- Add a new tool (e.g.,
weathertool using an API) - Implement resource caching
- Add tool usage rate limiting
- Create unit tests for tools
Advanced Tasks
- Implement full Google ADK webhook server
- Add authentication/authorization
- Implement tool chaining
- Add streaming responses
- Create a remote MCP server (HTTP transport)
๐ Resources
๐ค Contributing
This is a learning project! Feel free to:
- Add more example tools
- Improve error handling
- Add tests
- Enhance documentation
๐ License
MIT
Happy Learning! ๐
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
E2B
Using MCP to run code via e2b.