MCP ExplorerExplorer

Go Mcp Server Service

@AndrewDonelsonon a year ago
1 MIT
FreeCommunity
AI Systems
A JSON-RPC 2.0 compliant server implementing the Model Context Protocol (MCP) for note management (as an example)

Overview

What is Go Mcp Server Service

go-mcp-server-service is a JSON-RPC 2.0 compliant server that implements the Model Context Protocol (MCP) specifically for note management. It serves as a boilerplate for developers to create their own projects with note management functionalities.

Use cases

Use cases include adding new notes, summarizing existing notes, and managing note metadata. It can be utilized in applications where users need to create, access, and manage notes efficiently and safely.

How to use

To use go-mcp-server-service, you can build the server using provided Makefile commands. After building, you can interact with the server through the command-line interface or integrate it into your applications using the JSON-RPC API for note management tasks.

Key features

Key features include a JSON-RPC 2.0 compliant API, cross-platform support (Windows, Linux, macOS), thread-safe note management, development and release build configurations, and both service and command-line interface components.

Where to use

go-mcp-server-service can be used in various fields requiring note management systems, such as personal note-taking applications, collaborative note-sharing platforms, or any application needing structured note storage and retrieval.

Content

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:

Code Description Standard
-32700 Parse error Yes
-32600 Invalid request Yes
-32601 Method not found Yes
-32602 Invalid params Yes
-32603 Internal error Yes
-32001 Resource not found No
-32002 Unsupported operation No

License

MIT License

Copyright © 2024 Andrew Lee Donelson

Tools

No tools

Comments

Recommend MCP Servers

View All MCP Servers