Skip to main content
Glama
Miko-Protocol

MIKO MCP Server

MIKO

@projectmiko/mcp-server

npm version license: MIT node

MIKO exposed as a Model Context Protocol server. Any MCP-aware client (Claude Desktop, Claude Code, Cursor, OpenAI Agents, Gemini, or a custom runtime) can call MIKO's capabilities as tools. Each tool forwards to the MIKO REST API, which enforces auth, tier, and quota.

Two transports, one package:

  • stdio (default) — the client runs the server locally via npx.

  • Streamable HTTP — a hosted endpoint (https://mcp.mikoprotocol.com/mcp) for clients that connect over the network.

Quick start

npx -y @projectmiko/mcp-server

Or point your client at the hosted endpoint — no install at all:

https://mcp.mikoprotocol.com/mcp

Both need a wallet-signed JWT (see Auth).

Related MCP server: x402 On-Chain Data MCP Server

Tools

Tool

REST endpoint

Min tier

miko.factcheck

POST /v1/factcheck

Pro

miko.persona

POST /v1/persona

Pro

miko.narrative

POST /v1/narrative

Pro

miko.watchlist

GET /v1/watchlist

Pro

miko.insights

POST /v1/insights

Holder

miko.narratives_trending

GET /v1/narratives/trending

Holder

Tiers are set by the wallet's $MIKO holdings: Holder (≥ $100), Pro (≥ $1,000), Whale (≥ $2,000). A tool admits its listed tier and above; below it the call returns 403 tier_insufficient. Higher tiers also get larger daily quotas.

Each tool result carries _meta with the call's tier, quota_remaining, cache_status, and cache_age (from the REST response headers).

miko.narrative takes the token by address:

{ "token_address": "<token address>" }

The former mint_address argument remains accepted as a deprecated alias. Do not provide both names with different values.

Auth

Every call needs a wallet-signed JWT. Obtain one either from the dashboard (https://api.mikoprotocol.com/dashboard — connect, sign, copy the token) or via the REST auth flow:

  1. POST /auth/nonce with { "wallet": "<wallet address>" }{ nonce }.

  2. Sign the nonce with the EVM wallet holding your $MIKO on Robinhood Chain — a standard EIP-191 personal signature (MetaMask's personal_sign).

  3. POST /auth/verify with { wallet, signature, nonce }{ jwt, tier, expires_at, quota }.

The JWT is valid ~24h. Supply it to the server as described below.

Client config

stdio (local, via npx)

{
  "mcpServers": {
    "miko": {
      "command": "npx",
      "args": ["-y", "@projectmiko/mcp-server"],
      "env": { "MIKO_JWT": "<your_wallet_jwt>" }
    }
  }
}

Claude Desktop config path: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS), %APPDATA%\Claude\claude_desktop_config.json (Windows).

Streamable HTTP (hosted)

{
  "mcpServers": {
    "miko": {
      "type": "http",
      "url": "https://mcp.mikoprotocol.com/mcp",
      "headers": { "Authorization": "Bearer <your_wallet_jwt>" }
    }
  }
}

Environment variables

Var

Default

Purpose

MIKO_JWT

wallet-signed JWT (stdio; for HTTP it comes from the request header)

MIKO_API_BASE

https://api.mikoprotocol.com

REST API base URL

MIKO_API_TIMEOUT_MS

60000

upstream request timeout

MIKO_MCP_HTTP

set 1 (or pass --http) to run the Streamable HTTP transport

MIKO_MCP_HTTP_HOST

127.0.0.1

HTTP bind host

MIKO_MCP_HTTP_PORT

8091

HTTP bind port

MIKO_MCP_ALLOWED_ORIGINS

comma-separated Origin allowlist (browser callers)

Develop / run

npm install
npm run check          # syntax check
npm test               # smoke tests (no network)

MIKO_JWT=<jwt> node src/index.js          # stdio
node src/index.js --http                   # Streamable HTTP on 127.0.0.1:8091

Self-hosting the HTTP endpoint

deploy/miko-mcp.service.example (systemd) runs the HTTP transport bound to localhost; deploy/nginx-mcp.conf.example terminates TLS and reverse-proxies /mcp, forwarding the Authorization header and disabling buffering for SSE. Point MIKO_API_BASE at your REST API endpoint.

MIKO Protocol

Website · Docs · Insight Dashboard · REST API reference · Open model — Hugging Face · Ollama · X

Available Tools

6 tools
miko.factcheckMIKO Fact-checkA
Read-only

Verify a factual claim through MIKO's multi-provider fact-check.

ParametersJSON Schema
NameRequiredDescriptionDefault
claimYesThe claim to verify

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds 'multi-provider' context but does not disclose other behaviors like response format, sources used, or any constraints. With annotations present, the description provides minimal added value.

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 concise sentence with no wasted words, effectively conveying the core 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?

For a tool with one required parameter and no output schema, the description is minimally adequate. However, it lacks information about the response structure or possible return values, which would help an agent understand the output. Given the simplicity, this is a noticeable gap.

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

Parameters3/5

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

Schema coverage is 100% with one parameter 'claim' described as 'The claim to verify'. The description does not add any meaning beyond what the schema provides, so baseline score of 3 is appropriate.

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's purpose: 'Verify a factual claim through MIKO's multi-provider fact-check.' This uses a specific verb ('verify') and resource ('claim'), and the tool name includes 'factcheck', distinguishing it from siblings like miko.persona or miko.narrative.

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 verifying claims but provides no explicit guidance on when to use this tool versus alternatives, nor does it mention any limitations or prerequisites. Usage is inferred from the purpose.

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

miko.insightsMIKO InsightsB
Read-only

Get MIKO's insights on a token symbol, token address, or narrative topic.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesToken symbol, token address, or narrative topic

TDQS

B3.4/5.0
Behavior3/5

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

The 'readOnlyHint' and 'openWorldHint' annotations are already present; the description adds context that insights are domain-specific but lacks details on behavior (e.g., data source, freshness, or output format). No contradictions with annotations.

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

Conciseness4/5

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

Single sentence, front-loaded with core purpose. Efficient, but could be slightly improved by adding more specificity without extra length.

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?

With only one parameter and no output schema, the description is minimally adequate but does not explain what the insight output looks like, leaving the agent uncertain about the result format.

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

Parameters3/5

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

Schema coverage is 100%, and the description repeats the schema's parameter description ('token symbol, token address, or narrative topic') without adding new semantic meaning. Baseline of 3 is appropriate.

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 gets 'MIKO's insights' on a token symbol, address, or narrative topic. The verb and resource are specific, but the term 'insights' is broad and does not strongly differentiate from siblings like miko.narrative, which may also provide topic insights.

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 the tool should be used for insights on specific tokens or narratives, but it does not provide explicit guidance on when to use it versus alternatives like miko.factcheck or miko.narrative, nor any exclusion criteria.

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

miko.narrativeMIKO Token NarrativeA
Read-only

Get MIKO's narrative read of a token address: what the token is doing on-chain right now, as a one-paragraph interpretation plus concrete observations. Use token_address; mint_address remains a deprecated compatibility alias.

ParametersJSON Schema
NameRequiredDescriptionDefault
mint_addressNoDeprecated alias for token_address
token_addressNoToken address

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and openWorldHint. Description adds that output is a narrative plus observations, but no further behavioral traits (e.g., data freshness, rate limits, or side effects) beyond what annotations cover.

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 sentences with no wasted words. Purpose and parameter guidance front-loaded. Every sentence earns its place.

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?

Given no output schema, description adequately explains return format. Lacks error handling or edge-case info, but for a read-only tool with good annotations, this is sufficient.

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 coverage is 100%, so baseline is 3. Description adds value by marking mint_address as a deprecated alias and recommending token_address, which goes beyond 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?

Description clearly states the tool gets a narrative read of a token address with output format (one-paragraph interpretation plus observations). Distinguishes from siblings by its unique function, but does not explicitly contrast with miko.insights or miko.persona, leaving some ambiguity.

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?

Provides clear guidance to use token_address over deprecated mint_address. However, lacks explicit when-to-use versus alternatives like miko.insights, and no when-not-to-use context.

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

miko.personaMIKO PersonaA
Read-only

Generate a short response in Miko's voice. Pass the content to react to or the topic to write about; the persona is built into the model. The call blocks until the text is ready; the first call after idle can take several minutes while the model starts.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesWhat Miko should respond to or write about

TDQS

A3.6/5.0
Behavior4/5

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

The description adds important behavioral details beyond annotations: the call blocks until ready and the first call after idle can take minutes. This complements the readOnlyHint and openWorldHint annotations without contradiction.

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 sentences, front-loaded with purpose, followed by essential behavioral context. No unnecessary words or redundancy.

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?

Given a single parameter with full schema coverage and no output schema, the description covers purpose, input, and blocking behavior. It does not specify output format or error conditions, but is adequate for the tool's simplicity.

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

Parameters3/5

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

Schema coverage is 100% with a clear description for the only parameter. The tool description restates the same concept, adding no new semantic meaning beyond the 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 it generates a short response in Miko's voice, specifying the verb and resource. It does not explicitly differentiate from sibling tools, but the unique persona focus is implied.

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 miko.narrative or miko.insights. The description only says to pass content to react to or write about, lacking exclusion criteria.

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

miko.watchlistMIKO WatchlistA
Read-only

Tokens currently on the watchlist, each with a plain-language summary.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint. The description adds that each token has a plain-language summary, which is useful behavioral context beyond the annotations.

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?

A single, clear sentence with no wasted words. It is front-loaded and efficiently communicates the tool's function.

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?

Given the simple nature (no parameters, no output schema), the description adequately covers what the tool returns. It could mention if the list is sorted or paginated, but it is sufficient for most use cases.

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, and schema coverage is 100%. The description adds no parameter info, which is acceptable per the baseline of 4 for zero-parameter tools.

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 it retrieves tokens on the watchlist with plain-language summaries. It distinguishes well from sibling tools like factcheck, persona, and insights, which have different purposes.

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 checking the current watchlist but gives no explicit guidance on when to use it versus siblings or any prerequisites. Context signals show no parameters, but usage could be clearer.

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.

  1. 6 tool updatesv0.2.2
    • First observedmiko.factcheck
    • First observedmiko.insights
    • First observedmiko.narrative
    • First observedmiko.narratives_trending
    • First observedmiko.persona
    • First observedmiko.watchlist

TDQS

A4/5.0

Scored across 6 tools

Disambiguation5/5

Each tool serves a distinct purpose: fact-checking claims, generating persona responses, reading token narratives, providing insights, listing trending narratives, and managing watchlists. No functional overlap.

Naming Consistency5/5

All tool names follow the consistent pattern 'miko.<action_noun>', using lowercase with a period separator, which is predictable and easy to understand.

Tool Count5/5

With 6 tools, the server is well-scoped for a specialized crypto analysis agent. Each tool contributes meaningfully to the domain without being excessive or insufficient.

Completeness4/5

Core operations for token analysis (narrative, insights, trending, watchlist) and fact-checking are covered. Minor gaps include lack of watchlist management (add/remove) and detailed token metrics, but these are not essential for the intended use.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers