Go Playground MCP Server
# Go Playground MCP Server
A Model Context Protocol (MCP) server that integrates with the Go Playground API to execute Go code and generate shareable URLs.
[](https://github.com/samber/go-playground-mcp/releases)

[](https://codecov.io/gh/samber/go-playground-mcp)
[](https://www.npmjs.com/package/go-playground-mcp)
[](LICENSE)
## 🧙 Features
- **Run Go Code**: Execute Go code in the Go Playground sandbox
- **Share Code**: Generate shareable URLs for Go code snippets
- **Run and Share**: Execute code and get both results and share URL in one operation
- **Read from URL**: Read Go code from existing Go Playground URLs
- **Execute from URL**: Execute Go code from existing Go Playground URLs
- **MCP Integration**: Full Model Context Protocol compliance
## 🏃♂️ Usage
The server can be used with any MCP-compatible client. The server provides five tools:
1. **`run_go_code`** - Execute Go code and return results
2. **`share_go_code`** - Share Go code and get a URL
3. **`run_and_share_go_code`** - Execute code and get both results and share URL
4. **`read_go_playground_url`** - Read Go code from an existing Go Playground URL
5. **`execute_go_playground_url`** - Execute Go code from an existing Go Playground URL
Add this to your MCP client configuration:
```json
{
"mcpServers": {
"go-playground": {
"command": "npx",
"args": ["-y", "go-playground-mcp"]
}
}
}
```
### Examples
#### Reading code from a Go Playground URL
```typescript
// Read code from https://go.dev/play/xyz123
const result = await mcpClient.callTool("read_go_playground_url", {
url: "https://go.dev/play/xyz123"
});
```
#### Executing code from a Go Playground URL
```typescript
// Execute code from https://go.dev/play/xyz123
const result = await mcpClient.callTool("execute_go_playground_url", {
url: "https://go.dev/play/xyz123",
withVet: true
});
```
#### URL Formats Supported
The new URL-based tools support these Go Playground URL formats:
- `https://go.dev/play/<snippet-id>`
- `https://go.dev/play/p/<snippet-id>`
- `https://play.golang.org/p/<snippet-id>`
## 🤝 Contributing
- Ping me on Twitter [@samuelberthe](https://twitter.com/samuelberthe) (DMs, mentions, whatever :))
- Fork the [project](https://github.com/samber/go-playground-mcp)
- Fix [open issues](https://github.com/samber/go-playground-mcp/issues) or request new features
Don't hesitate ;)
### Install
1. Clone this repository:
```bash
git clone https://github.com/samber/go-playground-mcp.git
cd go-playground-mcp
```
2. Install dependencies:
```bash
npm install
```
3. Build the project:
```bash
npm run build
```
### Running the Server
```bash
# Development mode
npm run dev
# Production mode
npm run build
npm start
```
Add this to your MCP client configuration:
```json
{
"mcpServers": {
"go-playground": {
"command": "node",
"args": ["dist/index.js"]
}
}
}
```
## 👤 Contributors

## 💫 Show your support
Give a ⭐️ if this project helped you!
[](https://github.com/sponsors/samber)
## 📝 License
Copyright © 2025 [Samuel Berthe](https://github.com/samber).
This project is [MIT](./LICENSE) licensed.
TDQS
Scored across 5 tools
Most tools have clear distinct purposes: run_go_code executes provided code, share_go_code returns a URL, read_go_playground_url fetches code from a URL, and execute_go_playground_url runs code from a URL. The only potential confusion is between run_go_code and run_and_share_go_code, since the latter is a superset that also shares, but this is explicitly described.
Tool names follow a consistent verb_noun pattern (run, share, read, execute) and clearly reference the object (go_code or go_playground_url). Minor inconsistency exists between 'go_code' and 'go_playground_url' but it is not confusing, and the compound 'run_and_share_go_code' remains readable.
Five tools is well-scoped for a Go Playground server. Each tool covers a distinct interaction mode (run, share, read from URL, execute from URL, and combined run+share) without redundancy or bloat.
The tool set covers the essential Go Playground workflows: running code, sharing code, retrieving code from a URL, executing code from a URL, and a combined convenience tool. No obvious gaps exist for the stated purpose.