Function: apiCall()
apiCall(
method,url,options?):Promise<unknown>
Defined in: index.ts:86
Generic HTTP helper for use inside MCP tool handlers.
Accepts any full URL (third-party APIs, public APIs, etc.) or a path
relative to the apiBaseUrl configured in createMcpRouter.
Headers configured via getApiHeaders in createMcpRouter are injected
automatically into every request, allowing transparent forwarding of auth
tokens, API keys, or any other header — without coupling this helper to a
specific authentication scheme. Per-call options.headers take precedence
over context-injected headers.
Parameters
| Parameter | Type | Description |
|---|---|---|
method | string | HTTP method (e.g. 'GET', 'POST', 'PUT', 'DELETE') |
url | string | Full URL or a path starting with / (appended to apiBaseUrl) |
options? | ApiCallOptions | Optional body and per-call header overrides |
Returns
Promise<unknown>
Parsed JSON response body
Examples
import { apiCall, createMcpRouter, McpServer } from '@ttoss/http-server-mcp';
// Tool handler – no manual auth wiring needed
mcpServer.registerTool('list-portfolios', { description: '...', inputSchema: {} }, async () => {
const data = await apiCall('GET', '/portfolios');
return { content: [{ type: 'text', text: JSON.stringify(data) }] };
});
const mcpRouter = createMcpRouter(mcpServer, {
apiBaseUrl: `http://localhost:${process.env.PORT}/api/v1`,
// Forward the caller's Bearer token to every apiCall
getApiHeaders: (ctx) => ({ Authorization: ctx.headers.authorization ?? '' }),
});
const mcpRouter = createMcpRouter(mcpServer, {
apiBaseUrl: 'https://internal-service/api',
getApiHeaders: (ctx) => ({
'x-api-key': ctx.headers['x-api-key'] as string,
}),
});
const weather = await apiCall('GET', 'https://api.weather.com/current?city=Berlin');
const created = await apiCall('POST', 'https://api.example.com/items', {
body: { name: 'widget' },
headers: { Authorization: 'Bearer fixed-service-token' },
});