MCP Calculator
by akhidasTech
MCP Calculator is a Go implementation of a Model Context Protocol (MCP) server with calculator and greeting functionality. It follows the official MCP specification and provides a JSON-RPC 2.0 interface.
View on GitHub
Last updated: N/A
MCP Calculator
A Go implementation of a Model Context Protocol (MCP) server with calculator and greeting functionality. This implementation follows the official MCP specification.
Features
- Full JSON-RPC 2.0 implementation
- MCP protocol support
- Tool registration and execution
- Resource handling
- Server capability negotiation
- Error handling according to spec
Project Structure
mcpcalculator/
├── mcp/
│ └── protocol/
│ ├── types.go # Protocol types and structures
│ ├── server.go # MCP server implementation
│ └── client.go # MCP client implementation
├── main.go # Example usage
├── go.mod # Go module file
└── README.md # Documentation
Requirements
- Go 1.21 or higher
Installation
git clone https://github.com/akhidasTech/mcpcalculator.git
cd mcpcalculator
go mod download
Usage
Starting the Server
go run main.go
The server will start on port 8080.
Making Requests
Tools and resources follow the JSON-RPC 2.0 specification:
Add Tool
curl -X POST http://localhost:8080 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "add",
"params": {"a": 5, "b": 3}
}'
Greeting Resource
curl -X POST http://localhost:8080 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "greeting",
"params": {"name": "John"}
}'
Response Format
All responses follow the JSON-RPC 2.0 format:
{
"jsonrpc": "2.0",
"id": 1,
"result": <result_value>
}
Or for errors:
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": <error_code>,
"message": "error message",
"data": <additional_data>
}
}
Protocol Implementation
This implementation follows the Model Context Protocol specification:
- JSON-RPC 2.0: All communication uses the JSON-RPC 2.0 protocol
- Capabilities: Server advertises its capabilities during initialization
- Tools: Implements the tool registration and execution protocol
- Resources: Implements the resource access protocol
- Error Handling: Uses standard error codes and formats
Security
This implementation follows MCP security guidelines:
- User Consent: Tools and resources require explicit invocation
- Data Privacy: No data is shared without explicit requests
- Tool Safety: Tool execution is controlled and validated
- Error Handling: Proper error reporting and handling
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.