go-docs
MCP server that provides real-time Go documentation and expert programming assistance by fetching from pkg.go.dev.
README
go-docs
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.
Production Deployment
| 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).
<details> <summary>Endpoint reference</summary>
- 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
</details>
š What's New
- ā 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
š Features
- 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
Editor Setup
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.
<details> <summary>Cursor</summary>
- 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"
}
}
</details>
<details> <summary>VS Code</summary>
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"
}
}
}
</details>
<details> <summary>Windsurf</summary>
- 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".
</details>
<details> <summary>Claude Desktop</summary>
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"
}
}
}
</details>
<details> <summary>Zed</summary>
- 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.
</details>
CLI & Agent Configuration
<details> <summary>Claude Code CLI (Anthropic)</summary>
-
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
</details>
<details> <summary>OpenAI Codex CLI</summary>
codex mcp add go-docs --url https://go-docs.mastra.cloud/api/mcp/goDocsMcpServer/sse
codex mcp list
</details>
<details> <summary>Gemini CLI (Google)</summary>
-
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" ] } } }
</details>
Verification & Quick Tests
# 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/sse
Available Tools
Once 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.
Example Usage
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?"
š Programmatic Usage
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?",
});
š Quick Start (Local Development)
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 start
Note: Studio (Mastra local UI) is available during dev at http://localhost:4111.
š¦ Scripts
| 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 |
āļø Environment Variables
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 |
šļø Project Structure
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
š§ How it Works
- 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
š ļø Development
Extending the MCP Server
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
Building Custom Tools
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" };
},
});
Version Management
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-versions
Contributing
Contributions 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
License
This project is licensed under the MIT License - see the LICENSE file for details.
References
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.