A Go+ implementation of the Model Context Protocol (MCP), enabling seamless integration between LLM applications and external data sources and tools.
This repo contains two Go+ classfiles. They are mcp (MCP Server Framework) and mcptest (MCP Server Test Framework).
The classfile mcp has the file suffix _mcp.gox (the MCP Server), _res.gox (a MCP Resource or ResourceTemplate), _tool.gox (a MCP Tool) and _prompt.gox (a MCP Prompt). The classfile mcptest has the file suffix _mtest.gox.
Here is a MCP Server example. It has two files: main_mcp.gox (the MCP Server) and hello_tool.gox (a MCP Tool).
First let us initialize a hello project:
gop mod init hello
Then we have it reference the mcp classfile:
gop get github.com/goplus/mcp@latest
The content of main_mcp.gox (the MCP Server) is as follows
server "Tool Demo π", "1.0.0"The content of hello_tool.gox (a MCP Tool) is as follows
tool "helloWorld", => {
description "Say hello to someone"
string "name", => {
required
description "Name of the person to greet"
}
}
name, ok := ${name}.(string)
if !ok {
return newError("name must be a string")
}
return text("Hello, ${name}!")Execute the following commands:
gop mod tidy
gop run .
A simplest MCP Server is running now.
To test the above hello MCP Server, you only need to implement a hello_mtest.gox file:
mock new(MCPApp)
initialize nil
ret {}
call "helloWorld", {"name": "Ken"}
ret {
"content": [{"type": "text", "text": "Hello, Ken!"}],
}Then run gop test or gop test -v to execute the unit test.