Felix MCP (Smithery)
Provides text summarization capabilities using OpenAI's chat completions API.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Felix MCP (Smithery)What's the weather in Tokyo?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
# Felix MCP (Smithery)
A tiny Model Context Protocol server with a few useful tools, deployed on Smithery, tested in Claude Desktop, and indexed in NANDA.
Tools included
hello(name)– quick greetingrandomNumber(max?)– random integer (default 100)weather(city)– current weather via wttr.insummarize(text, maxSentences?, model?)– OpenAI-powered summary (requiresOPENAI_API_KEY)
Public server page
https://smithery.ai/server/@FelixYifeiWang/felix-mcp-smithery
MCP endpoint (streamable HTTP)
https://server.smithery.ai/@FelixYifeiWang/felix-mcp-smithery/mcp
(In Smithery/NANDA, auth is attached via query param api_key and optional profile, configured in the platform UI; do not hardcode secrets here.)
Demo
In Claude Desktop (recommended)
Open Settings → Developer → mcpServers and add:
{ "mcpServers": { "felix-mcp-smithery": { "command": "npx", "args": [ "-y", "@smithery/cli@latest", "run", "@FelixYifeiWang/felix-mcp-smithery", "--key", "YOUR_SMITHERY_API_KEY", "--profile", "YOUR_PROFILE_ID" ] } } }Start a new chat and run:
“List tools from felix-mcp-smithery”
“Call hello with
{ "name": "Felix" }”“Call summarize on this text (2 sentences): …”
Related MCP server: Basic MCP Server
Features
Streamable HTTP MCP – Express + MCP SDK’s
StreamableHTTPServerTransporton/mcp(POST/GET/DELETE).Session-aware – proper handling of
Mcp-Session-Id(no close recursion).OpenAI summarization – tidy summaries via chat completions (model default
gpt-4o-mini).Zero-friction hosting – packaged as a container and deployed on Smithery.
Install (local)
Requires Node 18+ (tested on Node 20).
git clone https://github.com/FelixYifeiWang/felix-mcp-smithery
cd felix-mcp-smithery
npm installSet env (only needed if you’ll call summarize locally):
export OPENAI_API_KEY="sk-..."Run:
node index.js
# ✅ MCP Streamable HTTP server on 0.0.0.0:8081 (POST/GET/DELETE /mcp)Local curl:
curl -s -X POST "http://localhost:8081/mcp" \
-H 'Content-Type: application/json' \
-H 'Mcp-Protocol-Version: 2025-06-18' \
--data '{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"protocolVersion":"2025-06-18"}}'Usage (tools)
hello
{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"hello","arguments":{"name":"Felix"}}}randomNumber
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"randomNumber","arguments":{"max":10}}}weather
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"weather","arguments":{"city":"Boston"}}}summarize (needs OPENAI_API_KEY set on the server)
{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"summarize","arguments":{"text":"(paste long text)","maxSentences":2}}}How it works
Server core:
McpServerfrom@modelcontextprotocol/sdkwith tools registered inbuildServer(). Transport:StreamableHTTPServerTransporton/mcphandling:POST /mcp— JSON-RPC requests (and first-timeinitialize)GET /mcp— server-to-client notifications (SSE)DELETE /mcp— end session
CORS: Allows all origins; exposes
Mcp-Session-Idheader (good for hosted clients).OpenAI summarize: Thin
fetchwrapper around/v1/chat/completionswith a short “crisp summarizer” system prompt.
Deployment (Smithery)
GitHub repo with:
index.js(Express + MCP)package.json(@modelcontextprotocol/sdk,express,cors,zod)Dockerfilesmithery.yaml:kind: server name: felix-mcp-smithery version: 1.0.0 runtime: container startCommand: type: http transport: streamable-http port: 8081 path: /mcp ssePath: /mcp health: /
In Smithery:
Create server from the repo.
Add Environment Variables:
OPENAI_API_KEY(optional forsummarize).Deploy → confirm logs show:
✅ MCP Streamable HTTP server on 0.0.0.0:8081 (POST/GET/DELETE /mcp)
NANDA Index
Go to join39.org → Context Agents → Add
Agent Name:
Felix MCP (Smithery)MCP Endpoint:
https://server.smithery.ai/@FelixYifeiWang/felix-mcp-smithery/mcp?api_key=YOUR_KEY&profile=YOUR_PROFILEDescription:
Streamable-HTTP MCP hosted on Smithery. Tools: hello, randomNumber, weather, summarize (OpenAI).
Test from NANDA:
initialize→tools/list→ callhello.
Project structure
.
├─ index.js # Express + Streamable HTTP + tools
├─ package.json # sdk/express/cors/zod
├─ Dockerfile # container build for Smithery
└─ smithery.yaml # Smithery project configAssignment rubric mapping
✅ Find/Build: Custom MCP server with 4 tools
✅ Deploy: Hosted on Smithery (public server page linked)
✅ Test in a host: Verified in Claude Desktop (screenshots/recording included)
✅ NANDA Index: Added as a Context Agent (screenshot included)
✅ Deliverables: Repo link + working endpoint + host screenshots
What worked
Streamable HTTP transport with session management is stable once the close-loop gotcha is avoided.
Smithery makes deployment + auth key distribution straightforward.
Claude Desktop connects cleanly via
@smithery/cli run ….
AI Acknowledgement
Parts of this project (tool scaffolding, error fixes, and documentation polish) were produced with AI assistance. The final code, deployment, and testing steps were implemented and verified by me.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/FelixYifeiWang/felix-mcp-smithery'
If you have feedback or need assistance with the MCP directory API, please join our Discord server