Run your first server
Start with the coffee example. It answers questions about the origin, roast, processing method, and tasting notes of two made-up coffees. It includes both ordinary tests and tests of AI tool choice and explanations.
You need Git, Node.js 22 or 24, and npm. This is a local development quickstart, not production deployment guidance.
Copy the example
Section titled “Copy the example”Run these commands from a directory where you keep projects. Choose another
name if my-mcp or emseepea already exists.
git clone https://github.com/emseepea/emseepea.gitcp -R emseepea/examples/basic-no-ui my-mcpcd my-mcpYour project is now separate from the monorepo. Its package.json pins exact
pre-alpha versions of @emseepea/server and @emseepea/testing.
Install and check it
Section titled “Install and check it”Run these commands inside my-mcp:
npm install --ignore-scriptsnpm testnpm run lintThe tests build your server and call it through MCP. They do not require a language-model account. A passing run ends with no failed tests.
Start your server
Section titled “Start your server”npm startThe terminal prints its local MCP address, normally
http://127.0.0.1:3000/mcp. Keep that terminal open while using the server.
Stop it with Control-C. If port 3000 is in use, stop the other local example first.
Connect using an MCP client that supports MCP 2026-07-28 and Streamable HTTP.
Add the printed address to that client’s server connections, then try asking:
What are the origin, processing method, roast, and tasting notes of Highland Bloom?
Client setup varies. Older clients may not support this protocol version. The example’s tests use the matching official MCP client.
Make it yours
Section titled “Make it yours”Open src/server.ts in your project:
beanscontains the sample data. Replace it with your own data.inputSchemadescribes the names the tool accepts.outputSchemadescribes the details it returns.handlerlooks up the coffee and returns text plus structured data.
Em See Pea checks the input and output. Your handler supplies the behaviour.
Update test/server.test.mjs for your data, then run npm test again.
Check the AI’s tool choice and explanation
Section titled “Check the AI’s tool choice and explanation”The example’s eval/meaning.test.mjs checks that a model does not confuse
origin, variety, processing, and roast. Adapt its question and expected facts
when you change the tool.
This check requires a signed-in Claude CLI and uses model allowance. See the AI testing guide for setup and what the results prove.
npm run test:llmThe model sees the advertised tools and must select get-bean-details with
arguments that the real server accepts. The test then checks whether the model
understands the returned coffee details.
Add another capability
Section titled “Add another capability”Browse the examples to connect a public API, add sign-in, send progress updates, or add a web form.