Skip to main content
Glama
monsunic

Nusawave MCP Server

Official
by monsunic

Nusawave MCP Server

MCP tools to read local git repos and fetch public web pages — no SerpAPI or Firecrawl required.

One shared server.py runs as multiple MCP servers (one process per repo), configured via environment variables or JSON config files.

Tools

Tool

What it does

get_repo_overview

README + key root files when present

list_docs

List markdown files under docs/

read_repo_file

Read any file inside the configured repo

fetch_public_page

HTTP fetch any public URL → plain text

audit_live_site

Fetch live site sections — only when NUSAWAVE_SITE_URL is set

Related MCP server: Gitingest MCP Server

Quick start

git clone https://github.com/YOUR_ORG/nusawave-mcp.git
cd nusawave-mcp

python3 -m venv .venv
source .venv/bin/activate
pip install -e .

# Test on stdio (Ctrl+C to stop)
NUSAWAVE_REPO_PATH=/path/to/your/repo python server.py

Or with uv:

uv sync
NUSAWAVE_REPO_PATH=/path/to/your/repo uv run server.py

Environment variables

Variable

Default

Purpose

NUSAWAVE_MCP_NAME

nusawave

FastMCP server name (set per config entry)

NUSAWAVE_REPO_PATH

.

Local clone path for this server process

NUSAWAVE_SITE_URL

(unset)

Live site base URL; required for audit_live_site

Example: Nusawave projects

The maintainers run one server entry per repo. Copy the example config and adjust paths:

cp typingmind-mcp-config.example.json typingmind-mcp-config.json
# edit paths in typingmind-mcp-config.json

Server key

Example repo

audit_live_site

nusawave-labs-website

nusawave-labs.github.io

Yes

nusawave-forecast

nusawave-forecast

No

nusawave-extract-point

extract-point

No

nusawave-io

nusawave.io

No

nusawave-brainstormingxclaude

brainstormingxclaude

No

Connect to Claude CLI

From this repo directory:

claude mcp add my-project \
  -e NUSAWAVE_MCP_NAME=my-project \
  -e NUSAWAVE_REPO_PATH=/path/to/your/repo \
  -- /path/to/venv/bin/python /path/to/nusawave-mcp/server.py

claude mcp get my-project

Then run claude and ask it to use your MCP tools, e.g. “Use my-project to get the repo overview.”

Connect to Claude Desktop (Windows + WSL)

If Claude Desktop runs on Windows but the repo lives in WSL, use a UNC path for --directory or invoke WSL explicitly. See examples/claude-desktop-config.json.

Minimal WSL example (merge into %APPDATA%\Claude\claude_desktop_config.json):

{
  "mcpServers": {
    "nusawave-my-project": {
      "command": "wsl",
      "args": [
        "-d", "Ubuntu", "--",
        "/home/USER/apps/mcp/nusawave/.venv/bin/python",
        "/home/USER/apps/mcp/nusawave/server.py"
      ],
      "env": {
        "NUSAWAVE_MCP_NAME": "nusawave-my-project",
        "NUSAWAVE_REPO_PATH": "/home/USER/apps/your-repo"
      }
    }
  }
}

Restart Claude Desktop after editing the config.

Connect to TypingMind

1. Start the MCP connector

./start-connector.sh YOUR_AUTH_TOKEN

Use the same token shown in TypingMind → Settings → MCP. The script prints the exact URL to paste.

Critical: Connector URL must include the port:

URL

Result

http://127.0.0.1:50880

Correct

http://localhost:50880

Correct

http://localhost

Wrong — hits nginx on port 80 → 404 / "Update required"

http://0.0.0.0:50880

Wrong — browsers cannot connect to 0.0.0.0

Verify with:

./verify-connector.sh http://127.0.0.1:50880 YOUR_AUTH_TOKEN

2. TypingMind settings

  1. Settings → Advanced → Model Context Protocol

  2. Delete and re-setup MCP Connector (clears stale URL)

  3. Choose Private MCP Connector (not TypingMind Cloud)

  4. Paste connector URL and auth token from step 1

  5. Wait for green check / Get Started

3. Add local MCP servers

Click Edit Servers and paste your typingmind-mcp-config.json (copy from typingmind-mcp-config.example.json first).

4. Enable plugins

Plugins → enable the servers you need → attach to your character.

"Update required… restart MCP Connector" — TypingMind got 404 on /mcp-connect. Almost always a wrong Connector URL (missing :50880).

WSL note

If TypingMind runs in Windows but this repo is in WSL, run the MCP connector inside WSL. Paths in the config must be valid on the machine where Python runs.

Example prompts

  • "Get the repo overview for my forecast project"

  • "Read docs/index.md and compare with the live site"

  • "Summarize the repository structure"

  • "Fetch https://example.github.io/ and summarize the homepage"

License

MIT — see LICENSE.

Available Tools

5 tools
audit_live_siteB

Fetch the live site homepage and key section pages as plain text.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description is the sole source of behavioral info. It only states the action (fetch) and output format (plain text), but omits authentication, rate limits, or failure behaviors. This is inadequate for a tool that likely accesses external websites.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single clear sentence with no unnecessary words. It efficiently conveys the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although the tool has an output schema (unseen), the description lacks details on what 'key section pages' are and does not clarify the scope of the audit. Given the sibling tools, more context would help an agent decide between them.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so the baseline score is 4 per rubric. The description does not need to add parameter info since the schema is complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches the live site homepage and key section pages as plain text, which is specific. However, it does not differentiate from sibling tool 'fetch_public_page' which might fetch a single page; 'audit_live_site' implies multiple pages but 'key section pages' is vague.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 like 'fetch_public_page' or 'get_repo_overview'. An AI agent would not know the trade-offs or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fetch_public_pageA

Fetch a public web page (no API key). Good for GitHub Pages sites.

Args:
    page_url: Full URL, e.g. https://nusawave-labs.github.io/
    extract_text: If true, strip HTML to readable text (default true)
ParametersJSON Schema
NameRequiredDescriptionDefault
page_urlYes
extract_textNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses 'no API key' (authentication) and the extract_text behavior, but lacks details on error handling, rate limits, or handling of non-GitHub pages. Minimal behavioral info beyond parameter effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise with two sentences plus args list. Purpose is front-loaded with no extraneous words. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Reasonably complete for a simple fetch tool with an output schema present. Covers purpose, parameter semantics, and usage context. Missing explicit error conditions or non-GitHub handling, but adequate overall.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema description coverage, the description adds meaningful parameter explanations: page_url example and extract_text meaning with default. This compensates well for the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Fetch a public web page' and specifies it's good for GitHub Pages, distinguishing it from sibling tools like audit_live_site or read_repo_file. However, it lacks explicit differentiation from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for GitHub Pages sites but provides no when-not-to-use guidance or explicit alternatives among siblings like audit_live_site or get_repo_overview. Usage is inferred but not fully outlined.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_repo_overviewA

Return README and key root files for the configured local repository.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description only states what is returned, not behaviors like read-only nature or caching. Lacks safety context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, concise, no superfluous words. Front-loaded with clear purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a zero-parameter tool with output schema, but could elaborate on what 'key root files' means. Mostly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters in schema; description adds meaning by specifying what is returned (README and key root files). With 0 params, baseline is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it returns README and key root files for the local repository. Distinct from siblings like list_docs and read_repo_file.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implied usage (when needing an overview) but no explicit guidance on when to use vs alternatives like list_docs or read_repo_file.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_docsA

List markdown files under docs/ in the local repo.

Args:
    pattern: Glob relative to docs/ (default: all markdown files).
ParametersJSON Schema
NameRequiredDescriptionDefault
patternNo**/*.md

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It explains the pattern parameter and default glob, but does not disclose whether the operation is read-only, safe, or any side effects. However, for a listing tool, this is minimally adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with minimal yet complete information, front-loaded with the purpose. No redundant sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one parameter and an output schema present, the description is largely complete. It could mention that the glob includes subdirectories, but the default glob implies recursive listing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description adds meaning: 'Glob relative to docs/' clarifies the parameter's role and default behavior beyond the schema's type and default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists markdown files under the docs/ directory in the local repo, distinguishing it from sibling tools like read_repo_file or fetch_public_page.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives or when not to use it. Usage is implied but lacks exclusions or comparative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_repo_fileA

Read a file from the configured local repository.

Args:
    relative_path: Path relative to repo root, e.g. docs/index.md or zensical.toml
    max_chars: Maximum characters to return (default 50000)
ParametersJSON Schema
NameRequiredDescriptionDefault
relative_pathYes
max_charsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and description only states basic read action. Does not disclose error handling, size limits, encoding, or other behavioral traits. For a tool with no annotations, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two-line description plus parameter docs, front-loaded purpose, no redundant words. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the basic action and parameter semantics, but lacks behavioral context (e.g., error on missing file) and usage guidance. Given output schema exists, return value description is not required, but tool still feels incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Description adds meaningful parameter details: provides example path format, notes default for max_chars. Schema description coverage is 0%, so description compensates well.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Read a file from the configured local repository' with a specific verb and resource. Differentiates from sibling tools like audit_live_site and fetch_public_page that deal with web resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for reading local repo files but lacks explicit when-to-use or when-not-to-use guidance. No mention of alternatives or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.9/5.0
Disambiguation5/5

Each tool targets a distinct purpose: live site auditing, generic page fetching, repo overview, doc listing, and file reading. No two tools have overlapping functionality.

Naming Consistency5/5

All tools follow a consistent verb_noun snake_case pattern (audit_live_site, fetch_public_page, get_repo_overview, list_docs, read_repo_file), making them predictable.

Tool Count5/5

With only 5 tools, the server is tightly scoped to auditing and repository access. Each tool is necessary and the count fits the domain well.

Completeness4/5

Core operations for auditing (live site fetch, repo docs, file reading) are covered. Minor gaps exist, such as a dedicated comparison tool, but agents can combine existing tools to achieve similar results.

Maintenance

ActivityStale
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

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/monsunic/mcp-nusawave'

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