Atlas / MCP servers / modelcontextprotocol / rust-sdk

rust-sdkBLOCK

mcp/modelcontextprotocol/rust-sdk

The official Rust SDK for the Model Context Protocol

Verdict
BLOCK
Grade
D
Trust score
69 /100
Exposed tools
1 0r · 1w · 0d
Transport
stdio · streamable-http
License
NOASSERTION
Stars
4,040
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://crates.io/crates/rmcp) [](https://docs.rs/rmcp/latest/rmcp) [](https://github.com/modelcontextprotocol/rust-sdk/actions/workflows/ci.yml) [](LICENSE)

An official Rust Model Context Protocol SDK implementation with tokio async runtime.

Migrating to 3.x? See the migration guide for breaking changes and upgrade instructions.

This repository contains the following crates:

  • rmcp: The core crate providing the RMCP protocol implementation - see rmcp
  • rmcp-macros: A procedural macro crate for generating RMCP tool implementations - see rmcp-macros

This SDK implements the stable MCP `2026-07-28` specification while remaining fully compatible with the `2025-11-25` release and earlier versions. Features introduced in 2026-07-28 — server discovery & negotiation, transport-neutral subscriptions, long-running tasks, response caching, multi-round-trip requests, and standard HTTP routing headers — are documented below. For the full MCP specification, see modelcontextprotocol.io.

Table of Contents

  • Usage
  • Tools
  • Resources
  • Prompts
  • Sampling
  • Elicitation
  • Roots
  • Logging
  • Completions
  • Notifications
  • Subscriptions
  • Multi-Round-Trip Requests
  • Tasks
  • Caching
  • Standard HTTP Headers
  • [Stateless Streamable HTTP](#stateless-
Read from source at commit c376416f1e60OBSERVED · 2026-10-23
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.

claude-code
claude mcp add test_with_ts -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "test_with_ts": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ]
    }
  }
}
03

Exposed tools (1)

0 read · 1 write · 0 destructive.

ToolRiskDescription
addwrite
04

Trust audit

BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
declared (13 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
none-found

Findings (20)

HIGHNetwork egress · net.metadata_ip · CWE-200, CWE-319
crates/rmcp/src/transport/auth.rs:41
"metadata.google.internal",
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
HIGHNetwork egress · net.metadata_ip · CWE-200, CWE-319
crates/rmcp/src/transport/auth.rs:6671
"http://169.254.169.254/",
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
HIGHNetwork egress · net.metadata_ip · CWE-200, CWE-319
crates/rmcp/src/transport/auth.rs:6729
assert!(!allowed("https://169.254.169.254/", true));
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
HIGHNetwork egress · net.metadata_ip · CWE-200, CWE-319
crates/rmcp/src/transport/auth.rs:6750
"http://169.254.169.254/latest/meta-data/",
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
HIGHNetwork egress · net.metadata_ip · CWE-200, CWE-319
crates/rmcp/src/transport/auth/metadata_resolver.rs:305
assert_eq!(class("169.254.169.254"), AddressClass::Blocked);
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
MEDIUMInventory / provenance · inv.symlink · CWE-1104
crates/rmcp-macros/LICENSE
crates/rmcp-macros/LICENSE
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
crates/rmcp/LICENSE
crates/rmcp/LICENSE
Why it matters. link not followed
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
crates/rmcp/src/transport/auth.rs:3981
callback_url: &str,
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
crates/rmcp/src/transport/auth.rs:3983
let callback = AuthorizationCallback::from_redirect_url(callback_url)?;
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
crates/rmcp/src/transport/auth.rs:4312
pub async fn handle_callback_url(&mut self, callback_url: &str) -> Result<(), AuthError> {
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
crates/rmcp/src/transport/auth.rs:4313
let callback = AuthorizationCallback::from_redirect_url(callback_url)?;
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
conformance/src/bin/client.rs:1111
.unwrap_or_else(|| "http://127.0.0.1:8001/mcp".to_string());
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
.github/workflows/conformance.yml:45
if curl -s -o /dev/null http://127.0.0.1:8001/mcp; then
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
.github/workflows/conformance.yml:56
--url http://127.0.0.1:8001/mcp \
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
.github/workflows/conformance.yml:64
--url http://127.0.0.1:8001/mcp \
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
.github/workflows/conformance.yml:85
--url http://127.0.0.1:8001/mcp \
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
crates/rmcp/tests/test_with_js/package.json
@modelcontextprotocol/sdk, eventsource-parser, express
Why it matters. 3 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWPrompt injection · prompt.persistence · CWE-94, CWE-1427
examples/README.md:11
2. **Add or update this section in your** `PATH-TO/claude_desktop_config.json`
Why it matters. instructs the agent to persist itself in the user's environment
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
conformance/results/2026-02-25-rust-sdk-assessment.md:93
| auth/token-endpoint-auth-post | PASS | 19/19 | 2025-06-18, 2025-11-25 | |
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
crates/rmcp/CHANGELOG.md:38
- *(streamable-http-server)* answer a session-less non-initialize POST with 400 ([#1377](https://github.com/modelcontextprotocol/rust-sdk/pull/1377))
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine

Gates applied: no_behavioural_pass.

Audited 2026-10-23 · audit v0.4.1 · source sha c376416f1e60full audit observations/trust-audit/mcp-server/modelcontextprotocol__rust-sdk.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-23c376416f1e60BLOCKD69first audit
06

Questions

What is the rust-sdk MCP server?

The official Rust SDK for the Model Context Protocol

What tools does rust-sdk expose?

1 in total: 0 read-only, 1 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is rust-sdk safe to connect to an agent?

No — not without reading the findings first. The audit graded it D (69/100) and found 5 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does rust-sdk need?

No credential environment variables were found in its source, so it appears to need none.

How does rust-sdk run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as test_with_ts at 1.0.0.

How current is this page?

The grade is for one exact copy of the source (c376416f1e60), read on 2026-10-23. The repository is watched and re-audited when it changes.

Add this badge to your README

Shows this page's audit result and links back to it. It updates when the audit does.

ModelsAtlas audit badge

Markdown
[![ModelsAtlas audit: rust-sdk](https://modelsatlas.com/mcp/modelcontextprotocol/rust-sdk/badge.svg)](https://modelsatlas.com/mcp/modelcontextprotocol/rust-sdk/)

Not your listing, or something out of date? Claim or update your listing.

Advertisement