satudata-ngawi
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@satudata-ngawiCari data tentang pertanian"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Satu Data Ngawi
MCP (Model Context Protocol) Server untuk mengakses data dari Portal Satu Data Kabupaten Ngawi.
š Portal Sumber Data
Website: https://satudata.ngawikab.go.id
API Base: https://apidata.kabngawi.id/api/guest
Related MCP server: ontario-data-mcp
š¦ Instalasi
1. Clone/Download Repository
git clone <repository-url>
cd mcp-satudata-ngawi2. Install Dependencies
npm install3. Build Project
npm run buildš§ Konfigurasi untuk Claude Desktop
Tambahkan konfigurasi berikut ke file claude_desktop_config.json:
Windows
Lokasi: %APPDATA%\Claude\claude_desktop_config.json
macOS
Lokasi: ~/Library/Application Support/Claude/claude_desktop_config.json
Linux
Lokasi: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"satudata-ngawi": {
"command": "node",
"args": ["/path/to/mcp-satudata-ngawi/dist/index.js"]
}
}
}Atau jika menggunakan npx:
{
"mcpServers": {
"satudata-ngawi": {
"command": "npx",
"args": ["-y", "/path/to/mcp-satudata-ngawi"]
}
}
}š ļø Tools yang Tersedia
1. get_kategori_sektoral
Mendapatkan daftar kategori sektoral/sektor data.
Parameters:
page(number, optional): Nomor halaman (default: 1)per_page(number, optional): Jumlah data per halaman (default: 100)
Contoh Penggunaan:
Tampilkan semua kategori data di Satu Data Ngawi2. get_organisasi
Mendapatkan daftar organisasi/OPD (Organisasi Perangkat Daerah).
Parameters:
page(number, optional): Nomor halamanper_page(number, optional): Jumlah data per halamanq(string, optional): Kata kunci pencarian
Contoh Penggunaan:
Cari organisasi dengan nama "Dinas Kesehatan" di Ngawi3. get_data_sektoral
Mendapatkan daftar data sektoral/dataset.
Parameters:
page(number, optional): Nomor halamanper_page(number, optional): Jumlah data per halamanq(string, optional): Kata kunci pencariankategori_id(number, optional): Filter berdasarkan ID kategoriorganisasi_id(number, optional): Filter berdasarkan ID organisasi
Contoh Penggunaan:
Tampilkan data sektoral tentang pertanian di Ngawi4. get_detail_data
Mendapatkan detail lengkap dari sebuah data sektoral.
Parameters:
id(number, required): ID data sektoral
Contoh Penggunaan:
Lihat detail data dengan ID 1235. search_data
Mencari data berdasarkan kata kunci.
Parameters:
keyword(string, required): Kata kunci pencarianlimit(number, optional): Jumlah hasil maksimal (default: 10)
Contoh Penggunaan:
Cari data tentang "kemiskinan" di Satu Data Ngawi6. get_statistics
Mendapatkan ringkasan statistik portal.
Parameters: Tidak ada
Contoh Penggunaan:
Berapa total dataset yang ada di Satu Data Ngawi?š Resources
satudata://kategori
Daftar lengkap kategori sektoral dalam format JSON.
š Contoh Percakapan dengan Claude
User: Apa saja kategori data yang tersedia di Satu Data Ngawi?
Claude: [Menggunakan get_kategori_sektoral]
Berikut kategori data yang tersedia:
1. Pertanian
2. Peternakan
3. Pendidikan
4. Kesehatan
... dst
User: Cari data tentang kesehatan
Claude: [Menggunakan search_data dengan keyword "kesehatan"]
Ditemukan beberapa dataset tentang kesehatan:
1. Jumlah Puskesmas per Kecamatan
2. Data Imunisasi Anak
... dst
User: Lihat detail data nomor 1
Claude: [Menggunakan get_detail_data dengan ID yang sesuai]
Detail Data:
- Judul: Jumlah Puskesmas per Kecamatan
- Tahun: 2023
- Sumber: Dinas Kesehatan
... dstšļø Struktur Project
mcp-satudata-ngawi/
āāā src/
ā āāā index.ts # Source code utama
āāā dist/
ā āāā index.js # Compiled JavaScript
āāā package.json
āāā tsconfig.json
āāā README.mdš API Endpoints yang Digunakan
Endpoint | Deskripsi |
| Daftar kategori/sektor data |
| Daftar OPD/instansi |
| Daftar dataset |
| Detail dataset |
š¤ Kontribusi
Silakan buat issue atau pull request jika menemukan bug atau ingin menambahkan fitur.
š Lisensi
MIT License
š Credits
Portal Satu Data Kabupaten Ngawi
Anthropic MCP SDK
Available Tools
6 toolsget_data_sektoralA
Mendapatkan daftar data sektoral/dataset yang tersedia. Bisa difilter berdasarkan pencarian, kategori, atau organisasi.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Kata kunci pencarian | |
| page | No | Nomor halaman | |
| per_page | No | Jumlah data per halaman | |
| kategori_id | No | Filter berdasarkan ID kategori sektoral | |
| organisasi_id | No | Filter berdasarkan ID organisasi |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the core behavior (returns a list of available datasets, filterable), which is consistent with a read-only GET operation. However, it does not mention pagination behavior, response format, or potential prerequisites. Given the simple nature of the tool, this is acceptable but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the main purpose and filter options. Every word contributes to understanding the tool's function, with no redundancy or ambiguity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple listing tool, but it omits explicit pagination semantics, response structure, and usage differentiation from search_data. Given the lack of an output schema and annotations, a bit more detail would make the description more complete, but the current state is minimally viable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description summarizes the filters as 'pencarian, kategori, atau organisasi' which maps to q, kategori_id, and organisasi_id, but adds no additional meaning beyond what the schema already provides for each parameter. It does not mention page or per_page, though those are self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Mendapatkan daftar data sektoral/dataset yang tersedia' (Gets a list of available sectoral data/datasets). It also specifies that filtering is possible by search, category, or organization. This distinguishes it from siblings like get_detail_data (which likely fetches a single dataset), but does not explicitly differentiate from search_data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this tool is used to retrieve a list of datasets with optional filters, but it does not explicitly state when to use this tool versus alternatives like search_data. There is no mention of when not to use it, so guidance is limited to what is inferred from the tool's purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_detail_dataB
Mendapatkan detail lengkap dari sebuah data sektoral berdasarkan ID, termasuk data detail/nilai-nilainya
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID data sektoral yang ingin dilihat detailnya |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states what the tool does (gets details) without mentioning whether it is read-only, any required permissions, potential errors, or the structure of the returned detail. The word 'get' implies a read operation, but no additional behavioral traits are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core meaning ('Mendapatkan detail lengkap'). It is brief and gets to the point quickly, though 'detail lengkap' and 'termasuk data detail/nilai-nilainya' are slightly redundant. No wasted words overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description provides enough to understand the basic purpose. It mentions that details include 'data detail/nilai-nilainya', giving some hint of content. However, it omits return format, possible empty results, or any limits, so it is minimally complete but not rich.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, as the parameter 'id' is described as 'ID data sektoral yang ingin dilihat detailnya'. The description adds no new semantic insight beyond what the schema already provides, but it is consistent. With full schema coverage, the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Mendapatkan' (get) and identifies the resource as 'detail lengkap dari sebuah data sektoral' (complete details of a sectoral data), with the scope limited 'berdasarkan ID' (based on ID). This clearly distinguishes it from sibling tools like get_data_sektoral or search_data, which presumably list or search rather than fetch detail by ID.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when you need the full detail of a sectoral data record given its ID. However, it does not explicitly state when not to use it or mention alternatives (e.g., use get_data_sektoral to list all records first). The guidance is implied rather than direct.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_kategori_sektoralA
Mendapatkan daftar kategori sektoral/sektor data yang tersedia di Satu Data Ngawi. Contoh: Pertanian, Kesehatan, Pendidikan, dll.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Nomor halaman (default: 1) | |
| per_page | No | Jumlah data per halaman (default: 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It correctly implies a read-only operation via 'Mendapatkan' but does not explicitly disclose lack of side effects, authentication requirements, or pagination behavior. The description is benign but minimal, not adding detail beyond the basic get-list action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that fully communicates the tool's purpose with examples. It is front-loaded with the action and resource, and every word adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list-getting tool with two optional parameters and no output schema, the description is adequately complete. It provides examples of content and clarifies the domain. It lacks an explicit mention of return format or pagination in the description, but the schema covers parameter details, making this acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (both page and per_page have descriptions), so the baseline is 3. The tool description does not add any extra context about these parameters, but the schema descriptions are sufficient for an agent to understand their purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Mendapatkan daftar' = get list) and the resource ('kategori sektoral/sektor data yang tersedia di Satu Data Ngawi'), with concrete examples (Pertanian, Kesehatan, Pendidikan). It distinguishes from sibling tools like get_data_sektoral by focusing on categories rather than the data itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: the tool is for retrieving the list of sectoral categories. However, it does not explicitly state when to use this over siblings (e.g., 'Use get_data_sektoral for actual data'), nor does it provide any exclusions or mention alternatives. It relies on the user to infer intent from the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_organisasiB
Mendapatkan daftar organisasi/OPD (Organisasi Perangkat Daerah) yang ada di Kabupaten Ngawi
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Kata kunci pencarian nama organisasi | |
| page | No | Nomor halaman | |
| per_page | No | Jumlah data per halaman |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description only states the basic action (getting a list) and geographic scope. It does not disclose pagination behavior, filtering via the q parameter, default result sizes, or any potential side effects. The agent gains no insight into how the tool behaves under the hood.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words. It is front-loaded with the action and resource, making it easy to read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and no annotations, yet the description does not explain what a response contains or any usage nuances. It only states the basic purpose, leaving the agent without enough context for the tool's behavior and return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters (q, page, per_page) already have descriptions in the input schema. The description adds no additional parameter semantics beyond what the schema provides, aligning with the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Mendapatkan daftar organisasi/OPD... di Kabupaten Ngawi' (get list of organizations/OPD in Ngawi Regency). It uses a specific verb and resource, and differentiates it from sibling tools that focus on data, categories, and statistics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool compared to alternatives like search_data or get_data_sektoral. It does not mention any limitations, exclusions, or preferred use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statisticsA
Mendapatkan ringkasan statistik portal Satu Data Ngawi (jumlah kategori, organisasi, dan dataset)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosure. It clearly states the tool retrieves summary statistics and specifies the kinds of data returned (counts of categories, organizations, datasets). This is sufficient for a non-destructive, read-only statistics endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core action and resource, with the specific statistics listed in parentheses for clarity. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no parameters and no output schema, the description fully covers the tool's purpose and the content of its response. It is complete and self-contained, with no missing critical information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so according to the rubric, the baseline is 4. The description does not need to explain parameter semantics, and the schema confirms no inputs are required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Mendapatkan' - get) and identifies the resource ('ringkasan statistik portal Satu Data Ngawi') with clear scope (counts of categories, organizations, datasets). This clearly distinguishes it from sibling tools like get_kategori_sektoral or get_organisasi, which target specific entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the tool is for obtaining an overall summary of the portal rather than specific entities, which provides context for when to use it. However, it does not explicitly mention alternatives or exclusion conditions, so it doesn't fully meet the top bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_dataB
Mencari data di Satu Data Ngawi berdasarkan kata kunci. Mengembalikan data sektoral yang relevan.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Jumlah hasil maksimal | |
| keyword | Yes | Kata kunci pencarian |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states that the tool returns 'relevant sectoral data' without explaining matching behavior, result ordering, pagination, or any limitations. For a search tool, this lacks transparency about how searching is performed and what constitutes 'relevant'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: the first clause states the action and scope, the second the result. It earns its place with no fluff. It could have added more useful context without becoming verbose, but it is not poorly structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple tool with 2 parameters and no output schema. The description covers the core functionality and mentions the return type ('relevant sectoral data'), but it lacks context on how this fits with sibling tools, the structure of results, or any limitations. It is adequate but not complete for an agent to fully predict behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100% via input schema: 'keyword' and 'limit' are both described. The tool description adds no additional meaning beyond the schema, so it meets the baseline of 3 but does not go further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('search') and resource ('data in Satu Data Ngawi'), and distinguishes this as a keyword-based search tool from sibling tools like get_kategori_sektoral or get_detail_data. However, it does not explicitly define the scope of 'data sektoral' or why this search tool exists alongside the specific retrieval tools, leaving a small gap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'berdasarkan kata kunci' implies the tool should be used when a keyword is available, rather than browsing via categories or specific lookups. However, it offers no explicit when-to-use versus alternatives, no exclusionary guidance, and no mention of prerequisites or typical scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v1.0.0- First observed
get_data_sektoral - First observed
get_detail_data - First observed
get_kategori_sektoral - First observed
get_organisasi - First observed
get_statistics - First observed
search_data
TDQS
Scored across 6 tools
Each tool targets a distinct aspect of the portal: categories, organizations, datasets, dataset details, search, and statistics. The descriptions clearly differentiate them even where overlap might occur (e.g., search vs. filtered list).
All tools follow a consistent verb_noun pattern. Most use 'get_', and 'search_data' fits the same style. No mixed conventions or vague names.
Six tools is well-scoped for a read-only open data portal. Each tool serves a clear purpose without redundancy or bloat, making the set easy to navigate.
The tool set covers all core read operations for the domain: browsing by category/organization, listing datasets, fetching full detail, searching, and portal statistics. No obvious gaps for a public data portal API.
Maintenance
Related MCP Connectors
This MCP server provides seamless access to Malaysia's government open data, including datasets, wā¦
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
- mcpOAuthcom.gibsonai
GibsonAI MCP server: manage your databases with natural language
Related MCP Servers
- AlicenseBqualityDmaintenanceAn unofficial MCP server providing access to Dutch government open data from data.overheid.nl, CBS statistics, and KVK business registry. Enables natural language queries for discovering datasets, inspecting metadata, and querying data without API keys or authentication.14MIT
- AlicenseAqualityDmaintenanceAn MCP server for discovering, downloading, querying, and analyzing datasets from Ontario's open data portals, allowing natural language questions and high-performance analytics via DuckDB.231MIT

dml-bps-mcpofficial
AlicenseBqualityDmaintenanceMCP server for accessing Indonesian BPS statistics data via natural language queries.58MIT- AlicenseNot gradedqualityBmaintenanceAn MCP server that connects to open data portals like CKAN and Socrata, enabling natural language querying of datasets via Claude.MIT