Skip to content

Commit a984b27

Browse files
Apply suggestions from code review
Co-authored-by: Kate Goldenring <[email protected]> Signed-off-by: bowlofarugula <[email protected]>
1 parent 0d35884 commit a984b27

File tree

1 file changed

+10
-12
lines changed

1 file changed

+10
-12
lines changed

content/blog/mcp-with-wasmcp.md

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ author = "Ian McDonald"
1010

1111
---
1212

13-
[Wasmcp](https://github.com/wasmcp/wasmcp) is a [WebAssembly Component](https://component-model.bytecodealliance.org/) Development Kit for the [Model Context Protocol](https://modelcontextprotocol.io/docs/getting-started/intro).
13+
[Wasmcp](https://github.com/wasmcp/wasmcp) is a [WebAssembly component](https://component-model.bytecodealliance.org/) development kit for the [Model Context Protocol](https://modelcontextprotocol.io/docs/getting-started/intro).
1414

1515
It works with [Spin](https://github.com/spinframework/spin) to let you:
1616

1717
* Build composable MCP servers as WebAssembly components.
1818
* Mix tools and features written in Rust, Python, TypeScript, etc. in a single server binary.
1919
* Plug in shared components for authorization, sessions, logging, and more across multiple MCP servers.
20-
* Run the same sandboxed MCP server binary locally, on [Fermyon Wasm Functions](https://www.fermyon.com/wasm-functions), on Kubernetes clusters (e.g. via [SpinKube](https://www.spinkube.dev/)), or on any runtime that speaks WASI + components.
20+
* Run the same sandboxed MCP server binary locally, on the network edge via [Fermyon Wasm Functions](https://www.fermyon.com/wasm-functions), on Kubernetes clusters (e.g. via [SpinKube](https://www.spinkube.dev/)), or on any runtime that speaks WASI + components.
2121
* Expose both stdio and Streamable HTTP transports via standard [WASI](https://wasi.dev/) exports.
2222

2323
See the [quickstart](#quickstart) or read on for some context.
@@ -38,7 +38,7 @@ Large language models (LLMs) are trained on vast heaps of data that they use to
3838

3939
All LLMs depend on calling external [functions](https://gorilla.cs.berkeley.edu/leaderboard.html), also called tools, to interact with the outside world beyond the prompt and to perform deterministic actions. Just like you might use a calculator to accurately crunch numbers, or a web browser to explore the internet, an LLM might use its own calculator and HTTP fetch tools in the same way. Even basic capabilities like reading a file from disk are implemented via tools.
4040

41-
Without tools a language model is like someone sitting in an empty, windowless box with only their memories from an array of random encyclopedias, books, and other training data to pull from. Our interactions with them are something along the lines of: A human slips a question written on a piece of paper under the door for the model to read, and the model slips back a response using only their prior knowledge and imagination.
41+
Without tools, a language model is like someone sitting in an empty, windowless box with only their memories from an array of random encyclopedias, books, and other training data to pull from. Our interactions with them are something along the lines of: A human slips a question written on a piece of paper under the door for the model to read, and the model slips back a response using only their prior knowledge and imagination.
4242

4343
That's a long way from the promise of autonomous systems that understand and act on the world in realtime, let alone transform it.
4444

@@ -60,17 +60,15 @@ We’d need to write a new implementation of each tool for OpenAI’s GPT models
6060

6161
We want to implement a given tool only once and make it discoverable and accessible dynamically for any AI application, potentially across the network, at scale.
6262

63-
The [Fundamental Theorem of Software Engineering](https://en.wikipedia.org/wiki/Fundamental_theorem_of_software_engineering) states:
64-
65-
> We can solve any problem by introducing an extra level of [indirection](https://en.wikipedia.org/wiki/Indirection).
63+
The [Fundamental Theorem of Software Engineering](https://en.wikipedia.org/wiki/Fundamental_theorem_of_software_engineering) states: "We can solve any problem by introducing an extra level of [indirection](https://en.wikipedia.org/wiki/Indirection)."
6664

6765
We need a layer of indirection between models and their tools.
6866

6967
## The Model Context Protocol
7068

7169
In November 2024, Anthropic suggested an open-source standard for connecting AI applications to external systems: The [Model Context Protocol (MCP)](https://modelcontextprotocol.io/docs/getting-started/intro). It aims to be the USB-C for tool calling, and more.
7270

73-
MCP defines a set of context [primitives](https://modelcontextprotocol.io/specification/draft/server) that are implemented as server features.
71+
MCP defines a set of context [primitives](https://modelcontextprotocol.io/specification/draft/server) that are implemented as server features. The following table from [MCP's documentation](https://modelcontextprotocol.io/specification/draft/server) summarizes the scope of each primitive.
7472

7573
| Primitive | Control | Description | Example |
7674
| --------- | ---------------------- | -------------------------------------------------- | ------------------------------- |
@@ -108,12 +106,12 @@ While WebAssembly (Wasm) is commonly thought of as a browser technology, it has
108106

109107
The Wasm [component model](https://component-model.bytecodealliance.org/) builds on these strengths to implement a broad-reaching architecture for building interoperable WebAssembly libraries, applications, and environments. Wasm components within a single sandboxed process are further isolated from each other and interop only through explicit interfaces. A visual analogy for this idea might look like a bento box (independent compartments sharing a box but not contents unless you decide to mix them).
110108

111-
The component model shares architectural similarities with MCP’s [server design principles](https://modelcontextprotocol.io/specification/2025-06-18/architecture#design-principles):
109+
The component model shares architectural similarities with MCP’s [server design principles](https://modelcontextprotocol.io/specification/2025-06-18/architecture#design-principles), which are quoted below.
112110

113-
> 1. Servers should be extremely easy to build
114-
> 2. Servers should be highly composable
115-
> 3. Servers should not be able to read the whole conversation, nor “see into” other servers
116-
> 4. Features can be added to servers and clients progressively
111+
1. Servers should be extremely easy to build
112+
2. Servers should be highly composable
113+
3. Servers should not be able to read the whole conversation, nor “see into” other servers
114+
4. Features can be added to servers and clients progressively
117115

118116
Imagine mapping individual MCP features to Wasm components, which can be composed together to form a complete MCP server component.
119117

0 commit comments

Comments
 (0)