Skip to main content
Glama
Adding_new_tools.md3.85 kB
# Adding New Tools to TomTom MCP This guide explains how to add a new **tool** (API integration) to the TomTom MCP repository. It covers structure, coding, testing, and documentation best practices. --- ## 1️⃣ Preparation Before starting, collect all relevant information about the API you want to integrate: * **Base URL** and available **endpoints**. * Authentication requirements (API key, OAuth, etc.). * Supported HTTP methods and query/path parameters. * Expected request/response payloads. * Rate limits, quotas, and timeouts. * Error format and retry recommendations. > Keep this info handy; it will guide service implementation and schema design. --- ## 2️⃣ Create the Service Layer The service is responsible for talking to the external API. 1. Inside `src/services/`, create a folder for your service, e.g. `elevation/`. 2. Add three files: * `service.ts`: the implementation (HTTP calls, error handling, parsing). * `types.ts`: TypeScript interfaces for request/response. * `service.test.ts`: unit/integration tests for the service. **Example structure:** ``` src/services/elevation/ ├── service.ts ├── service.test.ts └── types.ts ``` ### Tips * Keep `service.ts` focused on API logic only. * Export clear, typed functions (e.g., `getElevation(params: ElevationRequest): Promise<ElevationResponse>`). * Use environment variables for secrets (update `.env.example`). * Add retries or caching if the API is rate-limited. --- ## 3️⃣ Define Schemas Schemas validate inputs (and optionally outputs) for the tool. 1. Create a schema file under `src/schemas/`, e.g. `elevationSchema.ts`. 2. Export a JSON Schema or TypeScript type describing allowed parameters. > This ensures invalid input is caught before calling the API. --- ## 4️⃣ Implement the Tool Tools live in `src/tools/` and define how MCP exposes the service. 1. Create a file (e.g. `elevationTool.ts`). 2. Export an object with: * `name`: unique identifier (e.g., `tomtom-elevation`). * `description`: short explanation. * `inputSchema`: schema from step 3. * `handler`: async function calling the service and returning formatted output. --- ## 5️⃣ Register the Tool Update the server bootstrap (`src/createServer.ts` or equivalent): ```ts import { elevationTool } from './tools/elevationTool'; const tools = [ ...existingTools, elevationTool ]; ``` This makes the tool available through the MCP protocol. --- ## 6️⃣ Write Tests * **Service tests** (`service.test.ts`): Cover success, error, and edge cases. * **Tool tests** (optional but recommended): Validate that MCP input/output works correctly. * Use mocks for network calls where feasible. > Run tests locally and in CI to ensure stability. --- ## 7️⃣ Documentation * Update or create entries in `docs/` describing the new tool: * Purpose and endpoints used. * Example requests/outputs. * Special requirements (auth, rate limits, etc.). * Mention the tool in the "Available Tools" section of the main README if appropriate. --- ## 8️⃣ Review & Deploy * Verify naming consistency (tool, files, schemas). * Check linting and formatting. * Ensure environment variables are documented. * Run all tests and integration checks before merging. --- ### ✅ Summary Checklist * [ ] Gather API details and authentication. * [ ] Create `service.ts`, `types.ts`, and `service.test.ts`. * [ ] Define an input schema. * [ ] Implement a tool with `name`, `description`, `inputSchema`, and `handler`. * [ ] Register the tool in `createServer.ts`. * [ ] Add unit/integration tests. * [ ] Document the tool in `docs/` and README. * [ ] Verify environment variables and rate limits. --- Following these steps keeps the repository modular, type-safe, and easy to maintain while extending its capabilities with new APIs.

Latest Blog Posts

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/tomtom-international/tomtom-mcp'

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