Dianping MCP Server
Dianping MCP Server
로컬 브라우저 로그인 세션을 통해 다이앤핑(大众点评) 콘텐츠를 검색하는 MCP 서버입니다. 다이앤핑의 데스크톱 및 모바일 검색은 익명 요청에 대해 로그인/보안 인증을 트리거하므로, 이 프로젝트는 승인되지 않은 인터페이스를 사용하지 않으며 캡차나 안티크롤링 메커니즘을 우회하려 하지 않습니다. 서비스는 Playwright를 사용하여 로컬 Chrome을 구동하고 독립적인 영구 프로필을 재사용합니다.
빠른 시작
Node.js 20+가 필요하며 Chrome, Edge 또는 Chromium이 설치되어 있어야 합니다:
npm install
npm run login로그인 명령은 브라우저를 엽니다. 다이앤핑 로그인 및 보안 인증을 완료한 후 터미널로 돌아와 Ctrl+C를 눌러 종료하세요. 로그인 데이터는 기본적으로 ~/.dianping-mcp/browser-profile에 저장됩니다. 그런 다음 MCP 서버를 시작합니다:
npm run build
npm startMCP 클라이언트는 stdio로 연결되며 세 가지 도구를 제공합니다:
search_places: 도시, 키워드, 페이지 번호로 상점을 검색하여 이름, 평점, 리뷰 수, 1인당 가격, 주소 및 상점 URL을 반환합니다.get_place_details: 상점 ID 또는 검색 결과의 URL을 사용하여 상점 정보 및 추천 리뷰를 가져옵니다.check_session: 브라우저 사용 가능 여부, 로그인 또는 보안 인증 필요 여부를 확인합니다.
Related MCP server: tieba-mcp
MCP 클라이언트 설정
stdio MCP를 지원하는 클라이언트에 다음 명령을 구성하고 경로를 저장소의 절대 경로로 바꾸세요:
{
"mcpServers": {
"dianping": {
"command": "npm",
"args": ["--prefix", "/绝对路径/dp-mcp", "start"],
"env": {
"DP_CITY": "上海"
}
}
}
}또는 빌드된 dist/index.js를 직접 사용할 수도 있습니다:
{
"command": "node",
"args": ["/绝对路径/dp-mcp/dist/index.js"],
"env": { "DP_CITY": "上海" }
}구성 옵션
변수 | 기본값 | 설명 |
|
| 브라우저 로그인 프로필 디렉토리 |
| 자동 탐지 | Chrome/Edge/Chromium 실행 파일 |
|
|
|
|
| MCP 검색 시 헤드리스 실행 여부; 로그인은 |
|
| 두 페이지 요청 사이의 최소 간격 |
|
| 검색 및 상세 정보의 메모리 캐시 시간 |
|
| 페이지 탐색 및 선택자 타임아웃 |
현재 내장된 일반 도시는 상하이, 베이징, 항저우, 광저우, 난징, 쑤저우, 선전, 청두, 충칭, 톈진, 닝보, 양저우, 우시, 푸저우, 샤먼, 우한, 시안, 선양, 다롄, 창사, 칭다오, 지난입니다. 다른 도시는 다이앤핑 도시 ID를 전달할 수 있습니다.
개발 및 검증
npm test
npm run check
npm run build페이지 구조나 보안 정책이 변경되면 서비스는 명확한 구문 분석/인증 오류를 반환합니다. 호출 빈도를 낮추고 다이앤핑의 서비스 약관, robots 규칙 및 관련 법률을 준수하세요.
Available Tools
3 toolscheck_session检查大众点评会话ARead-only
检查本地浏览器、登录状态及是否需要完成安全验证。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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读取大众点评店铺详情ARead-only
根据搜索结果中的店铺 ID 或 URL 读取地址、电话、营业时间、评分及精选评论。
| Name | Required | Description | Default |
|---|---|---|---|
| shop | Yes | 大众点评店铺 ID 或 /shop/ 店铺 URL | |
| reviewLimit | No | 最多返回的评论数 |
TDQS
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.
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.
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.
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.
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.
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搜索大众点评商户ARead-only
按城市和关键词搜索大众点评上的餐厅、景点、酒店或其他本地商户。
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | 城市中文名、拼音或大众点评城市 ID | 上海 |
| page | No | 结果页码 | |
| limit | No | 最多返回的商户数 | |
| keyword | Yes | 搜索词,例如:静安寺 火锅 |
TDQS
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.
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.
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.
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.
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.
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.
3 tool updates
v0.1.0- First observed
check_session - First observed
get_place_details - First observed
search_places
TDQS
Scored across 3 tools
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.
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.
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.
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
Related MCP Connectors
Liepin job search and resume workflows backed by the official Liepin MCP server.
Weibo posts, hot search, comments and profiles to JSON. No login or cookies needed.
Web search, page extraction, visual tools and developer utilities through Baizhi Cloud.
Douyin (抖音, Chinese TikTok) video search, video details, comments, creators and shop products.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables searching Xiaohongshu (小红书) content via dots.ai using a logged-in browser session, exposed as MCP tools.-
- FlicenseNot gradedqualityCmaintenanceEnables reading public Baidu Tieba content through a persistent real-browser session, supporting forum searches, post details, and user public post lists with optional login-state injection.-
- FlicenseNot gradedqualityCmaintenanceEnables local scraping and interaction with Douyin (TikTok China) content, including videos, user data, comments, live streams, and private messages, using personal account cookies without official APIs.1-
- AlicenseAqualityDmaintenanceEnables querying Pinduoduo merchant backend data through a logged-in Chrome session via CDP, including reviews, customer service chat, product analytics, and promotion reports.151MIT