jaringan-mcp
This server lets AI agents interact with Jaringan (JRG) protocol pages through MCP tools.
Fetch a JRG page as structured content (title, body, tags, links)
Fetch the raw JRG protocol response (status, headers, body)
Inspect a page's interactive elements (headings, links, paragraphs, inputs, buttons)
Search local
.jrgfiles under a root directory with snippetsList stored Jaringan authentication tokens
Render a JRG page as formatted plain text
List all available Jaringan pages (slug + title)
Connect via TCP to a JRG server, read local
.jrgfiles, or use ajaringan-browserbinary
Allows Hermes agents to fetch, inspect, search, and manage Jaringan pages.
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., "@jaringan-mcpfetch the JRG page about networking"
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.
Moved. This GitHub copy is an archive. Use the Forgejo repository.
Canonical repository: https://git.simonharms.com/thesimonharms/jaringan-mcp
jaringan-mcp
MCP (Model Context Protocol) server for the Jaringan (JRG) protocol. Lets AI agents fetch, inspect, search, and manage Jaringan pages through structured tool calls.
Install
npm install jaringan-mcpRelated MCP server: hidrix-tools
Usage
Standalone
npm install jaringan-mcp
# Connect to a JRG server on localhost:7080
npx jaringan-mcp --jrg-port 7080
# Read from local .jrg files instead
npx jaringan-mcp --file-root ~/wiki
# Custom host/port with browser binary
npx jaringan-mcp --jrg-host 10.0.0.1 --jrg-port 7070 --browser /usr/bin/jaringan-browserWith Hermes Agent
Add to ~/.hermes/config.yaml:
mcp_servers:
jaringan:
command: "npx"
args: ["-y", "jaringan-mcp", "--jrg-port", "7080"]Or for local file access:
mcp_servers:
jaringan:
command: "npx"
args: ["-y", "jaringan-mcp", "--file-root", "/home/user/wiki"]Restart Hermes to auto-discover the tools.
With Claude Code / Copilot / Any MCP Host
{
"mcpServers": {
"jaringan": {
"command": "npx",
"args": ["-y", "jaringan-mcp", "--jrg-port", "7080"]
}
}
}Tools
Tool | Description |
| Fetch a JRG page → structured content (title, body, tags, links) |
| Fetch raw JRG protocol response (status, headers, body) |
| Inspect a page → JSON manifest of interactive elements |
| Search local |
| List all stored Jaringan authentication tokens |
| Render a page as formatted plain text |
| List all available Jaringan pages (slug + title) |
Options
Flag | Default | Description |
|
| JRG TCP server hostname |
|
| JRG TCP server port |
| — | Read from local |
|
| Path to |
|
| TCP connection timeout in ms |
Architecture
AI Agent (Hermes, Claude Code, etc.)
│
│ MCP protocol (JSON-RPC over stdio)
▼
┌─────────────────────────────┐
│ jaringan-mcp server │
│ │
│ ┌───────────────────────┐ │
│ │ jrg-client (lib) │──│── TCP → JRG server (port 7070/7080)
│ └───────────────────────┘ │
│ ┌───────────────────────┐ │
│ │ jaringan-browser CLI │──│── inspect / search / auth
│ └───────────────────────┘ │
│ ┌───────────────────────┐ │
│ │ Local file reader │──│── .jrg files on disk
│ └───────────────────────┘ │
└─────────────────────────────┘Publishing
npm run build
npm publish --access publicLicense
MIT
Available Tools
7 toolsjrg_auth_listA
List all stored Jaringan authentication tokens.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It does not disclose behavioral traits like permissions required, side effects, or whether the operation is read-only.
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?
Single sentence, no fluff, front-loaded with purpose. Extremely concise.
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?
Given no output schema and no annotations, the description is adequate but lacks details about return format or what constitutes a 'token'. It does not explain the context of 'Jaringan'.
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?
No parameters exist, so schema coverage is 100%. Baseline for 0 params is 4. The description adds context by specifying 'stored Jaringan authentication tokens'.
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 (List) and resource (stored Jaringan authentication tokens). It is specific and distinguishes itself from siblings like jrg_list, which likely lists other resources.
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?
No guidance on when to use this tool versus alternatives such as jrg_list or jrg_search. The description does not provide context for selective usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jrg_fetchA
Fetch a Jaringan (JRG) page and return structured content (title, body, tags, links). Uses TCP to a JRG server by default, or a local file root. URL can be jrg://host:port/path or just a path like "welcome" or "/port-map".
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page URL or path (e.g. "jrg://localhost:7080/welcome", "welcome", "/port-map") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Describes transport (TCP/local) and return fields, but lacks details on safety (read-only implied), error handling, or side effects. Adequate 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?
Two sentences: first gives purpose and output, second explains protocol and URL variants. No wasted words, front-loaded content.
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, description covers core functionality and input format well. Could mention sibling distinctions or error behavior, but still mostly complete.
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 already covers URL format (100% coverage). Description adds value by showing examples and explaining 'jrg://' vs path usage, enhancing understanding beyond schema.
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?
Clearly states verb (Fetch), resource (Jaringan page), and output (structured content: title, body, tags, links). Distinguishes from sibling jrg_fetch_raw by mentioning structured vs raw.
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?
Explains network protocol (TCP or local file root) and URL formats with examples, but does not explicitly contrast with siblings like jrg_fetch_raw or jrg_view. Implicit guidance from output type, but no when-to-use/alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jrg_fetch_rawA
Fetch a JRG page and return the raw protocol response (status line, headers, body).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page URL or path |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses that the tool returns raw protocol response, implying read-only behavior, but does not mention error conditions, rate limits, or whether it modifies state. The description provides basic behavioral info but lacks depth.
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 efficiently conveys the core functionality. Every word contributes meaning, with no redundancy or irrelevant information. It is well-structured and front-loaded.
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 one parameter and no output schema, the description adequately explains the return format (status line, headers, body). However, it could be more complete by mentioning potential errors or encoding details. It is quite good but not fully exhaustive.
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 input schema already has 100% coverage with a clear description for the single parameter 'url'. The tool description adds no additional meaning or format details beyond what the schema provides, so a baseline score of 3 is appropriate.
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 verb 'Fetch' and the resource 'JRG page', and specifies that the output is the raw protocol response including status line, headers, and body. This distinguishes it from sibling tools like jrg_fetch or jrg_view, which likely return parsed or rendered content.
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 versus alternatives like jrg_fetch or jrg_inspect. It does not mention any prerequisites, limitations, or exclusions, leaving the agent to infer context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jrg_inspectA
Inspect a JRG page and return a JSON manifest of interactive elements (headings, links, paragraphs, inputs, buttons).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The jrg:// URL to inspect |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states the output format but does not explicitly state whether the tool is read-only or if it has side effects. Since no annotations are provided, the description carries the full burden; it is adequate for a simple inspection tool but lacks details like permissions or limitations.
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 one sentence, no wasted words, front-loaded with the action and resource. Every part contributes meaning.
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 tool with one parameter and no output schema, the description is reasonably complete. It specifies the input (jrg:// URL) and output (JSON manifest of interactive elements). However, it lacks notes on error handling or performance considerations.
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% (the single 'url' parameter has a description). The tool description adds context about the overall purpose but does not provide additional parameter-specific details beyond what the schema already provides.
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 ('Inspect'), the resource ('a JRG page'), and the output ('a JSON manifest of interactive elements' with specific types). It implicitly distinguishes from sibling tools like jrg_fetch (raw content) or jrg_list (list pages).
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?
No explicit guidance on when to use this tool vs alternatives like jrg_fetch or jrg_search. The sibling list provides context but no direct advice on selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jrg_listA
List all available Jaringan pages. Returns an array of { slug, title } entries.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that the tool lists all pages and returns a specific structure. For a simple read-only listing tool with no side effects, this is sufficiently transparent.
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?
Two sentences: action and return format. Front-loaded and no wasted words. Highly concise.
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 tool with no parameters and no output schema, the description fully covers what the agent needs: purpose and return type. Complete given the tool's simplicity.
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?
No parameters, so schema coverage is 100%. The description adds value by specifying the output format, which goes beyond the empty schema. Baseline for 0 params is 4.
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 lists all Jaringan pages and specifies the return format as an array of { slug, title } entries. It distinguishes from siblings like jrg_search, which does filtered searching.
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 usage for listing all pages when no filtering is needed. While it doesn't explicitly mention when not to use or provide alternatives, the context with sibling tools like jrg_search makes the usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jrg_searchA
Search local .jrg pages under a root directory. Returns matching page paths with snippets.
| Name | Required | Description | Default |
|---|---|---|---|
| root | Yes | Root directory to search (e.g. /home/user/wiki) | |
| query | Yes | Search query |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that the tool is read-only (search) and returns paths with snippets, but does not elaborate on side effects, permissions, or edge cases. Adequate but not rich.
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?
Single sentence with no wasted words, front-loaded verb 'Search'. Highly concise and 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?
The description covers the tool's purpose and return value (paths with snippets) without an output schema. It does not reference sibling tools or usage context, but is otherwise complete for a search operation.
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% with clear parameter descriptions for 'root' and 'query'. The description adds minimal context (e.g., 'local .jrg pages') beyond what the schema provides, so baseline 3 is appropriate.
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 searches local .jrg pages under a root directory, using the verb 'Search' and specific resource '.jrg pages', distinguishing it from sibling tools like jrg_list (listing) or jrg_fetch (fetching full content).
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?
No explicit guidance on when to use this tool over alternatives (e.g., jrg_list or jrg_fetch). The description implies a search-by-content scenario but does not mention exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jrg_viewB
Render a JRG page as formatted plain text (human-readable).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The jrg:// URL or file path to view |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the output format (human-readable plain text) but omits behavioral traits such as permissions needed, whether the operation is read-only (likely), or any side effects. Minimal disclosure.
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, front-loaded with the key information, and contains no unnecessary words or fluff.
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 one parameter and no output schema, the description is adequate but lacks explanations of error behavior, URL format, or how the rendered text relates to the page's structure. Given the context (no annotations, siblings listed), more details would improve completeness.
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% for the single 'url' parameter. The tool description does not add additional meaning beyond what the schema already provides, so the parameter semantics score defaults to 3.
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 verb ('Render') and resource ('JRG page') with output format ('formatted plain text (human-readable)'). It implicitly distinguishes from sibling tools like jrg_fetch (likely raw) but does not explicitly differentiate.
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 usage for human-readable viewing but provides no explicit guidance on when to use this tool versus siblings like jrg_fetch, jrg_inspect, or jrg_list. No when-not-to-use or alternative names are given.
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.
7 tool updates
v0.1.1- First observed
jrg_auth_list - First observed
jrg_fetch - First observed
jrg_fetch_raw - First observed
jrg_inspect - First observed
jrg_list - First observed
jrg_search - First observed
jrg_view
TDQS
Scored across 7 tools
Each tool has a distinct purpose: listing tokens, fetching pages in different formats (structured, raw, plain text), inspecting interactive elements, listing all pages, and searching local pages. The fetch variants are clearly differentiated by their output format, leaving no ambiguity.
All tools follow a consistent 'jrg_verb' pattern with verbs like list, fetch, inspect, search, view. The compound 'auth_list' and 'fetch_raw' still adhere to the imperative style, making the naming predictable and easy to parse.
With 7 tools, the server covers the core reading operations (list, fetch, inspect, search) without being excessive or sparse. The count feels well-scoped for a focused Jaringan page retrieval and discovery surface.
The tool set is read-only, providing listing, fetching, inspecting, and searching, but lacks any write operations such as create, update, or delete pages. While it may suffice for read-only use cases, it is incomplete for a general-purpose Jaringan server that would typically include content management.
Maintenance
Related MCP Connectors
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Scrape, crawl and search the web for AI agents via MCP.
Docs: https://docs.keenable.ai/mcp-server Keenable is a free, remote MCP server that gives agents access to the web index. Search the web with ranked results and date/site filters, then fetch any indexed page as clean markdown. Works out of the box with no account or API key.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA Model Context Protocol server that exposes powerful web search and scraping tools to AI agents and MCP-compatible clients.Apache 2.0
- AlicenseNot gradedqualityFmaintenanceMCP tool server that gives any AI agent the ability to search, scrape, and analyze content across the internet.42MIT

srezai-mcpofficial
AlicenseAqualityAmaintenanceMCP server for SrezAI providing web search, page reading, screenshots, and schema-based extraction as native agent tools.84 npmMIT- FlicenseNot gradedqualityCmaintenanceMCP server that enables AI agents to search the web and extract clean Markdown content, with support for JavaScript rendering, structured data extraction, and screenshots.1-