Well, step through the official SDK a bit…
Good news for Meteor is that it’s already based on Express and Typescript. Check and check. So, at a minimum level… make sure that the Express instance is well integrated, not running in a second thread (or if it is, it’s being done so intentionally), make sure it’s working with other middlewares like oauth or @accounts, etc. That’s one part.
Second part is that there’s some quirky protocol syntax in there. I don’t think this should be too much of a problem, and will mostly be handled by the browser and network stack.
config://app
users://{userId}/profile
github://repos/{owner}/{repo}
There’s also some Streamable HTTP, CORS, and Session management issues that need to be aligned with Meteor flavored Node.js.
That’s basically the easy stuff, and mostly all well defined in the SDK. After that’s in place, it’s a matter of creating a sample app and registering tools; and where the opinionated Meteor architecture comes into play.
My $0.02 is that the fetch-weather example is a good starting point, in that it shows how to fetch out to basic vanilla HTTP call. That’s sort of the MCP-2-HTTP example, that will do a lot of the heavy lifting.
Personally, I’d like to see it integrated with Swagger/OpenAPI. Then, when HTTP endpoints are defined on the Express server, they can immediately be consumed by the MCP server.
The idea here, is that the MCP endpoint(s) is the orchestrator, and all of the Swagger/OpenAPI endpoints are the instruments in the orchestra. I’ve been told that well defined Swagger endpoints make MCP implementation a breeze.
Happily, the Node on FHIR stack has an entire bank of well defined HTTP endpoints. So mapping them to Swagger/OpenAPI, then to MCP will be very straightforward. For others in the Meteor ecosystem, it will be more of a bring-your-own-API.
Aside: It’s kind of funny, the more I read into this MCP architecture, the more I’m reminded of Apollo/GraphQL. Both are orchestrator APIs, with a “one HTTP endpoint to rule them all” concept. Apollo approached the problem with structured graphs; but MCP is approaching the problem with unstructured text (!) and language models.
For those who still haven’t quite groked the MCP model… my $0.02 understanding of what the architecture overview and sdk are describing, is that it’s a single /mcp
syntax endpoint that is implemented by all the MCP compliant servers. And you feed into it your prompt query and context (which can include toolchains), and then the server recursively calls itself and other /mcp endpoints on other servers, and just makes recursive calls until completion.
And it kind of works, apparently. ¯_(ツ)_/¯