58 lines
2.3 KiB
Markdown
58 lines
2.3 KiB
Markdown
# AGENTS.md
|
|
|
|
## Project Overview
|
|
|
|
This repository contains the official Go SDK for the Model Context Protocol (MCP).
|
|
The SDK is designed to be idiomatic, future-proof, and extensible.
|
|
|
|
### Key Packages
|
|
|
|
- `mcp`: The core package defining the primary APIs for constructing and using MCP clients and servers. This is where most logic resides.
|
|
- `jsonrpc`: Provides the JSON-RPC 2.0 transport layer. Use this if implementing custom transports.
|
|
- `auth`: Primitives for supporting OAuth.
|
|
- `oauthex`: Extensions to the OAuth protocol, such as Protected Resource Metadata.
|
|
- `internal`: Internal implementation details not exposed to users.
|
|
- `examples`: Example clients and servers. Use these as references for usage patterns.
|
|
|
|
## Development Setup
|
|
|
|
The project uses the standard Go toolchain.
|
|
|
|
- **Build**: `go build ./...`
|
|
- **Test**: `go test ./...`
|
|
|
|
## Testing
|
|
|
|
- **Unit Tests**: Run `go test ./...` to run all unit tests.
|
|
- **Conformance Tests**: Use the following scripts to run the official MCP conformance tests against the SDK.
|
|
- `./scripts/server-conformance.sh` for server tests.
|
|
- `./scripts/client-conformance.sh` for client tests.
|
|
- The scripts download the latest conformance suite from npm by default.
|
|
- To get possible options pass the `--help` flag to the script.
|
|
|
|
## Development Guidelines
|
|
|
|
### Code Style
|
|
|
|
- Follow standard Go conventions (Effective Go).
|
|
- Use `gofmt` to format code.
|
|
- Add copyright headers to all new Go files:
|
|
```go
|
|
// Copyright 2025 The Go MCP SDK Authors. All rights reserved.
|
|
// Use of this source code is governed by the license
|
|
// that can be found in the LICENSE file.
|
|
```
|
|
- Do not add comments to the code unless they are really necessary:
|
|
- Prefer self-documenting code.
|
|
- Focus on the "why" not the "what" in comments.
|
|
|
|
### Documentation
|
|
|
|
- **README.md**: Do NOT edit `README.md` directly. It is generated from `internal/readme/README.src.md`.
|
|
- Edit `internal/readme/README.src.md`.
|
|
- Run `go generate ./internal/readme` to regenerate.
|
|
- Commit both files.
|
|
- **docs/**: Do NOT edit `docs/` directory directly. It is generated from files in `internal/docs`.
|
|
- Edit `internal/docs/*.src.md`.
|
|
- Run `go generate ./internal/docs` to regenerate.
|
|
- Commit files from both directories.
|