@forgedevstack/forge-mcp
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., "@@forgedevstack/forge-mcpecho 'Hello, world!'"
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.
@forgedevstack/forge-mcp
Tiny helper for building API-key-protected stdio MCP servers. Wraps the official @modelcontextprotocol/sdk so you define tools with plain JSON schemas — no zod, no boilerplate — and get a working server with one call.
Part of the ForgeStack family of libraries.
Install
npm install @forgedevstack/forge-mcpRelated MCP server: mcp-lite
A working MCP server in under 20 lines
import { createMcpServer, textResult } from '@forgedevstack/forge-mcp';
const { start } = createMcpServer({
name: 'my-server',
version: '1.0.0',
apiKey: { envVar: 'MY_API_KEY' },
tools: [
{
name: 'echo',
description: 'Echo a message',
inputSchema: { type: 'object', properties: { message: { type: 'string' } }, required: ['message'] },
handler: (args) => textResult(String(args.message)),
},
],
});
start();API
createMcpServer(options): ForgeMcpServer
Option | Type | Description |
|
| Server name reported to MCP clients |
|
| Server version reported to MCP clients |
|
| Tools exposed via |
|
| API key resolution; omit if no key is needed |
Returns { server, apiKey, start }:
server— the underlying SDKServerinstance for advanced useapiKey— the resolved API key (pass it to your API clients inside handlers)start()— connects aStdioServerTransportand begins serving
The API key is resolved eagerly, so a misconfigured server fails fast at startup instead of on the first tool call.
Tool definition
interface McpToolDefinition {
name: string;
description: string;
inputSchema: JsonSchema;
handler: (args: Record<string, unknown>) => Promise<McpToolResult> | McpToolResult;
}inputSchema is a plain JSON schema object (type, properties, required, items, enum, ...). Handler exceptions are caught and returned as isError results, and calls to unknown tool names return an isError result instead of crashing the server.
API key config
interface ApiKeyConfig {
envVar?: string;
value?: string;
required?: boolean;
}Precedence: value first, then process.env[envVar] (default env var: MCP_API_KEY). When apiKey is passed and the key is missing, createMcpServer throws unless required: false.
Helpers
textResult(text)—{ content: [{ type: 'text', text }] }errorResult(text)— same, withisError: trueresolveApiKey(config)— standalone key resolution, same rules as aboveDEFAULT_API_KEY_ENV_VAR—'MCP_API_KEY'
Wiring into an MCP client
Point your MCP client (Cursor, Claude Desktop, etc.) at your server script and pass the key through env:
{
"mcpServers": {
"my-server": {
"command": "node",
"args": ["/path/to/my-server.js"],
"env": { "MY_API_KEY": "your-key-here" }
}
}
}License
MIT
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/yaghobieh/forge-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server