Skip to main content
Glama
qianwj

Dianping MCP Server

by qianwj

Dianping MCP Server

This is an MCP server that searches Dianping content through a local browser login session. Both the desktop and mobile search endpoints of Dianping trigger login/security verification for anonymous requests, so this project does not use unauthorized interfaces, nor does it attempt to bypass CAPTCHAs or anti-scraping mechanisms; the service uses Playwright to drive the local Chrome browser and reuses an independent persistent profile.

Quick Start

Requires Node.js 20+ and Chrome, Edge, or Chromium installed:

npm install
npm run login

The login command will open the browser. Please complete the Dianping login and security verification, then return to the terminal and press Ctrl+C to exit. The login data is saved by default to ~/.dianping-mcp/browser-profile. After that, start the MCP server:

npm run build
npm start

The MCP client connects via stdio and provides three tools:

  • search_places: Search for merchants by city, keyword, and page number, returning name, rating, review count, average spending, address, and shop URL.

  • get_place_details: Get shop details and featured reviews by shop ID or the URL from search results.

  • check_session: Check if the browser is available, and whether login or security verification is needed.

Related MCP server: MGC_MCP

MCP Client Configuration

Configure the following command in a client that supports stdio MCP, replacing the path with the absolute path of the repository:

{
  "mcpServers": {
    "dianping": {
      "command": "npm",
      "args": ["--prefix", "/绝对路径/dp-mcp", "start"],
      "env": {
        "DP_CITY": "上海"
      }
    }
  }
}

Alternatively, you can directly use the built dist/index.js:

{
  "command": "node",
  "args": ["/绝对路径/dp-mcp/dist/index.js"],
  "env": { "DP_CITY": "上海" }
}

Configuration Options

Variable

Default

Description

DP_PROFILE_DIR

~/.dianping-mcp/browser-profile

Browser login profile directory

DP_BROWSER_EXECUTABLE_PATH

Auto-detected

Chrome/Edge/Chromium executable path

DP_CITY

Shanghai

Default city when search_places is not passed a city

DP_HEADLESS

true

Whether MCP search runs headless; for login please use npm run login

DP_MIN_INTERVAL_MS

1500

Minimum interval between two page requests

DP_CACHE_TTL_MS

300000

In-memory cache TTL for search and details

DP_NAVIGATION_TIMEOUT_MS

25000

Page navigation and selector timeout

Currently built-in common cities include Shanghai, Beijing, Hangzhou, Guangzhou, Nanjing, Suzhou, Shenzhen, Chengdu, Chongqing, Tianjin, Ningbo, Yangzhou, Wuxi, Fuzhou, Xiamen, Wuhan, Xi'an, Shenyang, Dalian, Changsha, Qingdao, and Jinan; other cities can be passed via Dianping city ID.

Development and Verification

npm test
npm run check
npm run build

When page structure or security policies change, the service will return clear parsing/verification errors. Please reduce call frequency and comply with Dianping's Terms of Service, robots rules, and applicable laws.

Available Tools

3 tools
check_session检查大众点评会话A
Read-only

检查本地浏览器、登录状态及是否需要完成安全验证。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/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, covering the safety profile and external dependency. The description adds no further behavioral details (e.g., what happens if the session is invalid, whether it modifies state). It is consistent with annotations but does not enhance transparency beyond what annotations provide.

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, well-front-loaded sentence that conveys the tool's purpose without redundancy. Every word is necessary; no filler or repetition.

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

Completeness5/5

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

For a simple zero-parameter tool, the description fully covers what the tool does: checking local browser, login status, and security verification. There is no output schema or nested complexity, and the annotations already provide safety and openness context. The description, combined with annotations, is complete for agent invocation.

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?

The input schema is empty (0 parameters), so schema description coverage is effectively 100%. Per guidelines, 0 parameters earns a baseline of 4. The description does not need to explain parameters, as none exist.

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 uses specific verbs and resources ('检查本地浏览器、登录状态及是否需要完成安全验证'), clearly indicating the tool checks the session state. It distinguishes itself from sibling tools like search_places and get_place_details, which focus on data retrieval rather than session verification.

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?

The description lacks any guidance on when to use this tool versus alternatives. It does not mention which scenarios require session checking, nor does it explain when to skip it. Sibling tools exist but no differentiation or usage context is provided.

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

get_place_details读取大众点评店铺详情A
Read-only

根据搜索结果中的店铺 ID 或 URL 读取地址、电话、营业时间、评分及精选评论。

ParametersJSON Schema
NameRequiredDescriptionDefault
shopYes大众点评店铺 ID 或 /shop/ 店铺 URL
reviewLimitNo最多返回的评论数

TDQS

A4.2/5.0
Behavior4/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 value by specifying exactly what data is returned (address, phone, hours, rating, selected reviews), which is beyond the annotation scope. No contradictions.

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 sentence that is concise and front-loaded. Every word contributes to the purpose, with no extraneous information.

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 read tool with two parameters and no output schema, the description covers the core functionality and return data. It could mention the output format (e.g., JSON object) but is otherwise complete for the given complexity.

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 baseline is 3. The description adds context that the 'shop' parameter should come from search results, which is a meaningful addition. However, the 'reviewLimit' parameter is not mentioned in the description, and the added value for 'shop' is modest, so a 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 reads store details (address, phone, hours, rating, selected reviews) using a shop ID or URL from search results. It uses a specific verb ('读取' - read) and resource ('店铺详情' - store details), and implicitly distinguishes from sibling 'search_places' (search for places) and 'check_session' (session check).

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

Usage Guidelines4/5

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

The description gives context by specifying that the shop ID/URL should come from search results ('根据搜索结果中的...'), which guides when to use the tool. However, it does not explicitly state when not to use it or name alternatives, though the sibling tools are naturally different.

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

search_places搜索大众点评商户A
Read-only

按城市和关键词搜索大众点评上的餐厅、景点、酒店或其他本地商户。

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNo城市中文名、拼音或大众点评城市 ID上海
pageNo结果页码
limitNo最多返回的商户数
keywordYes搜索词,例如:静安寺 火锅

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true and openWorldHint=true. The description restates the search behavior but adds no new context about rate limits, pagination, response format, or other traits. No contradiction 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?

The description is a single short sentence that directly states purpose. It is front-loaded and efficient with no wasted words. Could be slightly expanded with usage context without harming conciseness.

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 simple search tool with fully described parameters and informative annotations, the description covers the basic purpose. However, it lacks guidance on when to use this tool versus siblings and does not reinforce the open-world behavior implied by the annotation.

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 baseline is 3. The description only mentions city and keyword, which mirrors the schema. It adds no additional meaning or constraints beyond what is already in the input schema.

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 specifies the verb (search), resource (local businesses on Dianping), and constraints (by city and keyword). It effectively distinguishes from sibling tools: get_place_details (details of a specific place) and check_session (auth).

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 context (searching with city and keyword) but does not explicitly state when to use vs. alternatives or when not to use. No exclusions or alternatives are mentioned.

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 updatesv0.1.0
    • First observedcheck_session
    • First observedget_place_details
    • First observedsearch_places

TDQS

A4/5.0
Disambiguation5/5

The three tools have clearly distinct purposes: searching for places, retrieving detailed info about a specific place, and checking session/authentication status. No overlap or ambiguity between them.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (search_places, get_place_details, check_session), making the naming predictable and easy to understand.

Tool Count4/5

With 3 tools, the server is concise but covers the core functionality of searching and retrieving details for a local services platform. The inclusion of a session-check tool is practical, and the count feels appropriate for the scope.

Completeness4/5

The tool surface covers the essential read operations—search and detail retrieval—along with session verification. For a read-oriented API, this is reasonably complete. Minor gaps like listing categories or handling pagination could exist but are not critical.

Maintenance

ActivityMaintained
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/qianwj/dp-mcp'

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