About MCP Calculator
MCP Calculator is a Go-based MCP server example offering calculator and greeting functionality. It implements JSON-RPC 2.0, tool and resource handling, and capability negotiation for demonstrations of server-side MCP development.
Key features
- 01Calculator and greeting functions
- 02JSON-RPC 2.0 communication
- 03Tool registration and execution
- 04Resource access handling
- 05Capability negotiation and error handling
Use cases
- 01Demonstrating Go MCP server implementation
- 02Calling calculator and greeting functions over JSON-RPC
MCP support
The MCP server provides calculator and greeting functionality to MCP clients, with tool execution, resource access, and capability negotiation.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEMCP 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.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.