Skip to main content
Glama

Agent5ive MCP Server

by agent5ive
index.ts4.66 kB
import express from "express"; import cors from "cors"; import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js"; import { z } from "zod"; import axios from "axios"; const API_BASE_URL = 'https://www.agent5ive.com/api/deployed-agents'; function createServer(deploymentId?: string) { // Use provided deploymentId (from URL params in HTTP mode) or fall back to env var (for stdio mode) const DEPLOYMENT_ID = deploymentId || process.env.DEPLOYMENT_ID; const server = new McpServer({ name: "agent5ive-mcp-server", version: "1.0.0", }); // Register tools server.registerTool( "get_agent_purpose", { description: "Get the details and purpose of the deployed agent.", inputSchema: {}, }, async () => { if (!DEPLOYMENT_ID) { return { content: [{ type: "text", text: "Error: DEPLOYMENT_ID is not set." }], isError: true, }; } try { const response = await axios.get(`${API_BASE_URL}/${DEPLOYMENT_ID}`); return { content: [ { type: "text", text: JSON.stringify(response.data, null, 2), }, ], }; } catch (error: any) { return { content: [ { type: "text", text: `Error: ${error.response?.data?.error || error.message}`, }, ], isError: true, }; } } ); server.registerTool( "interact_with_agent", { description: "Interact with the deployed agent.", inputSchema: { message: z.string().describe("The message to send to the agent."), history: z.array(z.object({ role: z.enum(["user", "assistant"]), content: z.string(), })).optional().describe("The conversation history."), }, }, async ({ message, history = [] }) => { if (!DEPLOYMENT_ID) { return { content: [{ type: "text", text: "Error: DEPLOYMENT_ID is not set." }], isError: true, }; } const payload = { messages: [ ...history, { role: 'user', content: message, }, ], }; try { const response = await axios.post(`${API_BASE_URL}/${DEPLOYMENT_ID}`, payload); return { content: [ { type: "text", text: response.data.content, }, ], }; } catch (error: any) { return { content: [ { type: "text", text: `Error: ${error.response?.data?.error || error.message}`, }, ], isError: true, }; } } ); return server; } async function main() { const useHttp = process.argv.includes("--http"); if (useHttp) { const app = express(); const PORT = process.env.PORT || 8081; app.use(cors({ origin: '*', exposedHeaders: ['Mcp-Session-Id', 'mcp-protocol-version'], allowedHeaders: ['Content-Type', 'mcp-session-id'], })); app.use(express.json()); app.all('/mcp', async (req: express.Request, res: express.Response) => { try { // Extract DEPLOYMENT_ID from URL query parameters (provided by Smithery config) const deploymentId = req.query.DEPLOYMENT_ID as string | undefined; const server = createServer(deploymentId); const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined }); res.on('close', () => { transport.close(); server.close(); }); await server.connect(transport); await transport.handleRequest(req, res, req.body); } catch (error) { console.error('Error handling MCP request:', error); if (!res.headersSent) { res.status(500).json({ jsonrpc: '2.0', error: { code: -32603, message: 'Internal server error' }, id: null, }); } } }); app.listen(PORT, () => { console.log(`MCP HTTP Server listening on port ${PORT}`); }); } else { const server = createServer(); const transport = new StdioServerTransport(); await server.connect(transport); console.error("Agent5ive MCP Server running on stdio"); } } main().catch((error) => { console.error("Fatal error in main():", error); process.exit(1); });

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/agent5ive/agent5ive-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server