Skip to main content
Glama

patents-mcp

Go Version License: MIT tushariitr-19/patents-mcp MCP server

An MCP (Model Context Protocol) server for patent search and prior art discovery, powered by the Google Patents public dataset on BigQuery.

Built with the official Go MCP SDK.

Why patents-mcp?

Existing patent MCP servers are either paid, single-source, or unmaintained. patents-mcp is:

  • Free — built on Google Patents public dataset (1TB/month free on BigQuery)

  • Open source — MIT licensed

  • Production grade — structured logging, graceful shutdown, clean architecture

  • Extensible — each tool is self-contained, easy to add new tools

Related MCP server: mcp-patent

Available Tools

Tool

Description

search_patents

Search patents by keyword, technology area, or inventor name

get_patent

Fetch full patent details by publication number

get_patent_claims

Fetch patent claims text

Prerequisites

  • Go 1.21+

  • A Google Cloud account (free)

  • BigQuery API enabled on your GCP project

Setup

1. Google Cloud Setup

  1. Create a GCP project at console.cloud.google.com

  2. Enable the BigQuery API

  3. Create a service account with the following roles:

    • BigQuery Job User

    • BigQuery Data Viewer

  4. Download the service account JSON key

2. Install

git clone https://github.com/tushariitr-19/patents-mcp
cd patents-mcp
go build -o patents-mcp-server ./cmd/server/

3. Configure

export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account.json"
export GCP_PROJECT_ID="your-gcp-project-id"

# Optional: enable debug logging
export DEBUG=true

Usage with Claude Desktop

Add to your Claude Desktop config (claude_desktop_config.json):

{
  "mcpServers": {
    "patents-mcp": {
      "command": "/path/to/patents-mcp-server",
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "/path/to/service-account.json",
        "GCP_PROJECT_ID": "your-gcp-project-id"
      }
    }
  }
}

Screenshots

Available Tools

Available Tools

Example Prompts

Once connected to Claude Desktop:

  • "Search for patents related to transformer neural networks"

  • "Find prior art for context-aware UI element hiding"

  • "What patents has Google filed related to quantum computing?"

  • "Find patents by inventor Yann LeCun"

Architecture

patents-mcp/
├── cmd/server/main.go       ← entry point, env vars, graceful shutdown
├── server/server.go         ← MCP server setup, tool registration
├── tools/
│   └── search.go            ← search_patents tool (self-contained)
├── bigquery/
│   └── client.go            ← BigQuery query execution
├── logger/
│   └── logger.go            ← structured logging via zap
└── models/
    └── patent.go            ← shared Patent struct

Each tool owns its own dependencies — the server is agnostic of what tools do internally. Adding a new tool is a single line in server/server.go.

Contributing

PRs welcome. To add a new tool:

  1. Create tools/<toolname>.go

  2. Define your input struct and tool definition

  3. Register it in server/server.go with one line

License

MIT

Available Tools

3 tools
get_patentB

Fetch full details of a patent by its publication number

ParametersJSON Schema
NameRequiredDescriptionDefault
publication_numberYesthe patent publication number, e.g. US-7650331-B1

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It describes the action as 'Fetch full details', but does not specify what 'full details' entails, any required authorization, rate limits, or side effects. This is insufficient for a tool with no annotation support.

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 unnecessary words. It is front-loaded and efficient.

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

Completeness2/5

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

Although the tool has a simple interface (one parameter), it lacks an output schema and annotations. The description does not clarify what 'full details' includes, nor does it mention any constraints or context (e.g., data freshness, pagination). This leaves the agent with insufficient information.

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?

The input schema has 100% description coverage for the single parameter, so the schema already provides the meaning. The description adds no extra semantic value beyond confirming the purpose. Baseline 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 'Fetch full details of a patent by its publication number', specifying a specific verb ('Fetch'), resource ('patent'), and method ('by its publication number'). It effectively distinguishes from siblings like get_patent_claims and search_patents.

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 when you have a publication number, but it offers no explicit guidance on when to use this tool versus alternatives (e.g., get_patent_claims or search_patents). No exclusions or prerequisites are mentioned.

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

get_patent_claimsA

Fetch the full claims text of a US patent by publication number. Claims are the legal scope of the patent.

ParametersJSON Schema
NameRequiredDescriptionDefault
publication_numberYesthe patent publication number, e.g. US-7650331-B1

TDQS

A3.8/5.0
Behavior3/5

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

Describes the action as a fetch, which implies read-only, but no annotations are provided. Does not disclose error handling, rate limits, or what happens if the patent does not exist.

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 concise sentences, front-loaded with the action and resource, followed by a clarifying statement. No unnecessary words.

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 tool with one parameter and no output schema, the description is largely sufficient. Could mention that the output is the text of the claims, but it is implied.

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 restates the parameter usage. The additional sentence about legal scope provides context for the output but not for the parameter itself.

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 fetches the full claims text of a US patent by publication number, with an explanation of what claims are. This differentiates from sibling tools get_patent (likely full patent) and search_patents (searching).

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?

Implicitly conveys usage via context (claims vs patent details vs search) but lacks explicit when-to-use or when-not-to-use guidance. No alternative tool names mentioned.

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

search_patentsB

Search patents by keyword, inventor, or technology area using Google Patents public dataset

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesthe keyword, technology area, or inventor name to search for
limitNomax results to return, default 10, max 50

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only mentions the data source but omits details about latency, rate limits, result format, 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.

Conciseness4/5

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

The description is a single, concise sentence (14 words) with no waste. While efficient, it lacks structural elements such as sections or bullet points that could improve readability for an AI agent.

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?

Given the simplicity of the tool (2 parameters, no output schema, no annotations), the description provides the essential purpose and data source. However, it lacks information about result format, pagination, or potential empty results, which would aid completeness.

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 description coverage is 100%, so the schema already documents both parameters. The description adds minimal value by paraphrasing the query parameter as 'keyword, inventor, or technology area' but does not provide additional semantic meaning.

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 searches patents by keyword, inventor, or technology area using Google Patents public dataset, with a specific verb and resource that distinguishes it from sibling tools get_patent and get_patent_claims.

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 searching patents via keywords, inventors, or technology areas but provides no explicit guidance on when to use this versus siblings or when not to use it.

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. Dates show when Glama detected each change.

  1. 3 tool updatesv1.0.0
    • First observedget_patent
    • First observedget_patent_claims
    • First observedsearch_patents

TDQS

A3.8/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: fetching full patent details, fetching claims text, and searching patents. No overlap or ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (get_patent, get_patent_claims, search_patents) with lowercase underscores.

Tool Count4/5

Three tools is appropriate for a focused patents server; not overly sparse but could benefit from one or two more specialized tools.

Completeness4/5

Covers search, full details, and claims. Missing citation or family lookups, but core patent retrieval is well-covered.

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

  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server for USPTO patent prior-art search, enabling keyword search, ranking, and date filtering via Claude, Cursor, or Windsurf.
    -
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for the AI Patent Search Generator — 11 tools for patent intelligence: dossier (claims, citations, family, classifications, examiner stats), prosecution (USPTO file wrappers), oa_analyze (AI Office Action analysis), search/query (Google Patents multi-strategy), similar, citations, family, examiner, cpc, balance. Install: npx -y patent-search-mcp-server
    11
    55
    2
    MIT

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/tushariitr-19/patents-mcp'

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