mcpField
M
MCP Server Example for Indonesian Customs Tariff & Hascode API

MCP Server Example for Indonesian Customs Tariff & Hascode API

Local
github.com/TehBotolBayuDeveloper Tools0Updated 73w ago

About MCP Server Example for Indonesian Customs Tariff & Hascode API

This educational example shows how to build an MCP server for Indonesian customs tariff and HS code data using the Hascode API. It is intended for developers learning to expose customs information to AI clients.

Key features

  1. 01Example Hascode API integration
  2. 02Fetch tariff and HS code information
  3. 03Demonstrate MCP resources, tools, and prompts
  4. 04Connect customs data to AI clients

Use cases

  1. 01Learn to build a domain-specific MCP server
  2. 02Prototype Indonesian tariff lookups
  3. 03Expose HS code data to an AI client

MCP support

The example describes exposing tariff schedules and HS code data as MCP resources and tools, with prompts for common customs questions.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

No install method listed yet

We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.

Repository

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

MCP Server Example for Indonesian Customs Tariff & Hascode API

This repository provides an example implementation of a Model Context Protocol (MCP) server, customized for educational use in the context of Indonesian customs tariff data and Hascode API integration. The project demonstrates how to build a functional MCP server that connects to APIs such as Hascode to fetch tariff and HS code information for AI models.

What is MCP?

MCP (Model Context Protocol) is an open standard designed to provide structured context to Large Language Models (LLMs). You can think of MCP like a USB-C port for AI—offering a standardized way to plug models into various external data sources, such as customs tariff APIs, HS code lookups, or logistics databases.

Key Benefits
  • Pre-built integrations for services like the Hascode API, which provides real-time HS code and duty rate information
  • Flexibility to work across different LLM providers (OpenAI, Anthropic, etc.)
  • A clean abstraction layer for securely accessing regulated data like import/export tariff structures

Architecture Overview

MCP uses a client-server architecture that supports multiple data access points:

  • MCP Hosts: AI tools like Claude Desktop or enterprise assistants that request structured customs data
  • MCP Clients: Protocol intermediaries that handle 1:1 communication with servers
  • MCP Servers: Lightweight components that expose data and capabilities, such as fetching Indonesian customs tariffs via API
  • Data Sources: Includes local files (e.g., PDF duty schedules) and remote APIs like Hascode or customs office databases

Core MCP Concepts

An MCP server typically exposes three types of capabilities:

  • Resources: HS code datasets, tariff schedules, or API responses (e.g., duty rate for a specific product)
  • Tools: API functions that an LLM can call to get updated customs information
  • Prompts: Pre-configured templates (e.g., "What is the import duty for HS Code 8703.23.91.00 in Indonesia?")

System Requirements

  • Python 3.10 or higher
  • MCP SDK 1.2.0 or higher
  • uv package manager

Getting Started

Installing uv Package Manager

On MacOS/Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

Then restart your terminal to enable the uv command.

Project Setup
  1. Initialize your MCP project:
uv init mcp-server
cd mcp-server

uv venv
source .venv/bin/activate  # Use .venv\Scripts\activate on Windows

uv add "mcp[cli]" httpx
  1. Create the main server file:
touch main.py
Example: Integrate with Hascode API

In main.py, you can define a resource to fetch tariff data using Hascode:

import httpx
from mcp import Resource

class HsCodeTariffResource(Resource):
    def read(self, hs_code: str):
        response = httpx.get(f"https://api.hascode.id/tariff?code={hs_code}")
        return response.json()
Running the Server

Start the server:

uv run main.py

Connecting to Claude Desktop

  1. Install Claude Desktop
  2. Edit the config file at: ~/Library/Application Support/Claude/claude_desktop_config.json
{
    "mcpServers": {
        "mcp-server": {
            "command": "uv",
            "args": [
                "--directory",
                "/ABSOLUTE/PATH/TO/YOUR/mcp-server",
                "run",
                "main.py"
            ]
        }
    }
}
  1. Restart Claude Desktop

Troubleshooting

If Claude Desktop fails to detect your server:

  1. Check the config file path and syntax
  2. Use the absolute path for all directories
  3. Ensure uv is installed and working
  4. Review Claude logs for connection issues

License

This project is licensed under the MIT License. See the LICENSE file for more details.


Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.