diff --git a/pw_log_rpc/log_service.cc b/pw_log_rpc/log_service.cc
index 509f512..1da5471 100644
--- a/pw_log_rpc/log_service.cc
+++ b/pw_log_rpc/log_service.cc
@@ -19,10 +19,10 @@
 
 namespace pw::log_rpc {
 
-void LogService::Listen(ServerContext& context,
+void LogService::Listen(ServerContext&,
                         ConstByteSpan,
                         rpc::RawServerWriter& writer) {
-  uint32_t channel_id = context.channel_id();
+  uint32_t channel_id = writer.channel_id();
   Result<RpcLogDrain*> drain = drains_.GetDrainFromChannelId(channel_id);
   if (!drain.ok()) {
     return;
diff --git a/pw_rpc/docs.rst b/pw_rpc/docs.rst
index 5e1a512..031582d 100644
--- a/pw_rpc/docs.rst
+++ b/pw_rpc/docs.rst
@@ -194,14 +194,14 @@
 
   class TheService : public generated::TheService<TheService> {
    public:
-    pw::Status MethodOne(ServerContext& ctx,
+    pw::Status MethodOne(ServerContext&,
                          const foo_bar_Request& request,
                          foo_bar_Response& response) {
       // implementation
       return pw::OkStatus();
     }
 
-    void MethodTwo(ServerContext& ctx,
+    void MethodTwo(ServerContext&,
                    const foo_bar_Request& request,
                    ServerWriter<foo_bar_Response>& response) {
       // implementation
diff --git a/pw_rpc/nanopb/docs.rst b/pw_rpc/nanopb/docs.rst
index 876a95b..0d8f20e 100644
--- a/pw_rpc/nanopb/docs.rst
+++ b/pw_rpc/nanopb/docs.rst
@@ -91,7 +91,7 @@
 
 .. code:: c++
 
-  pw::Status GetRoomInformation(pw::rpc::ServerContext& ctx,
+  pw::Status GetRoomInformation(pw::rpc::ServerContext&,
                                 const RoomInfoRequest& request,
                                 RoomInfoResponse& response);
 
@@ -102,7 +102,7 @@
 
 .. code:: c++
 
-  void ListUsersInRoom(pw::rpc::ServerContext& ctx,
+  void ListUsersInRoom(pw::rpc::ServerContext&,
                        const ListUsersRequest& request,
                        pw::rpc::ServerWriter<ListUsersResponse>& writer);
 
diff --git a/pw_rpc/public/pw_rpc/server_context.h b/pw_rpc/public/pw_rpc/server_context.h
index 300ba2e..0578931 100644
--- a/pw_rpc/public/pw_rpc/server_context.h
+++ b/pw_rpc/public/pw_rpc/server_context.h
@@ -20,18 +20,15 @@
 
 namespace pw::rpc {
 
-// The ServerContext collects context for an RPC being invoked on a server. The
-// ServerContext is passed into RPC functions and is user-facing.
+// The ServerContext class is DEPRECATED and will be removed from pw_rpc. All
+// information in the ServerContext is accessible through the
+// ServerReader/Writer object.
 //
-// The ServerContext is a public-facing view of the internal::CallContext class.
-// It uses inheritance to avoid copying or creating an extra reference to the
-// underlying CallContext. Private inheritance prevents exposing the
-// internal-facing CallContext interface.
+// The only case where the information in a ServerContext is not available is
+// synchronous unary RPCs. If information like channel_id() is needed in a unary
+// RPC, just use an asynchronous unary RPC.
 class ServerContext : private internal::CallContext {
  public:
-  // Returns the ID for the channel this RPC is using.
-  uint32_t channel_id() const { return channel().id(); }
-
   constexpr ServerContext() = delete;
 
   constexpr ServerContext(const ServerContext&) = delete;
diff --git a/pw_unit_test/public/pw_unit_test/unit_test_service.h b/pw_unit_test/public/pw_unit_test/unit_test_service.h
index 7d7708b..4df005d 100644
--- a/pw_unit_test/public/pw_unit_test/unit_test_service.h
+++ b/pw_unit_test/public/pw_unit_test/unit_test_service.h
@@ -24,7 +24,7 @@
  public:
   UnitTestService() : handler_(*this), verbose_(false) {}
 
-  void Run(ServerContext& ctx, ConstByteSpan request, RawServerWriter& writer);
+  void Run(ServerContext&, ConstByteSpan request, RawServerWriter& writer);
 
  private:
   friend class internal::RpcEventHandler;
