GitHub - modelcontextprotocol/go-sdk: The official Go SDK for Model Context Protocol servers and clients. Maintained in collaboration with Google. · GitHub
https://github.com/modelcontextprotocol/go-sdk • 343 KB fetched
Open original page
GitHub - modelcontextprotocol/go-sdk: The official Go SDK for Model Context Protocol servers and clients. Maintained in collaboration with Google. · GitHub
Skip to content
Navigation Menu
Sign in Appearance settings
* Platform
* AI CODE CREATION
* GitHub Copilot Write better code with AI
* GitHub Copilot app Direct agents from issue to merge
* MCP Registry Integrate external tools
* DEVELOPER WORKFLOWS
* Actions Automate any workflow
* Codespaces Instant dev environments
* Issues Plan and track work
* Code Review Manage code changes
* Code Quality Enforce quality at merge
* APPLICATION SECURITY
* GitHub Advanced Security Find and fix vulnerabilities
* Code security Secure your code as you build
* Secret protection Stop leaks before they start
* EXPLORE
* Why GitHub
* Documentation
* Blog
* Changelog
* Marketplace
View all features
* Solutions
* BY COMPANY SIZE
* Enterprises
* Small and medium teams
* Startups
* Nonprofits
* BY USE CASE
* App Modernization
* DevSecOps
* DevOps
* CI/CD
* View all use cases
* BY INDUSTRY
* Healthcare
* Financial services
* Manufacturing
* Government
* View all industries
View all solutions
* Resources
* EXPLORE BY TOPIC
* AI
* Software Development
* DevOps
* Security
* View all topics
* EXPLORE BY TYPE
* Customer stories
* Events & webinars
* Ebooks & reports
* Business insights
* GitHub Skills
* SUPPORT & SERVICES
* Documentation
* Customer support
* Community forum
* Trust center
* Partners
View all resources
* Open Source
* COMMUNITY
* GitHub Sponsors Fund open source developers
* PROGRAMS
* Security Lab
* Maintainer Community
* GitHub Stars
* Archive Program
* REPOSITORIES
* Topics
* Trending
* Collections
* Enterprise
* ENTERPRISE SOLUTIONS
* Enterprise platform AI-powered developer platform
* AVAILABLE ADD-ONS
* GitHub Advanced Security Enterprise-grade security features
* Copilot for Business Enterprise-grade AI features
* Premium Support Enterprise-grade 24/7 support
* Pricing
Search /
Sign in
Sign up Appearance settings
You signed in with another tab or window. Reload to refresh your session.
You signed out in another tab or window. Reload to refresh your session.
You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
Uh oh!
There was an error while loading. Please reload this page .
modelcontextprotocol
/
go-sdk
Public
*
Notifications
You must be signed in to change notification settings
*
Fork
535
*
Star
5.1k
*
Code
*
Issues
51
*
Pull requests
50
*
Discussions
*
Actions
*
Projects
*
Security and quality
4
*
Insights
Additional navigation options
*
Code
*
Issues
*
Pull requests
*
Discussions
*
Actions
*
Projects
*
Security and quality
*
Insights
main
Branches Tags
Go to file
Code Open more actions menu
Latest commit
History
791 Commits
791 Commits
Folders and files
Name Name Last commit message
Last commit date
.agents/ skills/ fix-bug
.agents/ skills/ fix-bug
.devcontainer
.devcontainer
.github
.github
auth
auth
conformance
conformance
design
design
docs
docs
examples
examples
internal
internal
jsonrpc
jsonrpc
mcp
mcp
oauthex
oauthex
scripts
scripts
.gitignore
.gitignore
AGENTS.md
AGENTS.md
CONTRIBUTING.md
CONTRIBUTING.md
LICENSE
LICENSE
README.md
README.md
ROADMAP.md
ROADMAP.md
SECURITY.md
SECURITY.md
copyright_test.go
copyright_test.go
go.mod
go.mod
go.sum
go.sum
mkdocs.yaml
mkdocs.yaml
View all files
Repository files navigation
*
* README
* Code of conduct
* Contributing
* License
* Security
More items
MCP Go SDK
This repository contains an implementation of the official Go software
development kit (SDK) for the Model Context Protocol (MCP).
Package / Feature documentation
The SDK consists of several importable packages:
* The
github.com/modelcontextprotocol/go-sdk/mcp
package defines the primary APIs for constructing and using MCP clients and
servers.
* The
github.com/modelcontextprotocol/go-sdk/jsonrpc package is for users implementing
their own transports.
* The
github.com/modelcontextprotocol/go-sdk/auth
package provides some primitives for supporting OAuth.
* The
github.com/modelcontextprotocol/go-sdk/oauthex
package provides extensions to the OAuth protocol, such as ProtectedResourceMetadata.
The SDK endeavors to implement the full MCP spec. The docs/ directory
contains feature documentation, mapping the MCP spec to the packages above.
Version Compatibility
The following table shows which versions of the Go SDK support which versions of the MCP specification:
SDK Version
Latest MCP Spec
All Supported MCP Specs
v1.7.0+
2026-07-28
2026-07-28, 2025-11-25*, 2025-06-18, 2025-03-26, 2024-11-05
v1.4.0 - v1.6.1
2025-11-25*
2025-11-25*, 2025-06-18, 2025-03-26, 2024-11-05
v1.2.0 - v1.3.1
2025-11-25**
2025-11-25**, 2025-06-18, 2025-03-26, 2024-11-05
v1.0.0 - v1.1.0
2025-06-18
2025-06-18, 2025-03-26, 2024-11-05
* Client side OAuth has experimental support.
** Partial support for 2025-11-25 (client side OAuth and Sampling with tools not available).
The roots, sampling, and logging features are deprecated as of protocol version
2026-07-28 by
SEP-2577 .
The SDK continues to support them for compatibility during the deprecation
window (at least twelve months). See the individual feature documentation for
migration guidance.
New releases of the SDK target only supported versions of Go. See
https://go.dev/doc/devel/release#policy for more information.
Getting started
To get started creating an MCP server, create an mcp.Server instance, add
features to it, and then run it over an mcp.Transport . For example, this
server adds a single simple tool, and then connects it to clients over
stdin/stdout:
package main
import (
"context"
"log"
"github.com/modelcontextprotocol/go-sdk/mcp"
)
type Input struct {
Name string `json:"name" jsonschema:"the name of the person to greet"`
}
type Output struct {
Greeting string `json:"greeting" jsonschema:"the greeting to tell to the user"`
}
func SayHi ( ctx context. Context , req * mcp. CallToolRequest , input Input ) (
* mcp. CallToolResult ,
Output ,
error ,
) {
return nil , Output { Greeting : "Hi " + input . Name }, nil
}
func main () {
// Create a server with a single tool.
server := mcp . NewServer ( & mcp. Implementation { Name : "greeter" , Version : "v1.0.0" }, nil )
mcp . AddTool ( server , & mcp. Tool { Name : "greet" , Description : "say hi" }, SayHi )
// Run the server over stdin/stdout, until the client disconnects.
if err := server . Run ( context . Background (), & mcp. StdioTransport {}); err != nil {
log . Fatal ( err )
}
}
To communicate with that server, create an mcp.Client and connect it to the
corresponding server, by running the server command and communicating over its
stdin/stdout:
package main
import (
"context"
"log"
"os/exec"
"github.com/modelcontextprotocol/go-sdk/mcp"
)
func main () {
ctx := context . Background ()
// Create a new client, with no features.
client := mcp . NewClient ( & mcp. Implementation { Name : "mcp-client" , Version : "v1.0.0" }, nil )
// Connect to a server over stdin/stdout.
transport := & mcp. CommandTransport { Command : exec . Command ( "myserver" )}
session , err := client . Connect ( ctx , transport , nil )
if err != nil {
log . Fatal ( err )
}
defer session . Close ()
// Call a tool on the server.
params := & mcp. CallToolParams {
Name : "greet" ,
Arguments : map [ string ] any { "name" : "you" },
}
res , err := session . CallTool ( ctx , params )
if err != nil {
log . Fatalf ( "CallTool failed: %v" , err )
}
if res . IsError {
log . Fatal ( "tool failed" )
}
for _ , c := range res . Content {
log . Print ( c .( * mcp. TextContent ). Text )
}
}
The examples/ directory contains more example clients and
servers.
Contributing
We welcome contributions to the SDK! Please see
CONTRIBUTING.md for details of how to contribute.
Acknowledgements / Alternatives
Several third party Go MCP SDKs inspired the development and design of this
official SDK, and continue to be viable alternatives, notably
mcp-go , originally authored by Ed Zynda.
We are grateful to Ed as well as the other contributors to mcp-go, and to
authors and contributors of other SDKs such as
mcp-golang and
go-mcp . Thanks to their work, there
is a thriving ecosystem of Go MCP clients and servers.
License
This project is licensed under Apache 2.0 for new contributions, with existing
code under MIT - see the LICENSE file for details.
About
The official Go SDK for Model Context Protocol servers and clients. Maintained in collaboration with Google.
modelcontextprotocol.io
Topics
go mcp
Resources
Readme
License
Code of conduct
Code of conduct
Contributing
Contributing
Security policy
Security policy
Activity
Custom properties
Stars
5.1k stars
Watchers
57 watching
Forks
535 forks
Report repository
Releases
Used by
Contributors
Languages
Footer
(c) 2026 GitHub, Inc.
Footer navigation
*
Terms
*
Privacy
*
Security
*
Status
*
Community
*
Docs
*
Contact
*
Manage cookies
*
Do not share my personal information
You can’t perform that action at this time.
Links found on this page
- Skip to content [direct]
- Sign in [direct]
- GitHub Copilot Write better code with AI [direct]
- GitHub Copilot app Direct agents from issue to merge [direct]
- MCP Registry Integrate external tools [direct]
- Actions Automate any workflow [direct]
- Codespaces Instant dev environments [direct]
- Issues Plan and track work [direct]
- Code Review Manage code changes [direct]
- Code Quality Enforce quality at merge [direct]
- GitHub Advanced Security Find and fix vulnerabilities [direct]
- Code security Secure your code as you build [direct]
- Secret protection Stop leaks before they start [direct]
- Why GitHub [direct]
- Documentation [direct]
- Blog [direct]
- Changelog [direct]
- Marketplace [direct]
- View all features [direct]
- Enterprises [direct]
- Small and medium teams [direct]
- Startups [direct]
- Nonprofits [direct]
- App Modernization [direct]
- DevSecOps [direct]
- DevOps [direct]
- CI/CD [direct]
- View all use cases [direct]
- Healthcare [direct]
- Financial services [direct]
- Manufacturing [direct]
- Government [direct]
- View all industries [direct]
- View all solutions [direct]
- AI [direct]
- Software Development [direct]
- DevOps [direct]
- Security [direct]
- View all topics [direct]
- Customer stories [direct]
- Events & webinars [direct]
- Ebooks & reports [direct]
- Business insights [direct]
- GitHub Skills [direct]
- Customer support [direct]
- Community forum [direct]
- Trust center [direct]
- Partners [direct]
- View all resources [direct]
- GitHub Sponsors Fund open source developers [direct]
- Security Lab [direct]
- Maintainer Community [direct]
- GitHub Stars [direct]
- Archive Program [direct]
- Topics [direct]
- Trending [direct]
- Collections [direct]
- Copilot for Business Enterprise-grade AI features [direct]
- Premium Support Enterprise-grade 24/7 support [direct]
- Pricing [direct]
- Sign up [direct]
- modelcontextprotocol [direct]
- Notifications [direct]
- Issues
51 [direct]
- Pull requests
50 [direct]
- Discussions [direct]
- Actions [direct]
- Projects [direct]
- Security and quality
4 [direct]
- Insights [direct]
- Branches [direct]
- Tags [direct]
- 791 Commits [direct]
- .agents/ skills/ fix-bug [direct]
- .devcontainer [direct]
- .github [direct]
- auth [direct]
- conformance [direct]
- design [direct]
- docs [direct]