Skip to main content
Glama
JGPAS

mcp-first-server

README.md
# mcp-first-server

A Model Context Protocol (MCP) server built with the official MCP SDK, available both as a
local stdio server (for Claude Desktop) and as a cloud-deployed HTTP server reachable over the
network.

**Live demo:** https://mcp-first-server.onrender.com (note: free-tier hosting, first request
after inactivity may take up to ~50s to wake the instance)

## Tools
- **get_quote** — returns a random motivational quote.
- **get_crypto_price** — fetches the live USD price of any cryptocurrency (via CoinGecko).

## Two ways to run this server
- `server.js` — stdio transport, for local use with Claude Desktop or any MCP client that
  spawns a local process.
- `server-http.js` — StreamableHTTP transport wrapped in Express, for cloud/network deployment
  (this is what's running at the live demo URL above). Listens on `process.env.PORT`.

## Local setup
```
npm install
npm start          # runs server.js (stdio)
node server-http.js  # or run the HTTP version locally
```

## Try the live HTTP endpoint
```
curl -X POST https://mcp-first-server.onrender.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
```

## Tech
Node.js, [@modelcontextprotocol/sdk](https://github.com/modelcontextprotocol/sdk), Express,
Zod for schema validation. Deployed on Render.

## License
MIT — see [LICENSE](./LICENSE).

## Author
Built by James Ganobi.

TDQS

A3.7/5.0

Scored across 2 tools

Disambiguation5/5

The two tools serve completely different purposes: one returns motivational quotes and the other returns cryptocurrency prices. There is no overlap or ambiguity in what each tool does.

Naming Consistency5/5

Both tools follow the same get_<object> naming pattern, making the naming predictable and consistent. An agent can easily infer the action and target from each name.

Tool Count3/5

With only two tools, the server feels thin and borderline for a general-purpose toolset. Each tool is independently useful, but the small count limits the server's overall utility.

Completeness3/5

The tools are isolated, self-contained lookups with no obvious surrounding lifecycle, so completeness is hard to assess. There are no clear dead ends, but the surface is minimal and lacks a cohesive domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues