mcpField
G
go-mcp-server-service

go-mcp-server-service

Local
github.com/AndrewDonelsonDeveloper Tools1Updated 100w ago

About go-mcp-server-service

A Go MCP server example and boilerplate for note management, with CLI and service components for development and release builds.

Key features

  1. 01JSON-RPC 2.0 API
  2. 02Thread-safe note storage
  3. 03Note resources with a custom URI
  4. 04Add-note tool and summarize-notes prompt
  5. 05CLI and background service components

Use cases

  1. 01Building a Go MCP server from a note-management example
  2. 02Storing notes for access by an MCP client

MCP support

Exposes note resources through a custom `note://` URI, an `add-note` tool, and a `summarize-notes` prompt to MCP clients.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"go-mcp-server-service": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/inspector"
]
}
}
}
Run commandnpx -y @modelcontextprotocol/inspector

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@modelcontextprotocol/inspector

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

go-mcp-server-service

A JSON-RPC 2.0 compliant server implementing the Model Context Protocol (MCP) for note management (as an example)

This is an example. You can modify this and use as a Boilerplate for your own project. It supports cross-platform development and includes a command-line interface and service component for both development and release builds.

Features

  • JSON-RPC 2.0 compliant API
  • Cross-platform support (Windows, Linux, macOS)
  • Thread-safe note management
  • Development and release build configurations
  • Service and command-line interface components

Components

Command Line Interface (cmd)

The command-line interface provides direct access to the notes server functionality.

Service (service)

The service component enables system-level integration and background operation.

Resources

The server implements a note storage system with:

  • Custom note:// URI scheme for accessing individual notes
  • Resource metadata including name, description, and MIME type
  • Thread-safe concurrent access
Prompts

Available prompts:

  • summarize-notes: Creates summaries of all stored notes
    • Optional style argument ("brief"/"detailed")
    • Combines all current notes with style preference
    • Thread-safe note access
Tools

Available tools:

  • add-note: Adds a new note to the server
    • Required arguments: name (string), content (string)
    • Thread-safe state updates
    • Returns confirmation message

Building

Prerequisites
  • Go 1.21 or later
  • GNU Make or compatible build tool
  • Git (for version information)
Build Commands

Development builds (includes debug symbols and race detection):

# Build all components for all platforms
make dev

# Build for specific platform
make dev-windows
make dev-linux
make dev-darwin

# Build specific components
make build-cmd
make build-service

Release builds (optimized and stripped):

# Build all components for all platforms
make release-all

# Build for specific platform
make release-windows
make release-linux
make release-darwin

Run locally:

# Run command-line interface
make run-cmd

# Run service
make run-service

View all available targets:

make help
Build Output

Binaries are created in the bin directory:

  • Development builds: bin/dev/<platform>/
  • Release builds: bin/release/<platform>/

Configuration

Claude Desktop Integration

Configure the notes server in Claude Desktop's configuration file:

Location
  • MacOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%/Claude/claude_desktop_config.json
Development Configuration
{
  "mcpServers": {
    "notes-server": {
      "command": "./bin/dev/<platform>/notes-server",
      "args": []
    }
  }
}
Release Configuration (Service Example)
{
  "mcpServers": {
    "notes-server": {
      "command": "./bin/release/<platform>/notes-service",
      "args": []
    }
  }
}

Development

Project Structure
.
├── cmd/                    # Command-line interface
├── service/               # Service implementation
├── internal/
│   └── server/           # Core server implementation
│       ├── operations.go # Server operations
│       ├── server.go    # Main server logic
│       └── types.go     # Type definitions
├── Makefile              # Build configuration
└── README.md
Debugging

Since the server runs over stdio, we recommend using the MCP Inspector for debugging:

npx @modelcontextprotocol/inspector ./bin/dev/<platform>/notes-server

The Inspector will provide a URL for the debugging interface.

Error Codes

The server implements standard JSON-RPC 2.0 error codes plus custom codes:

CodeDescriptionStandard
-32700Parse errorYes
-32600Invalid requestYes
-32601Method not foundYes
-32602Invalid paramsYes
-32603Internal errorYes
-32001Resource not foundNo
-32002Unsupported operationNo

License

MIT License

Copyright (c) 2024 Andrew Lee Donelson

Comments

Markdown supported

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.