PrasunThapliyal/mcp-server-no-sdk
If you are the rightful owner of mcp-server-no-sdk and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
This document provides a comprehensive overview of a Model Context Protocol (MCP) server implemented in TypeScript without using any SDKs, focusing on understanding the protocol's inner workings.
30 Aug 2025
Create an MCP Server. The server should be standards compliant. Therefore, test it with MCP Inspector or another standard MCP Client
Do not use Python .. the idea is to understand the inner workings and the protocol rather than use any abstractions by way of libraries or SDKs
Use Typescript Use no SDKs
How to run
1) scaffold
npm i
2) dev mode
npm run dev
-> server on http://localhost:3333/mcp
initialize
curl -s http://localhost:3333/mcp
-H 'Content-Type: application/json'
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","clientInfo":{"name":"ManualTester","version":"0.1.0"}}}'
list tools
curl -s http://localhost:3333/mcp
-H 'Content-Type: application/json'
-H 'MCP-Protocol-Version: 2025-06-18'
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
call tool
curl -s http://localhost:3333/mcp
-H 'Content-Type: application/json'
-H 'MCP-Protocol-Version: 2025-06-18'
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"search_and_summarize_papers","arguments":{"topic":"quantum"}}}'
How to run MCP Inspector
CD to some other location/new terminal
npx @modelcontextprotocol/inspector Keep a note of the console logs, it'll show the URL to use to launch the UI for MCP server. http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=4c53d6c4b58b236dbc9c5cba140d7a0f6fce2c4611ebaa2170ec88b5c0017192
This opens up MCP Inspector UI. Specify Transport = Streamable HTTP MCP Server URL = http://localhost:3333/mcp Maybe add Authorization Header Bearer 4c53d6c4b58b236dbc9c5cba140d7a0f6fce2c4611ebaa2170ec88b5c0017192 Click Connect This issues the Initialize Call The UI has buttons to invoke "List Tools" and Call Tool etc ..
Troubleshoot: MCP Inspector expects the response to List Tools API to return some non-null 'cursor' .. I simply returned "1", but this needs proper handling. Troubleshoot: I couldn't find the option in MCP Inspector UI to specify our MCP server via a json file. However, the same can be done via cli npx @modelcontextprotocol/inspector --config mcp.json --server my-http-server