The rmcp lib test target does not build without the macros feature
Maintainers usually reply within 3 days
@DaleSeo is already working on this.
Since Oct 4, 2026.
Assessment
This issue has not been assessed yet.
Description
object! is #[macro_export]ed and documented from model.rs:42, but model.rs:60 puts it behind the macros feature, so it is unreachable in a --no-default-features build. The lib test target is where that shows on 8f9a28e: four unit tests call the macro.
$ cd /tmp/rmcp-main && cargo check -p rmcp --lib --no-default-features --profile test
# rustc 1.96.1 (31fca3adb 2026-06-26), the pinned rust-toolchain.toml, on 8f9a28e
error: cannot find macro `object` in this scope
--> crates/rmcp/src/model.rs:5529:17
note: `object` is imported here, but it is a function, not a macro
--> crates/rmcp/src/model.rs:4837:9
error: could not compile `rmcp` (lib test) due to 4 previous errors # :5459 :5488 :5503 :5529
$ cargo check -p rmcp --lib --no-default-features --features macros --profile test
Finished `test` profile [unoptimized + debuginfo] target(s) in 7.63s
# same export, `#[cfg(feature = "macros")]` deleted from model.rs:60, nothing else touched
$ cargo test -p rmcp --lib --no-default-features
test result: ok. 139 passed; 0 failed; 0 ignored
# not run: the integration targets under crates/rmcp/tests, and any host other than Linux
The expansion is serde_json::json! around the ungated model::object function, serde_json is a plain dependency, and macros is dep:rmcp-macros + dep:pastey. Deleting the gate is the one-line option. Keeping it means object(json!({ ... })) at the four call sites, or a #[cfg(feature = "macros")] on the four #[test] functions.
Dropping --lib fails too, in 13 integration targets, on missing server/client items. Different cause, and none of the above fixes it.
@DaleSeo, the feature-matrix job on feat/rationalize-feature-flags (#1067) runs cargo check, which never builds a test target, and ci.yml:268 and :302 both enable macros. Would --profile test on that job, or a cargo test -p rmcp --lib --no-default-features line beside it, be the right home for this?
- Dominant language
- Rust
- Stars
- 4k
- Forks
- 654
- Avg merge
- 4d 2h
- Merged PRs (30d)
- 40
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from modelcontextprotocol/rust-sdk
-
P3 question T-documentation T-enhancement
Difficulty 1/5 Under an hour Newbie friendliness 86/100
modelcontextprotocol/rust-sdk#1155 ·
Maintainers usually reply within 3 days
-
bug P1 ready for work T-transport
Difficulty 4/5 3-5 days Newbie friendliness 55/100
modelcontextprotocol/rust-sdk#1325 ·
Maintainers usually reply within 3 days
-
streamable-http server: client responses to server-initiated requests (sampling/elicitation/roots) are 202-accepted and silently discarded under the 2026-07-28 protocol — the pending request hangs foreverPossibly taken A pull request linked to this issue is open or already merged. Openbug P1 ready for work T-transport
Difficulty 5/5 Over a week Newbie friendliness 35/100
modelcontextprotocol/rust-sdk#1321 ·
Maintainers usually reply within 3 days
-
Bound pre-lifecycle bootstrap attempts in server initializationPossibly taken @DaleSeo claimed this 3 days ago. Openenhancement P2 T-service T-transport
modelcontextprotocol/rust-sdk#1315 · 1 assignee ·
Maintainers usually reply within 3 days
-
ProgressDispatcher: a slow progress subscriber blocks subscribe() and delivery for other tokensOpenbug P1 ready for work T-handler
Difficulty 4/5 3-5 days Newbie friendliness 25/100
modelcontextprotocol/rust-sdk#1312 ·
Maintainers usually reply within 3 days
All issues in modelcontextprotocol/rust-sdk
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Maintainers usually reply within 4 days
-
`future_into_py` loses the original panic messagePossibly taken @Danipulok claimed this today. Open
Difficulty 1/5 Under an hour Newbie friendliness 90/100
PyO3/pyo3-async-runtimes#91 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 Under an hour Newbie friendliness 85/100
Maintainers usually reply within 2 days