iletiMerkezi MCP Server
@iletimerkezi/mcp-server is the official Model Context Protocol server that connects the iletiMerkezi SMS API to MCP-aware LLM clients such as Claude Code, Cursor, Codex CLI, Gemini CLI, VS Code (Cline), Claude Desktop, and other compatible clients. The LLM takes your natural-language request, picks the right tool call, and interprets the response. Sending SMS, pulling delivery reports, checking balance, and managing blacklists all happen inside a single conversation.
The server is fully open-source under MIT, written in TypeScript: iletimerkezi/iletimerkezi-mcp-server.
The 11 tools
| Tool | API endpoint | Purpose |
|---|---|---|
send_sms | POST /v1/send-sms/json | Send SMS to one or many numbers (transactional 100/sec, bulk 50,000/request) |
cancel_order | POST /v1/cancel-order/json | Cancel a future-scheduled order before dispatch |
get_report | POST /v1/get-report/json | Single-order delivery report (summary + per-recipient) |
get_reports | POST /v1/get-reports/json | Order summary list within a date range (max 10 days) |
get_balance | POST /v1/get-balance/json | Account balance (TL + SMS credits) |
get_sender | POST /v1/get-sender/json | Approved sender (header) list |
get_blacklist | POST /v1/get-blacklist/json | Blocked numbers (paginated) |
add_blacklist | POST /v1/add-blacklist/json | Block a number (idempotent) |
delete_blacklist | POST /v1/delete-blacklist/json | Unblock a number |
iys_register | POST /v1/consent/create/json | Register İYS consent records (batch, max 5000) |
iys_check | POST /v1/consent/show/json | Look up İYS consent status for a recipient |
Built for Turkey.
iys_registerlets you batch-create İYS consent records from the LLM conversation,iys_checkreturns the current consent status (ONAY / RET / source / date) for a single recipient, andsend_sms iys=1triggers a real-time İYS lookup before dispatch. One of the first MCP servers to expose İYS as a first-class surface.
Setup
System requirements
| Requirement | Value |
|---|---|
| Package | @iletimerkezi/mcp-server (npm) |
| Minimum Node.js | 18.x (LTS recommended: 20.x or 22.x) |
| Run mode | npx -y @iletimerkezi/mcp-server, no permanent install needed; npx attempts to use the latest version (an older one may be used if the local npx/pnpm cache is warm or you are offline) |
| Pinning a version (recommended) | npx -y @iletimerkezi/[email protected], use it in production for deterministic behaviour |
Check the latest published version with npm view @iletimerkezi/mcp-server version.
Every MCP-aware client follows the same pattern: add an iletimerkezi server entry to a config file, pass credentials as environment variables, restart the client. Five clients share an identical JSON schema; Codex CLI uses a different format (TOML).
Credentials (shared across clients)
Both values come from panel.iletimerkezi.com > Settings > Security > API Access. Don't compute the hash yourself, the panel issues a precomputed value. See authentication.
Important prerequisite: The panel's Settings > Security > Access Permissions > Allow API access toggle must be ON. If it is off, every call returns
401. The server's error message walks you through this exact toggle.
Which client, which file
| Client | Config file | Format |
|---|---|---|
| Claude Code | command: claude mcp add ... or .mcp.json (project) / ~/.claude.json (user) | JSON mcpServers |
| Cursor | ~/.cursor/mcp.json (global) or .cursor/mcp.json (project) | JSON mcpServers |
| Gemini CLI | ~/.gemini/settings.json (global) or .gemini/settings.json (project) | JSON mcpServers |
| VS Code + Cline | cline_mcp_settings.json (Cline UI > MCP Servers > Configure) | JSON mcpServers |
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) | JSON mcpServers |
| Codex CLI | command: codex mcp add ... or ~/.codex/config.toml | TOML [mcp_servers.X] |
Shared JSON config
Cursor, Gemini CLI, VS Code+Cline, Claude Desktop, and Claude Code (project-scope .mcp.json) all accept the same JSON shape. Add this block to the relevant file:
{
"mcpServers": {
"iletimerkezi": {
"command": "npx",
"args": ["-y", "@iletimerkezi/mcp-server"],
"env": {
"ILETIMERKEZI_API_KEY": "your-api-key",
"ILETIMERKEZI_API_HASH": "your-api-hash"
}
}
}
}Quit the client fully and reopen it. The 11 tools become available.
Claude Code, single command
Install at user scope (available across all projects):
claude mcp add iletimerkezi -s user \
-e ILETIMERKEZI_API_KEY=your-api-key \
-e ILETIMERKEZI_API_HASH=your-api-hash \
-- npx -y @iletimerkezi/mcp-serverClose the current Claude Code session and start a new one. Tools appear under the mcp__iletimerkezi__* prefix. To remove: claude mcp remove iletimerkezi -s user.
For teams, drop a project-scope .mcp.json (the shared JSON shape above) at the repo root; each developer sets the env vars in their shell profile so credentials never land in the repo.
Codex CLI, TOML format
Via the CLI:
codex mcp add iletimerkezi \
--env ILETIMERKEZI_API_KEY=your-api-key \
--env ILETIMERKEZI_API_HASH=your-api-hash \
-- npx -y @iletimerkezi/mcp-serverOr edit ~/.codex/config.toml directly:
[mcp_servers.iletimerkezi]
command = "npx"
args = ["-y", "@iletimerkezi/mcp-server"]
[mcp_servers.iletimerkezi.env]
ILETIMERKEZI_API_KEY = "your-api-key"
ILETIMERKEZI_API_HASH = "your-api-hash"Verifying
On first use, prefer two account-safe tools because they don't burn credits:
get_balance, reads account balanceget_sender, lists approved sender IDs
If both succeed, the install is correct.
Single source of truth
@iletimerkezi/mcp-server does not author its own tool schemas. Tool definitions are pulled at runtime from /api/manifest.json, which is generated from the canonical iletiMerkezi endpoint documentation. A documentation update propagates to every running MCP client within 24 hours, no npm update required.
This setup means:
- The manifest is the canonical source for both the docs and the MCP tools, minimizing drift between the live API and what the LLM sees; a docs update propagates automatically to MCP.
- If iletimerkezi.com is unreachable, the server keeps working using a build-time fallback baked into the npm package at publish time.
- New endpoints become tools as soon as the docs are published.
Example prompts
A single English sentence becomes one tool call behind the scenes:
- "Show me my balance." >
get_balance - "Send 'Your appointment is tomorrow at 2pm' to 905XXXXXXXXX." >
send_sms(sender, iys, full envelope handled automatically) - "Pull the delivery report for order 312988299." >
get_report - "List the SMS I sent last week." >
get_reports(date range inferred automatically) - "Cancel the order I scheduled for tomorrow at 9am." >
cancel_order - "Register these form responses in İYS as ONAY: ..." >
iys_register(up to 5000 in one call) - "What's the İYS consent status for this 0533 number?" >
iys_check - "Block this number." >
add_blacklist - "List my approved sender IDs." >
get_sender
Security
- The API Key + Hash carry full account permissions; if leaked, a single API call can drain the balance.
- Never commit credentials to source code or output files; the MCP client config stays on your local machine.
- The server does not retain credentials in memory; it reads them from env on every call.
- For production integrations, enable IP restriction and rotate keys monthly.
Help and contributing
- Bug reports: GitHub Issues
- API documentation: API overview
- Error codes: Error codes table
- Support:
[email protected]
Last updated: 2026-05-05 · Türkçe