Gopher MCP
MCP C++ SDK - Model Context Protocol implementation in CPP with enterprise-grade security, visibility and connectivity.
Installation
npx gopher-mcpAsk AI about Gopher MCP
Powered by Claude Β· Grounded in docs
I know everything about Gopher MCP. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
MCP C++ SDK - Model Context Protocol Implementation for C++
The most comprehensive C++ implementation of the Model Context Protocol (MCP) for building AI-powered applications. Production-ready SDK with enterprise features including multi-transport support, connection pooling, and multi-language bindings via C API (Python, TypeScript, Go, Rust, Java, C#, Ruby and more).
β Please give a star if you find this useful!
Table of Contents
- Architecture Overview
- Cross-Language Support
- What is MCP?
- Features
- Quick Start
- Examples
- Installation
- Documentation
- FAQ
- Contributing
- License
Architecture Overview
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Application Layer β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β MCP Server β MCP Client β Custom Applications β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Cross-Language Binding Layer β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Python β TypeScript β Go β Rust β Java β C# β Ruby β Swift β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β C API (FFI Layer) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β libgopher_mcp_c: Opaque Handles β RAII Guards β Type Safety β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Protocol Layer β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ ββββββββββββββ β
β β JSON-RPC β β Requests β β Responses β β Notify β β
β β Codec β β Dispatch β β Routing β β Stream β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ ββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Filter Chain Layer β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ ββββββββββββββ β
β β HTTP / SSE β β Routing β β Rate Limiter β β Auth β β
β β Codecs β β & CORS β β Circuit Brk β β Metrics β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ ββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Transport Layer β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Stdio β HTTP(S)+SSE β Streamable HTTP β WebSocket β TCP β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Network Layer β
β ββββββββββββββββββ ββββββββββββββββββ ββββββββββββββββββ β
β β Connection β β Listener β β Socket β β
β β Management β β & Accept β β Interface β β
β ββββββββββββββββββ ββββββββββββββββββ ββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Event Loop & Dispatcher β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Libevent β Timer Management β I/O Events β Buffer β Result β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Design Principles
- Thread-Safe Dispatcher Model - All I/O in dispatcher threads, no complex synchronization
- Filter Chain Architecture - Modular, composable request processing
- Production Patterns - Connection pooling, circuit breaker, graceful shutdown
Cross-Language Support
Use MCP C++ SDK from any programming language via the stable C API (libgopher_mcp_c):
| Language | Binding Type | Features |
|---|---|---|
| Python | ctypes/cffi | Async support, type hints |
| TypeScript/Node.js | N-API | High performance, native async |
| Go | CGO | Goroutine-safe wrappers |
| Rust | FFI | Safe wrappers, ownership guarantees |
| Java | JNI | Automatic resource management |
| C#/.NET | P/Invoke | Async/await support |
| Ruby | Native extension | GC integration |
# Installation paths
Headers: /usr/local/include/gopher-mcp/mcp/c_api/
Library: /usr/local/lib/libgopher_mcp_c.{so,dylib,dll}
What is MCP?
Model Context Protocol (MCP) is an open protocol that enables AI models (like Claude, GPT, etc.) to securely interact with external tools, data sources, and services. MCP provides a standardized way for:
- AI assistants to access files, databases, and APIs
- Developers to expose tools and resources to AI models
- Applications to integrate AI capabilities with enterprise systems
This MCP C++ SDK implements the official MCP specification in high-performance C++, suitable for:
- Embedded systems and IoT devices
- High-frequency trading and real-time applications
- Game engines and graphics applications
- Native desktop and mobile applications
- Backend services requiring low latency
Features
| Category | Features |
|---|---|
| Protocol | Full MCP 2025-06-18 specification, JSON-RPC 2.0, resources, tools, prompts |
| Transports | stdio, HTTP+SSE, HTTPS+SSE, WebSocket, TCP |
| Performance | Zero-copy buffers, lock-free operations, connection pooling |
| Reliability | Circuit breaker, rate limiting, retry with backoff, graceful shutdown |
| Security | TLS/SSL, authentication middleware, request validation |
| Observability | Structured logging, metrics, health endpoints |
| Cross-Language | C API for Python, Node.js, Go, Rust, Java, C#, Ruby bindings |
Quick Start
Build and Install
# Show all available commands
make help
# Build
make
# Install (auto-prompts for sudo if needed)
make install
# Run tests
make test
Create an MCP Server
#include "mcp/server/mcp_server.h"
int main() {
mcp::server::McpServerConfig config;
config.server_name = "my-mcp-server";
auto server = mcp::server::createMcpServer(config);
// Register a tool
mcp::Tool calculator;
calculator.name = "add";
calculator.description = "Add two numbers";
server->registerTool(calculator, [](const std::string& name,
const mcp::optional<mcp::Metadata>& arguments,
mcp::server::SessionContext& ctx) {
mcp::CallToolResult result;
auto args = arguments.value();
auto a_it = args.find("a");
auto b_it = args.find("b");
double a = mcp::holds_alternative<double>(a_it->second)
? mcp::get<double>(a_it->second) : 0.0;
double b = mcp::holds_alternative<double>(b_it->second)
? mcp::get<double>(b_it->second) : 0.0;
result.content.push_back(mcp::TextContent{"Result: " + std::to_string(a + b)});
return result;
});
server->listen("http://0.0.0.0:3000");
server->run();
}
Create an MCP Client
#include "mcp/client/mcp_client.h"
int main() {
mcp::client::McpClientConfig config;
config.client_name = "my-mcp-client";
auto client = mcp::client::createMcpClient(config);
client->connect("http://localhost:3000");
// Initialize protocol
auto init = client->initializeProtocol().get();
// Call a tool
auto args = mcp::make<mcp::Metadata>()
.add("a", 10.0)
.add("b", 5.0)
.build();
auto result = client->callTool("add", mcp::make_optional(args)).get();
}
Examples
See examples/mcp/README.md for complete working examples:
# Terminal 1: Start server
./build/examples/mcp/mcp_example_server --verbose
# Terminal 2: Run client with demo
./build/examples/mcp/mcp_example_client --demo --verbose
The example server includes:
- Resource registration and subscriptions
- Tool execution (calculator, database query, system info)
- Prompt templates
- Session management
- HTTP/SSE endpoints
Installation
Prerequisites
- C++14 compiler (GCC 8+, Clang 10+, MSVC 2019+)
- CMake 3.10+
- libevent 2.1+
- OpenSSL 1.1+ (optional, for TLS)
Build Options
# Debug build
make debug
# Release build
make release
# Static libraries only
cmake -B build -DBUILD_SHARED_LIBS=OFF
# Without C API
cmake -B build -DBUILD_C_API=OFF
# Custom install prefix
cmake -B build -DCMAKE_INSTALL_PREFIX=~/.local
Windows (Cygwin + MinGW)
Building on Windows requires Cygwin with MinGW-w64 toolchain:
Prerequisites
Install Cygwin with these packages:
make,cmake- Build toolsmingw64-x86_64-gcc-g++- MinGW C++ compilermingw64-x86_64-libevent- Event librarymingw64-x86_64-openssl- SSL/TLS library
Build Commands
# From Cygwin bash shell
./build-mingw.sh # Release build (default)
./build-mingw.sh debug # Debug build
./build-mingw.sh release # Release build
./build-mingw.sh clean # Clean build directory
Output
- Build directory:
build-mingw/ - Executable:
build-mingw/examples/mcp/mcp_example_server.exe
Documentation
MCP C++ Documentation
- Examples Guide - Working server and client examples
MCP CPP Core Components
- MCP Protocol in C++ - Model Context Protocol implementation details
- Filter Chain - Processing pipeline architecture
- Transport Layer - Transport implementations
- Network Layer - Connection management and socket abstraction
Design Documents
- Event Loop Design - Event-driven architecture and dispatcher design
- Filter Usage Guide - Comprehensive guide for using and creating filters
- CTAD Alternatives - Class Template Argument Deduction alternatives for C++14
- MCP Serialization Coverage - JSON serialization implementation details
FAQ
What is the Model Context Protocol?
MCP is an open protocol by Anthropic that standardizes how AI models interact with external tools and data. It defines JSON-RPC methods for resources (data), tools (actions), and prompts (templates).
Why use C++ for MCP?
C++ provides maximum performance and portability. This SDK is ideal for embedded systems, real-time applications, game engines, and any environment where Python/Node.js overhead is unacceptable.
Does this work with Claude, GPT, and other AI models?
Yes. MCP is model-agnostic. Any AI system that supports MCP can use servers built with this SDK.
How do I integrate with my Python/Node.js application?
Use the C API bindings. The SDK provides a stable C interface that can be called from any language with FFI support.
Is this production-ready?
Yes. The SDK includes connection pooling, circuit breakers, rate limiting, TLS support, and comprehensive error handling suitable for enterprise deployments.
What transports are supported?
- stdio - Standard input/output (CLI tools)
- HTTP+SSE - HTTP with Server-Sent Events (web applications)
- HTTPS+SSE - Secure HTTP+SSE
- WebSocket - Bidirectional real-time
- TCP - Raw TCP sockets
How do I contribute?
See CONTRIBUTING.md for guidelines. Issues and pull requests welcome!
Keywords & Search Terms
MCP C++, MCP CPP, Model Context Protocol C++, MCP SDK, C++ MCP, CPP MCP, Model Context Protocol CPP, MCP implementation, AI model integration C++, LLM integration C++, MCP server C++, MCP client C++, Model Context Protocol SDK, C++ AI SDK, Enterprise MCP, Production MCP C++
Contributing
Contributions are welcome! Please read our contributing guidelines before submitting pull requests.
License
Apache License 2.0 - see LICENSE for details.
