A Mastra-based MCP server that provides expert Go programming assistance with real-time documentation from pkg.go.dev. Use it in your AI-powered code editor to get instant access to Go documentation, best practices, and code examples.
| Host | Base URL | Highlights |
|---|---|---|
| Mastra Cloud | https://go-docs.mastra.cloud | Primary choice - Zero cold start, maximum responsiveness, reliable performance. |
- Append
/api/mcp/goDocsMcpServer/ssefor the SSE transport (best for editors that keep long-lived connections). - Append
/api/mcp/goDocsMcpServer/mcpfor the HTTP transport (handy for CLIs and quick one-off calls).
Endpoint reference
- Mastra Cloud SSE: https://go-docs.mastra.cloud/api/mcp/goDocsMcpServer/sse
- Mastra Cloud HTTP: https://go-docs.mastra.cloud/api/mcp/goDocsMcpServer/mcp
- Development SSE: http://localhost:4111/api/mcp/goDocsMcpServer/sse
- Development HTTP: http://localhost:4111/api/mcp/goDocsMcpServer/mcp
- β Production deployment on Mastra Cloud
- β Real-time Go documentation from pkg.go.dev
- β Expert Go programming assistance with AI agent
- β Support for all major AI code editors (Cursor, Windsurf, VS Code, Claude Desktop)
- β HTTP and SSE transport protocols
- β Automated versioning with semantic-release
- Go Documentation Access: Fetches real-time documentation from pkg.go.dev
- MCP Protocol Support: HTTP SSE transport for seamless integration with MCP clients
- Intelligent Responses: Provides well-formatted answers with code examples
- Mastra Framework: Built on Mastra for scalable tool development
- TypeScript Support: Fully typed with TypeScript
- Multi-Client Support: Works with Cursor, VSCode, Claude Desktop, Windsurf, and other MCP-compatible tools
Mastra Cloud is the recommended deployment for all editors. It offers zero cold start and maximum responsiveness. SSE works best for editors that keep a persistent connection, while HTTP is handy for one-off requests and scripts.
Cursor
- Open Cursor Settings (
Cmd/Ctrl+,). - Navigate to "MCP" / "Model Context Protocol" and add a new server configuration.
Mastra Cloud β SSE example:
{
"go-docs": {
"type": "sse",
"url": "https://go-docs.mastra.cloud/api/mcp/goDocsMcpServer/sse"
}
}Mastra Cloud β HTTP example:
{
"go-docs": {
"type": "http",
"url": "https://go-docs.mastra.cloud/api/mcp/goDocsMcpServer/mcp"
}
}Development (localhost):
{
"go-docs-dev": {
"type": "sse",
"url": "http://localhost:4111/api/mcp/goDocsMcpServer/sse"
}
}VS Code
Add to your .vscode/settings.json or use the Command Palette (Cmd/Ctrl+Shift+P) and run MCP: Add server:
For Production (SSE transport):
{
"mcpServers": {
"go-docs": {
"url": "https://go-docs.mastra.cloud/api/mcp/goDocsMcpServer/sse",
"type": "sse"
}
}
}For Production (HTTP transport):
{
"mcpServers": {
"go-docs": {
"url": "https://go-docs.mastra.cloud/api/mcp/goDocsMcpServer/mcp",
"type": "http"
}
}
}For Development (localhost):
{
"mcpServers": {
"go-docs-dev": {
"url": "http://localhost:4111/api/mcp/goDocsMcpServer/sse",
"type": "sse"
}
}
}Windsurf
- Edit
~/.codeium/windsurf/mcp_config.json. - Add the SSE transport:
{
"mcpServers": {
"go-docs": {
"url": "https://go-docs.mastra.cloud/api/mcp/goDocsMcpServer/sse",
"transport": "sse"
}
}
}- Save, restart Windsurf, then open
mcp.jsonin Agent mode and click "start".
Claude Desktop
Add to your claude_desktop_config.json:
For Production:
{
"mcpServers": {
"go-docs": {
"url": "https://go-docs.mastra.cloud/api/mcp/goDocsMcpServer/sse"
}
}
}For Development:
{
"mcpServers": {
"go-docs-dev": {
"url": "http://localhost:4111/api/mcp/goDocsMcpServer/sse"
}
}
}Zed
- Open Zed settings (
Cmd/Ctrl+,). - Edit
~/.config/zed/settings.json:
{
"context_servers": {
"go-docs": {
"source": "custom",
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://go-docs.mastra.cloud/api/mcp/goDocsMcpServer/sse"
],
"env": {}
}
}
}- Save, restart Zed, and confirm the server shows a green indicator in the Agent panel.
Claude Code CLI (Anthropic)
-
Global settings (
~/.claude/settings.json):{ "mcpServers": { "go-docs": { "command": "npx", "args": [ "-y", "mcp-remote", "https://go-docs.mastra.cloud/api/mcp/goDocsMcpServer/mcp" ] } } } -
Command palette alternative:
claude mcp add go-docs --url https://go-docs.mastra.cloud/api/mcp/goDocsMcpServer/mcp
OpenAI Codex CLI
codex mcp add go-docs --url https://go-docs.mastra.cloud/api/mcp/goDocsMcpServer/sse
codex mcp listGemini CLI (Google)
-
Create or edit
~/.gemini/settings.json:mkdir -p ~/.gemini nano ~/.gemini/settings.json
-
Add the configuration:
{ "mcpServers": { "go-docs": { "httpUrl": "https://go-docs.mastra.cloud/api/mcp/goDocsMcpServer/mcp" } } } -
Or use the npx command variant:
{ "mcpServers": { "go-docs": { "command": "npx", "args": [ "mcp-remote", "https://go-docs.mastra.cloud/api/mcp/goDocsMcpServer/mcp" ] } } }
# Test MCP connection
npx mcp-remote https://go-docs.mastra.cloud/api/mcp/goDocsMcpServer/mcp
# Check HTTP endpoint
curl -I https://go-docs.mastra.cloud/api/mcp/goDocsMcpServer/mcp
# Test SSE endpoint
curl -N https://go-docs.mastra.cloud/api/mcp/goDocsMcpServer/sseOnce installed, your AI assistant will have access to these tools:
- fetchGoDoc - Fetches real-time official Go documentation from pkg.go.dev. Use this to get package docs, function signatures, type definitions, and examples. Supports standard library packages like 'fmt', 'net/http', 'context', 'encoding/json', and third-party packages.
After installing the MCP server in your editor, you can ask your AI assistant:
- "How do I use the fmt package in Go?"
- "Show me examples of Go slices and arrays"
- "What are Go best practices for error handling?"
- "Explain Go interfaces with code examples"
- "How do I handle concurrency with goroutines?"
- "What's the difference between make and new in Go?"
import { MCPClient } from "@mastra/mcp";
// Use environment variable for URL (supports both dev and prod)
const mcpUrl =
process.env.MCP_SERVER_URL ||
"http://localhost:4111/api/mcp/goDocsMcpServer/sse";
const mcp = new MCPClient({
servers: {
goDocs: {
url: mcpUrl,
},
},
});
// Get available tools
const tools = await mcp.getTools();
// Call a tool directly
const result = await mcp.callTool("go-docs", "fetchGoDocs", {
query: "How do I use Go slices?",
});These instructions assume you have Bun (or Node 20+) installed and an API key for your chosen model provider.
- Install dependencies:
bun install- Copy the example environment and add your API key(s):
cp .env.example .env
# Edit .env and add your API key(s)- Run in development mode:
bun run dev- Build and run production:
bun run build
bun run startNote: Studio (Mastra local UI) is available during dev at http://localhost:4111.
| Script | Description |
|---|---|
dev |
Start Mastra in development mode |
build |
Build the Mastra project for production |
start |
Start the built Mastra server |
check-versions |
Verify package.json and MCP server match |
sync-versions |
Sync version from package.json to MCP server |
Copy .env.example to .env and configure:
cp .env.example .env| Variable | Description |
|---|---|
OPENAI_API_KEY |
API key for OpenAI |
GOOGLE_GENERATIVE_AI_API_KEY |
API key for Google Gemini (optional) |
MCP_SERVER_URL |
MCP server URL for programmatic access |
src/
ββ mastra/
β ββ agents/
β β ββ go-docs-agent.ts # AI agent for Go documentation
β ββ mcp/
β β ββ go-docs-server.ts # MCP server configuration
β ββ tools/
β β ββ go-docs-tool.ts # Documentation fetching tool
β ββ index.ts # Mastra configuration
scripts/
ββ check-versions.js # Version verification script
ββ sync-versions.js # Version synchronization script
- MCP Protocol: Communicates via HTTP SSE or HTTP transport
- Documentation Fetching: The
go-docs-toolfetches documentation from pkg.go.dev - AI Agent: Expert Go agent provides contextual answers with code examples
- Tool Exposure: Makes Go documentation tools available to connected MCP clients
To add new capabilities:
- Add Tools: Create new tools in
src/mastra/tools/ - Modify MCP Server: Update
src/mastra/mcp/go-docs-server.ts - Test: Use the MCP client testing configuration
import { createTool } from "@mastra/core/tools";
import { z } from "zod";
export const customTool = createTool({
id: "custom-tool",
description: "Description of what the tool does",
inputSchema: z.object({
param: z.string(),
}),
execute: async ({ context }) => {
return { result: "output" };
},
});Versions are synchronized between package.json and the MCP server:
# Check if versions match
bun run check-versions
# Sync versions (package.json is source of truth)
bun run sync-versionsContributions are welcome! Please follow these guidelines:
- Fork the repo and create a feature branch
- Follow Conventional Commits for commit messages
- Add tests or a demo if you change behavior
- Submit a PR describing your change
This project is licensed under the MIT License - see the LICENSE file for details.